Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Próbáltam már így is, de semmi.
Idézet: „#FUSES NOWDT, NOPUT, NOPROTECT, BROWNOUT, NOLVP, INTRC” Hogy tudnám a belső oszcilátort használni?
Olvastad amit irtam?
A konfigurációs bitek beállítását a kódban végezd, ehhez a Config... ablakban a jelölőnégyzettel a funkciót kapcsold be, ezután vedd ki a megjegyzésből a fuses sort, így működnie kell. A belső oszcillátor bekapcsolására szolgál az INTRC (vagy az INTRC_IO) befinició.
Ha az áramkör "tapogatásra" működik, akkor ott más gond is lehet, ahogy trudnai kolléga írta! 4-es kivezetést (MCLR, ha engedélyezted) 10-20 k-s ellenállással húzd tápra. (Régebben az MPLAB reklamált az MCLR kikapcsolása és a belső oszcillátor együttes használata miatt...)
Bocsánat, a hosszú hozzászólásom végett nem vettem észre
Pótoltam mindent ahogy mondtátok, de így se műkodik, 100nF eddig is volt, most próbáltam egy assembleres kódot az probléma nélkül villogtatja, a mellékelt képen a jelenlegi beállítások. Érdekes hogy MPLABban amikor az assembler kódot fordítottam, ott is be volt pipálva a "Configuration Bits set in code" és amikor lefordította a kódot akkor a Configuration Bits ablakban(annak ellenére, hogy szürke volt) minden szépen átugrott arra ami a kódban be van állítva, de ha CCSCben fordíttom akkor nem ugrik átt(ezt egyébként látni a képen is) ésha kiveszem a pipát a Configuration Bits set in code mellől akkor is lefordítás után mindeg visszaugrik. Nem lehet, hogy ez valami BUG?
hogy én mennyit szívtam ezzel
PUT nagyon fontos, mert elindul a PIC progi mielőtt az oszci berezegne és ez okozza a zavarokat. az INTRC_IO is fontos, mert bezavarja az oszcit a statikus elektromosság. NOMCLR is ajánlott ha nem használod. Szerintem a PUT és az INTRC_IO ami problémás nálad. nálam legalábbis ezek beállítása után szűnt meg ugyanaz a jelenség amit Te tapasztaltál
Nos, köszönöm mindenkinek a segítségét, megtalálltam a hibát ami számomra elég érdekes, nagyon örülnék ha valaki megtudná magyarázni?! Akármit is írtam én a FUSE bitekbe fordítás után mindig az EC lett beállítva. Megnyitottam a *.hex fájlt a PIC simmulator ide nevű programmal ott van olyan opció, hogy configuration bits itt az ECt átálítottam INTOSCra utánna beégettem a mikrokontrollerbe és tökéletesen működik Végre....
MPLAB 8.70et használtam.
Nincs ott nagy varazslas, csak az MPLAB "Configuration Bits" menuben nincs bent a pipa, ahol a kodban allitodik a config.
Ha megnézed a kettővel előző hozzászólásomat és ott a csatolt képet akkor láthatod, hogy volt pipa. De nem pipáltam ki és ott állítottam be, akkor is mindig visszaugrott az ECre.
Ha debuggert is használtál, akkor jogos, hogy bizonyos beállításokat nem enged meg beállítani. Ilyen a PUT és a beslő oscillátor letiltott MCLR kombinációja. Ezeket csak release üzemmódban, debugból kilépve lehet végleges verzióként beprogramozni. Próbáld ki.
Hello
Egy PIC16f676-et szeretnék C-ben programozni, de kifogott rajtam. Hi-tech c-t használok fordítónak
A kódom felordul, beégetem, visszaolvasom hibátlanul, de nem működik. Valaki ránézne, hogy a kódban van e hiba, vagy valami mást rontottam el. Van egy .hex fájlom, ha azt beégetem, és egy LCD kijelzőt kötök a PIC-re, akkor az működik. Ha leveszem az LCD-t és ezt beégetem, akkor a kimenetein nem ad ki semmit. Mit ronthattam el?
Idézet: „Mit ronthattam el?” Először is azt, hogy ide írtál, ez a CCS C fordító témája... Aztán az "__CONFIG(0794);" így értelmezhetetlen, pontosabban nem sokan fogják venni a fáradságot, hogy kibogarásszák mit is jelenthet, lehet, hogy épp ott van a hiba. Ha a htc.h-t (vagy a pic.h-t ill. pic18.h-t) includoltad az adott pic headerét nem kell betölteni. A fordítás beállításairól nem adtál meg semmit, így azt sem tudjuk számításba venni...
Elnézést, a topicot tényleg eltévesztettem. Ezzel a fordítóval is próbálkoztam, és ugyanúgy semmi eredmény.
A config biteket azért így írtam, mert máshogy nem fogadta el a fordító, hibát dobott. Most 0192 : INTOSC_IO wdtdisable, pwrtdisable, boddisable, az mclr i/o-ra van állítva, és a kódvédelmeket is kikapcsoltam. A fordítási beállításoknál mit lehet elrontani? Az nem csak a kódot optimalizálja?
Idézet: „A fordítási beállításoknál mit lehet elrontani?” Például azt, amit sysy közvetlenül az első hozzászólásod előtt írt! Olvass vissza - ne csak egy hozzászólást - a problémád szerintem ugyan az, mint Gál Norbié. Azt meg, hogy a config beállítást nem fogadja el csak kód formában, nehezen hiszem. Itt csak az lehet a gond, hogy Te nem a megfelelő formátumban adod meg. Meg kell nézni az adott pic header fájlában hogy vannak a konfig bitek definiálva, erre is figyelmmel.
Köszönöm a segítséget. Végigolvastam a PIC-es topicokat, de nem volt megoldás a problémámra. Gál Norbinak is hasonló baja volt egy másik topicban, de arra sem volt ott a megoldás.
Nem tudom, hogy én állítottam el valamit, vagy az MPLAB szórakozik velem, de megvan a hiba. A kódba hiába írom be a __CONFIG(); sort, arra nem reagál. Bepipáltam a Configuration bits ablakban, hogy a kódban van beállítva, de ezzel nem törődik. Minden fordítás után a Configuration Bits ablakban 00C4 érték jelenik meg. Ezt átírom, aztán égetek, úgy jó. Mindenkinél így működik ez? Miért nem jó, ha a kódban adom meg a fuse biteket?
CCS-nél nem valami ilyesmi formában kell megadni a konfig biteket?
De. mMst HI-TECH C-t használok. Azért ide írtam, mert annak nincs saját topicja. Most már működik, csak az zavar, hogy mindig kézzel állítanom kell a biteket, és nem tudom a kódban megadni. Kipróbáltam CCS fordítóval is, #fuses... beállítással, de ugyanez a helyzet. Minden égetés előtt be be kell állítanom a fuse biteket. Van erre valami beállítás MPLAB-ban? Vagy törődjek bele?
Legújabb MPLAB? Elvileg csak az a pipadoboz kell, amit említettél.
Sajnos a pipára nem reagál.
VIszont mikor csatlakoztetom a picet, ezt írja ki: ""Target Detected Device ID Revision = 00000000 The target has invalid calibration data (0)." Ezt miért csinálja?
A forditasi opcio "Release" modban van, vagy "Debug" modban?
Egy-két képernyőképpel többre lehetne menni a hiba felderítésében, de nem mutattál semmit...
Úgy a jó, ha a forrásban állítod be a konfig biteket. Idézet: „A kódba hiába írom be a __CONFIG(); sort, arra nem reagál.” Az üres konfigra hibaüzenet kell adnia... Idézet: „Gál Norbinak is hasonló baja volt egy másik topicban, de arra sem volt ott a megoldás.” Melyik topikra gondolsz? Pontosítsd, mert az előzőekben írtam (hivatkoztam) 9.80-9.81 verzióváltás problémájára. Egyébként a te kódod a kívánt konfig beállításokkal simán lefordul...
Köszönöm szépen!
A __CONFIG eddig sem volt üres, 0194-et írtam bele, ez volt a Configuration Bits ablakban. Ami az én hibám volt, hogy 0x0194-et kellett volna írnom, nem vettem figyelembe, hogy ez hexadecimális érték. Még egyszer köszönöm, hogy segítettetek.
Na jó, látom, hogy nem akarsz elszakadni a konfig kódértékkel történő beállításától ,
bár ezt már az MPASM-ben sem kell így csinálni...
Ja, most már a headerben talált értékeket írtam be, úgy, ahogy kell. Csak gondoltam, leírom,hogy mit rontottam el, hátha segít majd valakinek.
Sziasztok,
ilyesmit lehet csinalni : if(((bela==8)&&(emil==0))||((bela==10)&&(emil==3))||((....stb. tehat, bela-nak es emil-nek adjak igy vagy 10 kulonbozo erteket ?
Írd le pontosan, hogy mit szeretnél ezzel elérni? Ha sok ilyet kell csinálni, akkor nekem az jut eszembe, hogy csinálni egy tömböt, aminél pl. bela az indexet képviseli, emil meg az értéket, és ha a tömbből bela-val kivett érték egyezik emil-lel, akkor belép a feltételbe. Valami ilyesmi:
Most ez így szintaktikailag nem biztos, hogy jó, de a lényege remélem érthető.
adott idopontokban beindul 1motor,tehat ha(if) ora==10$$perc==25, vagy ora==21&&perc==11..stb.akor ugyanaz a valami beindul ; ez 1 ora programba jon beiktatva es amikor az ora eleri ezeket a beallitasokat akkor beindul valami : if ( x||y||d||k...||m)
{ bekapcsol }
Sziasztok!
Írtam egy programot, ami egy 24lc16 típusú EEPROM-ba mentené óránként az aktuális hőmérséklet adatokat. Sajnos egyáltalán nem működik. Olyan, mintha el sem indulna a program. Arra sem reagál semmit, ha az A5-ös lábára rárakom a jumpert, amivel elvileg törölné az EEPROM-ot. Ha kiveszem a foglalatból az EEPROM-ot, akkor világít a LED, ami a törlés végét jelezné. Az EEPROM bekötése a driver programban meghatározottaknak megfelelő:
A felhúzó ellenállások 4,7KOhm-osak. Elképzelhető, hogy valami fatális hiba van benne, mivel most először foglalkozok EEPROM írásával illetve olvasásával. A programot külföldi fórumokon talált programkódok alapján állítottam össze. Valaki tudna segíteni a hibakeresésben? Előre is köszönöm!
A programodban van ehhez hasonló sor?
#use I2C(Master,sda=PIN_xx1,scl=PIN_xx2,FORCE_SW) Ha nincs, akkor ki mondja meg a fordítónak, hogy mely kivezetések szolgálnak a külső EEPROM meghajtásához?
Eddig nem volt, mivel a driver programban voltak konfig sorok a lábak kiosztásához, azt hittem az elég. Most beletettem ezt is, de sajnos nem jó. Most azonnal világítani kezd az A1-es lábon lévő LED, ami azt jelzi, hogy kész a törlés vagy nem sikerült.
Az ext_eeprom_ready(); függvényre gyanakszom, hogy amiatt esetleg átugorja az if ciklust. Ez a függvény elvileg akkor igaz, amikor készen áll a küldő EEPROM a kódok fogadására. Érdemes lenne ezt kivenni belőle?
Az eepromot milyen címre állítottad be? Ugyanazon keresi az inicializálás?
|
Bejelentkezés
Hirdetés |