Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Most először szeretném használni a PICkit3-at egy 18F27J53-al, amit belső oszcillátorral szeretnék hajtani, de nem tudom mekkora órajelen van, azt hol kell beállítani? De a legnagyobb baj, hogy ezt írja ki program módban PICkit3-al az OUTPUT ablakban: PICkit 3 detected Connecting to PICkit 3... Running self test... Self test completed Firmware Suite Version...... 01.26.26 Firmware type......................PIC18FJ PICkit 3 Connected. Target Device ID (000000e0) does not match expected Device ID (00005860). Programming... The following memory regions failed to program correctly: Program Memory Address: 00000001 Expected Value: 000000ef Received Value: 000000ff Programming failed és néha még így is megprogramozza, ami érdekes és utána működik is. Debug módban viszont ezt írja ki: Connecting to PICkit 3... Firmware Suite Version...... 01.26.26 Firmware type......................PIC18FJ PICkit 3 Connected. Target Device ID (000000e0) does not match expected Device ID (00005860). MPLAB's memory has changed since the last program operation. Would you like to continue? Running... PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding. és nem is tudok semmit sem kezdeni. A konfigurációs biteket nem a programban adom meg, hanem menüpontból, de azok sem tiszták pontosan hogy mi mire való, sajnos a PIC adatlapjából sem jöttem rá. Elmagyarázná nekem valaki, hogy a következő beállítások mire jók: CFGPLLEN, CPUDIV, SOSCEL, CLKOEC, FCMEN, IESO, DSWDTOSC, IOL1WAY, LS48MHZ Előre is köszönöm segítségeteket.
Az Configure/Select Device... menüben tudod beállítani, hogy milyen PIC-et használsz. (Az az MPLAB gondja hogy a beállított típus nem egyezik a detektált típussal.) A PIC konfigurációját pedig ugyanezen menü Configuration Bits... menüpontjában tudod elvégezni. (Bár ezt te is megtaláltad már...)
Természetesen jó PIC van beállítva. Néha ezek ellenére is beégeti amit írtam és fut is, bár hibásan, ami érthetetlen. Például egy sima led villogtatásnál amikor BSF és BCF parancsokkal kapcsolgatnám a ledeket, akkor az egyik kapcsolt láb működik, a másik nem. De ha egy literális értéket írok az adott portba, akkor meg villog az is ami BSF/BCF-el nem. Ki érti ezt?
Nincs véletlenül valami terhelés egy programozó lábon? A tápot a PICkit adja?
Gondolod, ha minden nap felteszed ugyanazt a kérdést akkor választ kapsz?
Valami nem jó az áramkörödbem ha már a PK3 sem ismeri fel! Vagy a PK3 nem jó. Nem vagyunk látnokok, nem tudjuk milyen áramkört építettél. Idézet: Nagy valószínűséggel áramköri probléma. Lehet szimpla érintkezési vagy forrasztási hiba is... „Target Device ID (000000e0) does not match expected Device ID (00005860).”
Szia!
Ugyan az idézett részt a PICKit2 -höz írtam, de igaz a PICKit3 -ra is: Idézet: „- Ha a programozáshoz használt lábakat kimenetnek vagy Timer1 oszcillátornak stb. használjuk és belső órajellel működtetjük a kontrollert, előfordulhat, hogy nem sikerül a normál módon (Vdd first) a programozás. Két megoldás kínálkozik: - Használjuk a "Vpp first" módszert. A kontrollernek vagy a kártyának a tápfeszültséget ekkor a PICKit2 -nek kell adnia. - A kimenetek vagy az oszcillátor stb. engedélyezése elé tegyünk néhány ms várakozást a program elejére.”
Lehet le fogtok hülyézni, de légyszi magyarázza el nekem valaki hogy hogyan kell leprogramozni egy billentyűzetkezelést megszakitással...
Nem azt kérem hogy valaki megcsinálja csak ha van valakinek ideje magyarázza el légyszi. Szabad portok RB0 RB1 RB2 RB3 / 16F628, 3 gomb kellene. Köszönöm.
Szia!
A feladat az, hogy adott időközönként meg kell vizsgálni, hogy a billentyűk le vannak e nyomva. Ha ezt megszakításban akarjuk lekezelni, akkor ez azt jelenti, hogy egy Timer megszakítást kell készítenünk, ami mondjuk másodpercenként 20...50szer megszakít. Ekkor kell megvizsgálni a gomb állapotokat(BTFSC, If (!gomb). Célszerű ilyenkor jelzőket beálllítani, ha úgy döntünk, hogy a gomb le van nyomva. A döntést akkor hozzuk, ha a gomb nem prellel, azaz mondjuk 5..15(Ezt ki kell tapasztalni, hogy kényelmes és mi az ami elegendő. Egy kis játék az egész.) megszakításig nem detektálunk elengedést. Ezt egy erre fenntartott számlálóval a legegyszerűbb megoldani. A számláló törlődik, ha a gomb közben elengedődik, prellez. Ha megvan a kívánt határozottság, azaz a gomb lenyomása bizonyosságot nyer, akkor beállítunk egy jelzőt, miszerint a gomb le van nyomva. Ezt a jelzést a programban már bárhol és bármikor lekezelhetjük, majd törölhetjük a megszakításon kívül. Ha a lekezelés időpontja kritikus, akkor még a megszakításban tesszük meg ezt. A másik megoldás, hogy ha olyan lábakat választunk, aminek a változása megszakítást okoz( PORTB 7..4 vagy PORTB0). A megoldás hasonló csak oda azért kell Timer, hogy a prellt lekezeljük. Várakozás nem túl jó megoldás egy kis erőforrású rendszerben, ezért jobb a Timer-t erre használni. Bejön a megszakítás a gombtól, ami beállít egy jelzőt és az engedélyezett megszakítású Timer-t elindítja(alap helyzetben a Timer-t le kell állítani), majd kilép a gomb megszakításból. A többi hasonló mint amit korábban leírtam, csak a végén le kell állítani a Timer-t, hogy több megszakítást ne adjon, majd csak a legközelebbi PROTBx megszakításkor.
A tápot a Pk3 adja. 2 db led van a C porton, direkt egy teszt áramkör, mivel először használnám a Pk3-at. A pic meg az adatlap szerint van bekötve. Tehát semmi terhelés nincs a programozólábakra kötve.
Ilyenkor szokott az következni, hogy ha lehet _pontosan_ rajzold le a kapcsolást, amit összedobtál. Sok apró momentum lényeges lehet, de az is lényeges lehet például, hogy a PK3-hoz milyen és milyen hosszú vezetékezéssel csatlakozik a PIC-es áramkör.
A Vdd és a Vss közé amilyen közel csak lehet, kell 100 nF- os kerámia kondenzátor is.
Az MCLR lábon ne legyen kondenzátor, a VDD és VSS lábak között viszont legyen 100 nF!
De az MCLR-ről le ne hagyd az ellenállást ami felhúzza.
Mondjuk nem tudom, hogy PicKit3-nál, hogy működik.
Most akkor az MCLR lábról áttettem azt a 100nF-os kondenzátort a VDD és a VSS lábak közé közvetlen, de nincs változás, ugyan úgy hibát ír ki, de megprogramozza. A kivett kondenzátor helyére tegyek átkötést vagy valamit? Hogyan kell konfigurálni ezt a PIC-et, mert annyi beállítási lehetősége van és nem tudom pontosan mi micsoda. Valaki leírná? Köszönöm az eddigi segítséget és bocsi a fárasztó kérdésekért...
A Vusb-re is tegyél egy 470nF-ot. Az MCLR kondi helyére nem kell semmi természetesen, esetleg 10n, de nem létfontosságú.
Milyen hosszú az ICSP összekötő vezeték és miből van? Töltsd le a legújabb PK3 firmwaret, hátha az a baj! Milyen nyákot terveztél neki?
Vusb-re tettem kondit, de továbbra sem jó. Kb 20 cm-es szalagkábel(ugyanezt használtam eddig Pk2-höz gond nélkül) köti össze a PK3-at a PIC-el ami egy dugaszolós panelon van. A Fw-t hogy kell letölteni, mert nem találom? Amúgy v1.26.26 van rajt.
Első körben lerövidíteném a 20cm-es kábelt, a lehető legrövidebbre, valamint egyelőre kivenném a LED-eket (vagy a soros ellenállásaikat) az áramkörből. A Vdd-Vss közé (a korábban már említett, a PIC-hez minél közelebb szerelt 100nF mellé) még elfér egy pár µF-os elkó is.
Azt kellene elérni, hogy a programozó hibátlanul felismerje, azonosítsa a PIC-et. Amíg ez nincs meg, addig nem megfelelő a kommunikáció a PIC és a programozó között, szerintem nem érdemes tovább lépni és programozni próbálni.
Szerintem is hosszú a kábel.
Sajnos nem volt még PK3-am, most utánanéztem úgy tűnik nincs olyan firmware update-je mint a PK2-nek. Valószínű az MPLAB tartalmazza a szükséges frissítéseket. A legújabb van fenn?
Én kb 1 hete frissítettem (PK3) , nekem az 1.26.33-at rakta fel. Frissíteni az MPLAB alól lehet.
Sziasztok!
A minap elkezdtem foglalkozni egy 12F675-ös kontrollerrel. A problémám az volna, hogy nem tudom a GPIO5-ös lábat I/O funkcióként használni. Pedig a konfigurációs bitek között be van állítva a belső oszcillátor úgy, hogy a GPIO4 és 5 I/O portként viselkedjenek. Valami miatt mégsem működik. Csatoltam az ASM programot. Köszönöm a segítséget Üdv.: Zoli
CLRF ANSEL lesz a nyerő! (Nem '1'-be, hanem nullába kell állítani)
Szia!
A pic rá volt kapcsolva a PICKit3 -ra, amikor az USB csatlakoztatás történt? Volt-e Check communication végrehajtva? Hogyan ismerteted fel a kontrollert. A legrosszabb, amit tehetünk egy nem 5V-os kontrollerrel. Az a 100 ohm - 100nF a MCLR vonalon megakadályozta, hogy a 3.3V-os családnál felismerje a kontrollert, lehet, hogy megkapta az 5V -ot is...
Ez igaz, de a GP5-ön nincs analóg funkció. Én inkább arra gyanakodnék, hogy a kezdeti, gombravárós ciklus tényleg vár-e, nem szalad-e tovább, és nem kapcsolja-e ki valahol azt a GP5-öt. Ezt kizárandó meg kellene próbálni ideiglenesen egy "FOPROGRAM GOTO FOPROGRAM" végtelen ciklussal.
Csak 7 -et ír az ANSEL-be, az AN0 - GP0, AN1 - GP1, AN2 - GP2 analóg, a AN3 - GP3 már digitálisra van állítva.
Ha egy kivezetést ugyan analógra állítunk, de a TRIS bitjét töröljük, a kimenet megjelenik, az A/D a logikai szinteket fogja mérni. De a RMW műveletek meglepő eredményt adnak, mivel a visszaolvasott digitális érték mindig 0. Így hát a
sorok (ahol a bitszám 0..2) mindig 0-t éreznek...
Hogyan lehet frissíteni?
|
Bejelentkezés
Hirdetés |