Fórum témák

» Több friss téma
Fórum » CCS PIC Compiler
 
Témaindító: (Felhasználó 1542), idő: Ápr 3, 2006
Lapozás: OK   58 / 118
(#) Gál Norbert válasza Gál Norbert hozzászólására (») Jún 15, 2011 /
 
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?
(#) trudnai válasza Gál Norbert hozzászólására (») Jún 15, 2011 /
 
Olvastad amit irtam?
(#) MPi-c válasza Gál Norbert hozzászólására (») Jún 15, 2011 /
 
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...)
(#) Gál Norbert válasza MPi-c hozzászólására (») Jún 15, 2011 /
 
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?

1.png
    
(#) G-Lex válasza Gál Norbert hozzászólására (») Jún 15, 2011 /
 
hogy én mennyit szívtam ezzel

  1. #FUSES NOWDT                    //No Watch Dog Timer
  2. #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
  3. #FUSES PUT                      //Power Up Timer
  4. #FUSES NOPROTECT                //Code not protected from reading
  5. #FUSES NOBROWNOUT               //No brownout reset
  6. #FUSES NOMCLR                   //Master Clear pin enabled
  7. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  8. #FUSES NOCPD                    //No EE protection
  9. #FUSES RESERVED                 //Used to set the reserved FUSE bits


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
(#) Gál Norbert válasza G-Lex hozzászólására (») Jún 16, 2011 /
 
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.
(#) vilmosd válasza Gál Norbert hozzászólására (») Jún 16, 2011 /
 
Nincs ott nagy varazslas, csak az MPLAB "Configuration Bits" menuben nincs bent a pipa, ahol a kodban allitodik a config.
(#) Gál Norbert válasza vilmosd hozzászólására (») Jún 16, 2011 /
 
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.
(#) sysy válasza Gál Norbert hozzászólására (») Jún 16, 2011 /
 
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.
(#) kerteszsasa hozzászólása Jún 17, 2011 /
 
Hello
Egy PIC16f676-et szeretnék C-ben programozni, de kifogott rajtam. Hi-tech c-t használok fordítónak
  1. #include <htc.h>
  2. #include <pic16f676.h>
  3. //__CONFIG(1,0x0F24);
  4. //__CONFIG(2,0X0000);
  5. __CONFIG(0794);
  6. void Wait()
  7. {
  8.    unsigned char i;
  9.    for(i=0;i<100;i++)
  10.       _delay(60000);
  11. }
  12.  
  13.  
  14. void main()
  15. {
  16.    //Initialize PORTC
  17.    //PC as Output
  18.    TRISC=0x00;
  19.  
  20.    //Now loop forever blinking the LED.
  21.    while(1)
  22.    {
  23.       PORTC=0b11111111;  //PORTC = HIGH
  24.  
  25.       Wait();
  26.  
  27.    PORTC=0B00000000;  //PORTC = LOW
  28.       Wait();
  29.    }
  30. }

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?
(#) MPi-c válasza kerteszsasa hozzászólására (») Jún 17, 2011 /
 
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...
(#) kerteszsasa válasza MPi-c hozzászólására (») Jún 17, 2011 /
 
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?
(#) MPi-c válasza kerteszsasa hozzászólására (») Jún 17, 2011 /
 
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.
(#) kerteszsasa válasza MPi-c hozzászólására (») Jún 18, 2011 /
 
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?
(#) potyo válasza kerteszsasa hozzászólására (») Jún 18, 2011 /
 
CCS-nél nem valami ilyesmi formában kell megadni a konfig biteket?
  1. #fuses INTRC,NOWDT,NOPROTECT,MCLR
(#) kerteszsasa válasza potyo hozzászólására (») Jún 18, 2011 /
 
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?
(#) potyo válasza kerteszsasa hozzászólására (») Jún 18, 2011 /
 
Legújabb MPLAB? Elvileg csak az a pipadoboz kell, amit említettél.
(#) kerteszsasa válasza potyo hozzászólására (») Jún 18, 2011 /
 
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?
(#) vilmosd válasza kerteszsasa hozzászólására (») Jún 18, 2011 /
 
A forditasi opcio "Release" modban van, vagy "Debug" modban?
(#) MPi-c válasza kerteszsasa hozzászólására (») Jún 18, 2011 /
 
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...
(#) kerteszsasa válasza MPi-c hozzászólására (») Jún 18, 2011 /
 
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.
(#) MPi-c válasza kerteszsasa hozzászólására (») Jún 18, 2011 /
 
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...
(#) kerteszsasa válasza MPi-c hozzászólására (») Jún 18, 2011 /
 
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.
(#) brugo hozzászólása Júl 1, 2011 /
 
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 ?
(#) potyo válasza brugo hozzászólására (») Júl 1, 2011 /
 
Í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:
  1. unsigned char tomb[]={5,3,6,3,6,3,5,3,0,6,10};
  2. ...
  3. if (tomb[bela]==emil) { csinalok valamit }

Most ez így szintaktikailag nem biztos, hogy jó, de a lényege remélem érthető.
(#) brugo válasza potyo hozzászólására (») Júl 1, 2011 /
 
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
}
(#) hadnagyakos hozzászólása Júl 5, 2011 /
 
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ő:

  1. ////   -----------------------------------------------------------     ////
  2. ////   |                                                         |     ////
  3. ////   | 1: NC   Not Connected | 8: VCC   +5V                    |     ////
  4. ////   |                       |                                 |     ////
  5. ////   | 2: NC   Not Connected | 7: WP    GND                    |     ////
  6. ////   |                       |                                 |     ////
  7. ////   | 3: NC   Not Connected | 6: SCL   EEPROM_SCL and Pull-Up |     ////
  8. ////   |                       |                                 |     ////
  9. ////   | 4: VSS  GND           | 5: SDA   EEPROM_SDA and Pull-Up |     ////
  10. ////   -----------------------------------------------------------     ////


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!
(#) icserny válasza hadnagyakos hozzászólására (») Júl 5, 2011 /
 
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?
(#) hadnagyakos válasza icserny hozzászólására (») Júl 5, 2011 /
 
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?
(#) vicsys válasza hadnagyakos hozzászólására (») Júl 5, 2011 /
 
Az eepromot milyen címre állítottad be? Ugyanazon keresi az inicializálás?
Következő: »»   58 / 118
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem