Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Nezd csak! Talalsz egy par demo panel doksit. Pl a 20 labas jo a 8, 14 es 20 labashoz. Van rajta gomb, led, 7 szegmenses kijelzo, tap, ICSP. Es keves penzbol megcsinalhatod.
Ilyenem van ,csak ilyen PIC em nincs itthon. Megírom a kódot, esetleg megnéznéd utána ,hogy jó e? Elég egyszerű, csak színeket szeretnék kevergetni egy db rgb leddel.
Erre a kis egyszerü progira gondoltam:
Szerintetek működni fog beégetés után?
Ha nincs ilyened otthon (nekem sincs, minek is lenne, ez egy meglehetősen korlátozott tudású PIC), akkor viszont inkább 12F1501-et vennék erre a feladatra. Vagy egy 16F1503-at (az van raktáron a magyarországi disztribútornál).
Azok HW-ből tudnak 4 db PWM kimenetet, csak feltöltöd a regiszterekbe a kívánt értéket, és ennél sokkal precízebben megcsinálja erőfeszítés nélkül.
Két megjegyzés:
A számlálót ne 0-tól 6000-ig használd, hanem fordítva: az elején raksz bele 6000-et, és 0-áig csökkented. Így nullával kell hasonlítani, ami sokkal gyorsabb, mint 6000-rel. Ezen felül nem tudom, hogy kell-e "long" oda, szerintem egy "short" is elég. A másik, hogy a "b" változó meg a "B" változó, az két külön változó. Szóval ez így nem fordulna le, a változókat mindenhol ugyanúgy kell nevezni (kis-nagybetű számít). Ettől eltekintve elsőre működőképesnek tűnik nekem.
Azért választottam ezt a PIC -et, mert ahol én szoktam vásárolni ezt tartják. Köszönöm a helpet. Kijavítottam a nagy B -t. Véletlen került bele, de a fordító valamiért nem jelezte. Meg a számlálót is átírtam.
Még egyszer köszi!
Mindenképpen long (16bit) változó kell, mert csak abba fér bele a 6000. A short csak 1bit!
Nem mondjátok komolyan, hogy a CCS compiler odáig merészkedett, hogy a standard C típusok neveit megváltoztatta????
Ez van a C szabványban: char = a legkisebb, a gép által címezhető terület mérete, ez gyakorlatilag mindenhol pontosan 8 bit short = minimum 16 bit int = minimum 16 bit long = minimum 32 bit és sizeof(short) <= sizeof(int) <= sizeof(long)>>
Reméljük csak a hajnali fáradtság miatt írták el
![]()
Helló mindenki!
Pár hete dolgozok egy órán. Ma végre össze tudtam rakni a hardvert ,de nem működik. ![]() Az MCLR -t kikapcsoltam, ennek megfelelően nincs is sehova kötve. 12Mhz es kvarz adj az órajelet. A kódot csatolom ,mert elég nagy. Én proteusban teszteltem a szoftvert. Ott tökéletesen működik. De valóságban el sem indul. ![]() Remélem valaki tud segíteni. Előre is köszi!
Ha a MCLR nincs bekötve sehová, akkor az a gond.
Kösd rá egy 10K-s ellenállással a VDD-re. Javaslom nézd át a vilmosd által mutatott demo paneleket, ott találsz megoldásokat.
De ki van kapcsolva! Mindig ki szoktam kapcsolni ,meg a belső órajelet szoktam használni. És működnek...
12 Mhz kvarc mellé nem kéne egy:
#fuses HS oszcilátor beállítást elrontod akkod könnyen előfordul hogy nem indul a microcontroller....
Azt nem is tudom mire való.
![]() Mire való?
Arra, hogy elinduljon a 12MHz-es kvarccal az oszcillátor
![]()
Úgy látom te sem sokat használtad ezt a fordítót...
HS = 4 Mhz nagyobb kristályoknál illetve kerámia rezonátoroknálhasználjuk
XT = 4 Mhz vagy annál kissebb .... általában a C fordítóknál is egy lehet hivatkozni CCS C nél tuti ![]() itt egy pic adatlapjából kivágott oscilátor beállítások: 1. EC ? External clock with I/O on OSC2/CLKOUT. 2. LP ? 32 kHz Low-Power Crystal mode. 3. XT ? Medium Gain Crystal or Ceramic Resonator Oscillator mode. 4. HS ? High Gain Crystal or Ceramic Resonator mode. 5. RC ? External Resistor-Capacitor (RC) with FOSC/4 output on OSC2/CLKOUT. 6. RCIO ? External Resistor-Capacitor (RC) with I/ O on OSC2/CLKOUT. 7. INTOSC ? Internal oscillator with FOSC/4 output on OSC2 and I/O on OSC1/CLKIN. 8. INTOSCIO ? Internal oscillator with I/O on OSC1/CLKIN and OSC2/CLKOUT.
Ügyes vagy szuperman!
Már majdnem jó a project, de... Amit capaizee kolléga ajánlott, azt tedd bele a fusesok közé, mert nem fog elindulni az oscillator. XT beállítás kell 4MHz-ig, ez fölött pedig HS (High Speed) ajánlott. Mindenkinek mondom, hogy bátran olvasgassa az alkalmazott PIC leírását, mert abban minden le van írva, amitől működik az eszköz. A trükkösebb részek keretezve, sőt, a gyengébbek kedvéért be is van kicsit árnyékolva, hogy meglássák. Nem nyálaztam át az egész programot, mert bár elég rövid, de nem eléggé struktúrált. A C egyébként is nehezen olvasható szöveg, de a nem kellő odafigyelés és lustaság (persze a jelenlevők mindig kivételek) még kevésbé teszi olvashatóvá. Majd te is meg fogod tapasztalni, hogy ha néhány hét múlva előveszed ezt a programot ismét, mert kitaláltál valami új dolgot bele, akkor nem fogsz már te sem eligazodni benne. Amit viszont láttam (vagy látni véltem) két gondolat erejéig: A halálpontos timer soha nem fog csinálni semmit, mert nincs engedélyezve a megszakítása. Persze, így könnyű halálbiztos progikat írni. Ha viszont engedélyezve lenne, akkor az EEPROM döglik ki a PIC-ből szerencsésebb esetben kevesebb, mint négy hónap alatt, mert ha másodpercenként írsz bele (nem is értettem, hogy miért kell) akkor nagyon hamar eléred az EEPROM maximális írhatóságának a határát és egyszer csak többé nem lehet írni, vagy olvasni azt a címet. A végeredmény szempontjából ugyanaz lesz a hatása. Az adatlap szerint min: 1.000.000 tipikusan: 10.000.000 írást garantálnak az EEPROM-ra. Ha nincs szerencséd, akkor két hét alatt eléri ezt az értéket.
Szoval az eszkozspecifikus C es egyeb forditok nem mindig kovetik az ANSI eloirasokat, inkabb az eszkoz felepitesere, szohosszara vannak kihegyezve. Ez a CCS C mar csak ilyen. Amellett jol hasznalhato, mert jo beepitett funkciojai vannak.
illetve B változatként lehet máshogy is rávenni a froditót hogy beállítsa a HS -t (vilmosd által linkelt manuál alapján):
Én ezt most így nem tudom követni. Valaki leírná a program fejlécét rendesen, mert nem tudom már mit írjak át?
Csak azért nem indul el mert szimplán megadtam ,hogy 120000000 az oszcillátorom? Előre is köszi!
írd át => Fordítsd => égesd => teszteld => mond el az eredményét (kösz működött, nem működött)
Csináltam egy ilyet:
Az történik ,hogy felhúzza magas szintre az adott lába és ott is tartja. Ez mitől lehet? Elindulna a program aztán megfagy? Sikerült megállapítanom ,hogy a delay_ms -nél fagy meg. Ez mitől lehet?
Egyszerűen nem tudom rávenni ,hogy a külső kristállyal csináljon bármit is.
Valakinek van valami ötlete? Köszi!
Mivel programozod fel?
programozó felülírhatja a config biteket mármint nem a hexben lévő használja fel ... (illetve icd, pickit esetén debuggolás sok segítséget jelenthet)
CCS Compillerben írom a progit és azzal fordítom le. Majd PICKIT 2 vel égetem be. Nem tudom erre gondoltál e?
és áramkörben programozod vagy kiveszed programozás PIC-et
lehet érdemes lenne MPLAB-ot belőni CCS fordítóra és debuggolni lépésenként végrehajtani a programot mert pickit 2 lehet is .... |
Bejelentkezés
Hirdetés |