Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   1051 / 1051
(#) ktamas66 válasza don_peter hozzászólására (») Hé, 15:16 /
 
Ne minden tizedikben mérj, hanem mindegyikben, de csak annyit, amennyi belefér (2-3 mérés, ha jól számolom), és ezekből számolj átlagot. Persze felvetődik, hogy milyen tranziensek vannak kapcsoláskor, hogy ne mindig abba mérj bele. Ha figyeled a PWM kitöltését is, változtathatod a mérések számát is, a kitöltés függvényében.
(#) kissi válasza don_peter hozzászólására (») Hé, 17:32 /
 
Nem...ha Te adod ki a PWM-et, akkor tudod, hogy mettől-meddig tart és csak azalatt mérj !
(#) just_the_bek hozzászólása Hé, 18:39 /
 
Üdv mindenkinek!

Egy PIC normál üzemelése közben fellépett hibával kapcsolatban szeretnék némi segítséget kérni.
Egy saját kapcsolásba beépített PIC18F1320 programozásával kapcsolatban lépett fel a hiba.
PICkit3-al programozok, MPLAB X v3.30 IDE-vel. XC8-Compilert használok.

Külső(labor táp), 12V feszültségből egy LM7805C (10µF a bemeneten, 100nF a kimeneten) segítségével 5V feszültséget kötöttem a PIC VDD lábára. A VSS-t pedig a 0 potenciálra kötöttem. Az MCLR lábat összekötöttem 15kOhm-on keresztül az 5V tápfeszültséggel. Mind az 5(VDD,VSS,MCLR,PGD,PGC) lábat rákötöttem a PICkit3 megfelelő pinjeire. Fel is ismerte a kontrollert, rátette a programot többször is. Később köréforrasztottam a még hiányzó áramköri elemeket. A program működését folyamatosan teszteltem közben. A programot breakpointokkal többször meg is állítottam futás közben, hogy a regiszterek tartalmát ellenőrizzem. Program szinten nem volt hiba egyszer sem.

Az RB1, RB0, RA3 lábakra 1-1 LED-et kötöttem, 10kOhm ellenállással, illetve a LEDekkel párhuzamosan IRLZ34N-eket, amik LED szallagokra kapcsolnak 12V-ot. Az egész kapcsolás, illetve program egy futófényt valósított meg. Működött is az egész, a LED-ek sorban fel-majd lekapcsoltak egymás után, ugyanúgy a LED-szalagok.

Aztán akartam változtatni a programon és mikor újra rádugtam a PICkit3-at, a programozás során hibát jelzett.

"Target Device ID (0xfc0) does not match expected Device ID (0x7c0).
Programming...
program memory
Address: 3 Expected Value: ef Received Value: ff
Failed to program device"

Azóta nem tudom a PIC-et programozni. Illetve az RB1-es lábon lévő LED nem villan már fel. A másik 2 lábon a LED-ek és IRLZ-ek zavartalanul üzemelnek.

Van valakinek valamilyen ötlete, hogy mi történhetett a PIC-el? Esetleg tönkrement volna? Miért nem ismeri fel a PICkit3 azt a kontrollert, amit eddig felismert? Ha esetleg kiforrasztanám a PIC-et és egy másik ugyanolyat beforrasztok, megoldhatja a dolgot?

Előre is köszönöm a válaszokat!
A hozzászólás módosítva: Hé, 18:40
(#) nedudgi válasza just_the_bek hozzászólására (») Hé, 18:56 /
 
A programozó lábakat kimenetként használod? A program elején van késleltetés?
(#) sonajkniz válasza don_peter hozzászólására (») Hé, 18:58 /
 
Idézet:
„PWM 10%-os kitöltésnél,”

Idézet:
„4MHz-nél 22 mintát tud venni és átlagban is kicsit feljebb megy, ADC 112 az 1018 helyett.”

Szerintem ez nagyjából pontos. Hiszen az intervallum 10%-ában mérsz 12V-ot, 90%-ában pedig 0-át. Ha a teljes kitöltés 1018, akkor közel reális a 112. Számold át, hogy ez mekkora feszültségnek felel meg, és ellenőrizd egy multiméterrel. Hogy 8MHz-nél miért mér 202-őt azt nem értem. Ott is utóosztás nélkül 1 KHz a PWM jel? Egyébként keveslem a 4MHz/22 mintát.
Készítettem egy egyszerű tesztprogramot, ami bitbillegtetéssel megmutatja, mennyi idő alatt fut le az ADC 4MHz-n. Az eredményt a mellékelt képen láthatod. Tehát még a keretprogrammal együtt sem lehet több 20usecnél. Az pedig 50 mérés ciklusonként. Ez okozhatja a pontatlanságot.
(#) just_the_bek válasza nedudgi hozzászólására (») Hé, 19:02 /
 
A programozó lábak beállításait nem módosítottam, csak a programozó vezetékek vannak rájuk kötve. Csak a LED-ekre csatolt lábakat (RB1, RB0, RA3) konfiguráltam kimenetté.
Nincs késleletetés. A main() azonnal meghívja az init_pic() függvényt. Ami így néz ki:

OSCCON=0b01100110; // internal oscillator on FOSC=4MHZ
INTCON=0x00; //default

PORTA=0x00;
PORTB=0x00;
TRISAbits.RA0=0;
TRISBbits.RB1=0;
TRISBbits.RB0=0;
TRISBbits.RB3=1; //input
TRISAbits.RA3=0;
TRISAbits.RA2=0;

AzRB3-ra egy kapcsoló van kötve lehúzó ellenállással, de az működik is. RA0 meg RA2 még nincs használva, egy potit akartam majd odakötni, de azok nem programozó lábak egyik sem.
A hozzászólás módosítva: Hé, 19:03
(#) ktamas66 válasza sonajkniz hozzászólására (») Hé, 20:37 /
 
Talán azért mér 8MHz-en rosszul, mert a Tad idő nincs helyesen beállítva. Már 4MHz-en is kinn van a specifikációból, ezért a Te mérésed is pontatlan, hiszen a javasolt 2us*11=22us az átalakítási idő. A ciklusban levő 32 bites számítás nem tudni mennyi időt visz el, ezt kellene megmérni.
(#) don_peter válasza ktamas66 hozzászólására (») Hé, 20:53 /
 
Ezt Mplab szimulátorban hogy tudom még érni? Egyelőre nem tudom miképpen kezdjek neki. Előre is köszi.
(#) ktamas66 válasza don_peter hozzászólására (») Hé, 21:23 /
 
Beraksz a programba egy töréspontot (breakpoint), ott meg fog állni a program. A Window>Debugging>Stopwatch mutat egy stoppert, amivel mérheted az időt. A szimulátor órajelét helyesen kell beállítani.
(#) sonajkniz válasza ktamas66 hozzászólására (») Hé, 21:26 /
 
Én PIC18F14K22-vel próbáltam. Adatlap szerint a minimum idő 0,7usec. Tehát a 16 usec konverzió még belül van a határértéken. Persze azt nem kétlem, hogy a don_peter által használt 16-os ennél lassabb. De még úgy is többet kell tudjon 22 mérésnél.
A hozzászólás módosítva: Hé, 21:30
Következő: »»   1051 / 1051
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu