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   1197 / 1206
(#) bitmixer hozzászólása Nov 20, 2023 /
 
Korábban csak 8 bites PIC-ekkel dolgoztam, de most egy PIC24FJ16GA002-t kellene égetnem. Meglepve látom, hogy 3 pár PGC/PGD lába is van. Végig nyálaztam a leírását, de nem találtam meg, hogy akkor pl. Pickit2-vel melyik párosra és hogy kellene rácsatlakozni... nézek, mint a moziban. Eligazítana valaki? Kösz, üdv!
(#) Laja1 válasza proli007 hozzászólására (») Nov 20, 2023 /
 
Köszönöm szépen! Ezeket megnézegetem, mert nem ismertem eddig.

Írod, hogy kell referenciafeszültség. De azt honnan tudok venni, hiszen minden az elemről lesz megtáplálva? A PIC16F877A belső referenciával nem rendelkezik. Válasszak másik mikrokontrollert? Vagy ez a belső referencia is betápfüggő? Mert akkor a 22-es csapdája!
Hogy szokták ezt megoldani? Olvastam LVD-ről, de úgy tudom ebben a kontrollerben ez sincs.
(#) proli007 válasza Laja1 hozzászólására (») Nov 20, 2023 / 1
 
Pld. egy TL431-el meg egy ellenállással tudsz 2,48V referenciát csinálni az AN3 lábra.
Ha az ellenállást egy port lábbal kapcsolgatod, akkor csak akkor fogyaszt, ha mérni szeretnél..
(#) icserny válasza bitmixer hozzászólására (») Nov 21, 2023 / 1
 
Nagyon homályos emlékeim szerint bármelyikre csatlakoztatod, mindegyiken lehet programozni. A debug-olás viszont csak azon a lábpáron fog menni, amelyiket kijelölöd a CW1 konfigurációs szó ICS1:ICS0 bitjeinek beállításával.

Természetesen csak az azonos sorszámú PGD/PGC lábak használhatók egyidejűleg.
(#) Lamprologus válasza Laja1 hozzászólására (») Nov 21, 2023 /
 
Elemes táplálás esetén nem célszerű elfűteni a "felesleges feszültséget"!
Célszerű valamilyen kapcsolóüzemű stabilizátort használni!

Ha 9V-os elemről működteted, és a 7805-nek kell kb 7V bemenő feszültség, akkor 7V elem feszültségnél kellene jeleznie az áramkörödnek ... Na amikor egy 9V-os elem már csak 7V-ot ad le az gyakorlatilag már le van merülve, és rohamosan csökken tovább a feszültsége ... Tehát nyugodtan elkönyvelheted lemerültnek. De ekkor még a tápod megvan stabilan 5V, ezért használhatod azt referenciának, az elem feszültséget meg leosztva tudod mérni.
(#) Laja1 válasza Lamprologus hozzászólására (») Nov 21, 2023 /
 
Köszönöm szépen, így csinálom meg!!
(#) benjami válasza KoblogPerGyok hozzászólására (») Nov 21, 2023 / 1
 
Nekem (is) túl szabályosnak tűnik ez a 10msec-enként előforduló 4kHz körüli "zaj". Én első körben levenném a bejövő jelet (azaz a bemenetet meghagynám a féltápfeszültségen), és azzal próbálkoznék.
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 21, 2023 /
 
Sok elintézni valóm van, küzdök a bürokráciával kicsit, de pár óra múlva kipróbálom!
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 21, 2023 /
 
Gyorsan ki tudtam próbálni.

255 minden értékre. Az ADC értékét >>2 vel osztom, mert 1 byte kell nekem a memória limit miatt. Az ADC értéke16 biten tárolódik, de max 12 bites, amit levettem 10 bitre. A korábbi adatok, mikor 2 byte-on küldtem el, akkor is csinált ilyesmit. Akkor ugye a High byte 3-nál nem lehetett volna nagyobb ugye, de előfordult.

Azaz néha mintha nem mérne rendesen ezek szerint, mert max-ot mér akkor is, mikor nincs adat rajta. Azaz, akkor jönnek elő ezek a tüskék, mikor nincs adat, nem töltődik be a 16 bites regiszterbe, és az alapértékeket küldi ki. Ez legalábbis ezt sugallja nekem most.

FRISSÍTÉS!!

Bocsánat, ez mos semmi nélkül volt, a féltápfeszhez idő kell még, meg kell néznem, hogy tudnám ezt megoldani komolyabb bontás nélkül!!!
A hozzászólás módosítva: Nov 21, 2023
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 21, 2023 /
 
Nem tudtam leválasztani a jelet, de ha a forrás teljesen csöndes, és úgy veszem a jelet, akkor az igen zajos.

Ráteszem szkópra is a sima jelet, de szerintem az jó lesz, mert már kimértem rendes jellel, ott nem volt gond.

A dsPIC felől vana hiba.

Csatolt fájlban a zaj....

1.WAV
    
(#) benjami válasza KoblogPerGyok hozzászólására (») Nov 21, 2023 /
 
Próbálom értelmezni a kiinduló hozzászólásod: A forrást biztosító táp GND-jét a VREF- -re, a +tápját meg a VREF+ -ra kötötted? Sehol máshol nem találkozik egymással a két táp? Ha nem akkor akkor a VREF-ek gyakorlatilag lebegnek a PIC tápjához képest. Legalább egy pártíz Ohm-al össze kellene kötni a forrás GND-t a PIC GND-vel.
(#) asch válasza Laja1 hozzászólására (») Nov 21, 2023 /
 
Elemes működésre teljesen másképpen kell tervezni, mint nem elemesre. 2 ésszerű lehetőség:

* Olyan feszstabot kell választani, ami nem fogyaszt, ha nincsen őrajta terhelés. Ez a Quiescent Current, amit proli007 írt. Létezik feszstab, aminek ez nagyon kicsi.
* Olyan áramkört tervezni, ami 3.7V-ról működik, és egy darab lítium celláról meg lehet hajtani stabilizátor nélkül. A merülést pedig tudja detektálni a csip - lásd lentebb. Az égetést én úgy szoktam megoldani, hogy addig lehúzom az elemet, és az égetés idejére 5V van adva az áramkörnek. Ha csak 5V égetőd van, akkor erre figyelni kell, hogy az áramkör tolerálja az 5V-ot! Vagy olyan égető kell, ami nem ad tápot, hanem a célalkatrész tápfeszültségét használja.

Amire figyelni kell, ha sokáig akarsz működni:

* Vannak direkt elemes működésre tervezett csipek. Ilyet kell használni! AVR esetén a P-re végződő névből ismerhetőek fel, sajnos PIC esetén nem tudom. (Meglepően sokat fogyaszt maga az MCU alapjáraton is elem léptékhez mérve. Az órajel csökkentése is segít a fogyasztás csökkentésén, de a sleep a tuti.)
* Amikor nem dolgozunk ne fogyasszunk! Fények lekapcsolva, proci sleep-be, hőmérő áramtalanítva stb. A kis fogyasztású perifériákat, például hőmérőt is tápolhatsz a proci pinjéről, így nem kell külső alkatrész a kapcsolgatáshoz, például a GND-jét lekapcsolhatod.
* Az adatlap szerint az MCU minden lába legyen bekötve, vagy belső pullup-pal magasba húzva, tehát ne legyen semmi "mozgás" magától. Egy lebegő láb belül mindenféle áramköröket triggerelhet, hogy azok fogyasszanak.
* Ha folyamatos működés kell, akkor két mérés között időzítve ébredjünk fel, közte alszunk! Az önfelkeltő időzítőhöz van nagyon kis fogyasztású belső óra.
* Ha elegendő a gombnyomásra működés, akkor ki kell mindent kapcsolni, sleep-be menni és a gombra tett pin change interruptra ébredni csak. Ilyenkor semmi óra nem jár, és a fogyasztás gombelem léptékkel is az önkisülés alatt lehet.
* A kijelző legyen LCD, ami csak változáskor fogyaszt. A programot úgy írjuk meg, hogy ne legyen felesleges frissítés.
* Az LCD-nek lehet adni egy háttérvilágítást, ami gombnyomásra egy rövid ideig ég, és utána lekapcsol.
* Ha OLED vagy LED a kijelző, akkor szintén csak gombnyomás után világítson.
* A táp feszültségét sok mikrovezérlőn lehet külön láb nélkül is mérni, a tápot referenciaként, a belső referencia értékét lehet mérni, és ebből következtetni a tápfeszültségre. Az LCD-n, vagy jelző LED-del lehet a túl alacsony feszültséget jelezni gombnyomásra például. Nem kell folyamatosan mérni, ezért nem kell komparátor. Ha van LCD, akkor akár a mért értéket ki is írhatod a hőmérséklet helyett gombnyomásra.

Ha ezeket betartod, akkor akár évekig is működő áramkört is építhetsz.
(#) Laja1 válasza asch hozzászólására (») Nov 21, 2023 /
 
Köszönöm szépen a sok jó tanácsot!
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 21, 2023 /
 
Igen, jól látod. Erre épp azért volna szükség, mert a PC táp USB-ről kapja a PIC a 3.3V-ot, míg a jelforrás tök más tápról jön. Épp ezért gondoltam azt, hogy ekkor így kell használni, mert ahhoz a szintekhez kell hasonlítania a jelet. Azonban a PIC analóg köreit szintén az USB ről kapott 3.3V hajtja(ná) meg. Azt láttam, hallottam, hogy ez így igen nem ok. Ezért is kérdeztem elsőnek, hogy a PIC analóg köreit ugyanarra a tápra kössem, mint ahonnan a jel jön. Ebben az esetben a PIC két tök különböző tápról kapná a forrást. A digitális az usb-s 3.3V, míg az analóg arról a tápról kapná, ami meghajtja azt az áramkört, ami végül a feldogozandó jelet adja. Csak épp nem tudom, hogy ez ok-e pontosan.

Azonban azért nem jelentkeztem sokáig, mert naná, hogy találtam hibát az áramkörben, illetve annak javítása okozott egy másikat, ami korábban már ment, azt kellett kijavítanom.
A hozzászólás módosítva: Nov 21, 2023
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 21, 2023 /
 
Amúgy igen, találkoztam már ezzel a problémával, de akkor a digitális jelszinteknél okozott nem kis galibát. Abban bíztam, hogy ez a Vref+/Vref- és a beállítások éppen ezt fogják kiköszübölni. Ott nagyon nem volt mindegy, hogy az analizátor GND-je mihez van csatlakoztatva. (meg akkor az mcu (Arduino) nem a külső tápról ment, mert a kábel megszakadt, simán átállt a board a PC USB-re)
(#) Pali79 válasza Laja1 hozzászólására (») Nov 21, 2023 /
 
Ha van lehetőséged másik PIC-et használni, ami magas órajelnél kevesebb feszről is elmegy és a már említett LDV modullal is rendelkezik, sokkal kevesebb szívás lesz. A fogyasztás csökkentésére már kaptál jó tanácsokat, azokat használod akkor jó eséllyel évekig elmegy. Példaként nálam működő elemes füstérzékelő (valamelyik PIC18Fxxx a lelke) normál körülmények mellett 5-6 évig működik 3db ceruza elemről.
A hozzászólás módosítva: Nov 21, 2023
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 21, 2023 /
 
Idézet:
„Legalább egy pártíz Ohm-al össze kellene kötni a forrás GND-t a PIC GND-vel.”


Sejtetem, hogy ezt nem kerülhetem el, csak bíztam benne, erősen bizakodtam! . Nem lehet ebből baj? Mármint az USB GND és egy 230V-ról működő 12V kapcsoló üzemű táp esetén? De csak nem sikerült elkerülnöm ezt a gondot, reméltem, hogy a PIC-ben vannak erre a problémára beépített megoldások, de a remény hal meg utoljára. Ezt de jó lett volna megúszni valahogy.

Nézek ellenállást, lehet azt még be tudom paszírozni valahogy. A Vref-, (230-as tápról jön) és az AVss (USB TTL átalakítóról) közé tudnék a nyák alatt beforrasztani egy ellenállást.
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Nov 21, 2023 /
 
Azért kérdezem, mert korábban csináltam ehhez hasonlót, de akkor pórul jártam. Gondolom persze akkor elnézhettem valamit, de megmaradt ez bennem, mint elrettentő erő! Bocs, ha parázok megint kicsit, nem akarok elfüstölni semmit sem, mert van pár Forint már benne és működik is nagy vonalakban...
10 Ohm és 22 Ohm 1/2W 5% ellenállásaim vannak. Melyiket javaslod?
(#) benjami válasza KoblogPerGyok hozzászólására (») Nov 21, 2023 / 1
 
Azt nem írtad, hogy a tápok közül van-e valamelyik GND-jének köze a védőföldhöz. Ha van, (főleg ha mindkettő tápegységnél) akkor cifra helyzet tud keletkezni, ha eltérő helyről van megtápolva a 2 tápegység. Amúgy szerintem mindegy melyik ellenállással próbálkozol, mert csak annyi a lényeg, hogy a kettő GND azonos potenciálra kerüljön. De próbáld ki a 22 Ohmossal először. Az is lehet, hogy jóval nagyobb értékűvel (akár kOhm nagyságrendűvel is jó lenne).
A hozzászólás módosítva: Nov 21, 2023
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 21, 2023 /
 
Idézet:
„Azt nem írtad, hogy a tápok közül van-e valamelyik GND-jének köze a védőföldhöz.”


Nem tudom, nem emlékszem pontosan sajnos. Az egyik valójában egy 30A-es 12V táp, olcsón kaptam, és tökéletesen működik. Beletettem egy dobozba ventikkel kiegészítve.

Ilyesmi

A másik meg a PC USB-je, amiről a TTL átalakító előállít 3.3V-ot. Elvileg az meg ESP01-hez volt. De mindegyik tökéletesen működik. Mindegyik ugyanarról a 230V aljzatról megy.
(#) KoblogPerGyok válasza benjami hozzászólására (») Nov 22, 2023 /
 
Szia!
Ez volt a gond. A jelek sokkal, de sokkal szebbek lettek!! Köszi az infót! Sejtettem, hogy ilyesmi gond is lehet, de nem mertem meglépni ezt.

A két GND-t egy 22 Ohm ellenállással közösítettem egy jumper tüskén keresztül, illetve egy plusz kivezetést még betettem a szkópnak meg feszmérőnek, ha már arra jártam, hogy ne kelljen folyton keresgélni.

Az eredmények nem tökéletesek, de sokkal szebbek.
Köszönöm!
A hozzászólás módosítva: Nov 22, 2023
(#) halfbit válasza bitmixer hozzászólására (») Nov 26, 2023 /
 
Igen, a PIC24 és dsPIC sorozatban több pár programozó láb van, így az áramkörben számodra legkedvezőbbet választhatod ki. Például azért, hogy ne kelljen olyan lábat erre felhasználni, aminek valamely más funkciójára szükséged lenne.
Az adatlap elején, a lábkiosztásnál az egyes lábak funkciói között ezek is említve vannak.

A több programozó láb közül a main egység elején a config bitek beállításánál tudod a neked tetszőt beállítani. Monjuk az 1. lábakat így:

// FICD
#pragma config ICS = PGD1 // ICD Communication Channel Select bits (Communicate on PGEC1 and PGED1)

Window / Target Memory Views / Configuration Bits lapon beállítva minden szükséges bitet,
Generate Source Code to Output gombra az egészet bemásolja az Output - Config Bits Source lapra. Innen bemásolhatod a kódodba.
A hozzászólás módosítva: Nov 26, 2023
(#) bitmixer válasza halfbit hozzászólására (») Nov 26, 2023 /
 
Szia, kösz a választ. Leginkább az érdekel(t), hogy SZŰZ példánynál melyik párossal kell kezdeni. Kaptam már olyan tippet, hogy bármelyikkel, de olyat is, hogy "természetesen" az 1. számúval. A proci még nincs itt, úgyhogy a válasz nincs elkésve
(#) halfbit válasza bitmixer hozzászólására (») Nov 26, 2023 /
 
Ja, ez lemaradt: A Config bitek a programozás alkalmával mindig íródnak, tehát mindegy, mennyire volt "szűz" előzőleg az IC.

Az előző hozzászólásban bemásolt kódrészletben csak azért szerepel pont az 1. pár, mert a konkrét áramkörömben pont ez volt a legcélszerűbb. Attól is függhet, melyiket választod, hogy a NYÁK-on melyik lábhoz tudod a legrövidebb vezetékkel bekötni.
Párszor 10mm plusz nem gond, de a Microchip debuggerek nem szeretik a hosszú programozó kábelt. Érdemes a NYÁK-on eleve röviden vezetgetni a PGED, PGEC vezetőket.
A hozzászólás módosítva: Nov 26, 2023
(#) bitmixer válasza halfbit hozzászólására (») Nov 26, 2023 /
 
Újból kösz. Úgy látszik, nem tudtam másodjára sem egyértelműen megfogalmazni a kérdésemet.
Az világos, hogy bármely párosra konfigurálhatom / programozhatom a majdani ICSP lábakat, és onnantól kezdve csak azokon át tudok hozzáférni. De gyárilag hol vannak?
OK, talán megválaszolom magamnak: a PIC leírásában a CW1 8-9. bitje defaultban 1-1, így a PGC1/PGD1-re mutat. Ez látszik a leglogikusabbnak is, ahogy az egyik tipp mondta.
Tehát a Picit2-vel ezeken a lábakon fogok hozzákezdeni. Jól gondolom?
(#) halfbit válasza bitmixer hozzászólására (») Nov 26, 2023 /
 
Szia!
A teendő csak ennyi:

MPLAB X-ben Window / Target Memory Views / Configuration Bits ablakban a legördülő listán kiválasztod a kívánt "ICD Communication Channel Select bits" sorszámát.
Természetesen minden más beállítást is elvégzel, különös tekintettel az oszcillátor beállításokra (!!), aztán a már említett gombbal legenerálod a felkommentezett forráskódot, ami tartalmazni fogja a programozó láb kiválasztáshoz szükséges #pragma... preprocesszor utasítást is.

A generált kódot beilleszted a main.c -be az
int main(void) elé.

Ettől kezdve ha rádugsz bármilyen debuggert, Picit2-t is beleértve, és rákattintasz a
"Make and Program Device", vagy a "Debug Project" gombra, a rendszer tenni fogja a dolgát. Ha nincs elkötés.

Szűz példánynál is kezdhetsz bármelyik pgm láb párossal, csak egyezzen a programban a
#pragma config ICS = PGDn utasítás a ténylegesen bevezetékelt programozó lábak sorszámával.

Gondolom, SOIC28-as tokot használsz, azon
PGED1 4. láb,
PGEC1 5.

PGED2 21.
PGEC2 22.

PGED3 14.
PGEC3 15.
A hozzászólás módosítva: Nov 26, 2023
(#) icserny válasza bitmixer hozzászólására (») Nov 26, 2023 /
 
Programozásra bármelyik PGCi/PGDi lábpár felhasználható (i=1,2,3). A konfigurációs bitek csak a debugoláshoz használt lábpárt választják ki (és korlátozzák arra az egyre).

Idézet:
„Most dsPIC33F/PIC24H devices have more than one pair of PGCx and PGDx pins, which are
multiplexed with other I/O or peripheral functions, as illustrated in Figure 24-1. The multiple
PGCx/PGDx pin pairs provide additional flexibility in system design by allowing the user to
incorporate ICSP on the pair of pins that are least constrained by the circuit design. All PGCx and
PGDx pins are functionally attached together and behave identically. Any one pair can be used
for successful device programming. The only limitation is that both pins from the same pair must be used.


Referencia:
PIC24F Family Reference Manual, Section 33. Programming and Diagnostics
dsPIC33H/PIC24H Family Reference Manual, Section24. Programming and...stics
dsPIC33E/PIC24E Family Reference Manual © 2010 Microchip Technology...ostics
(#) bitmixer válasza halfbit hozzászólására (») Nov 27, 2023 /
 
Kösz harmadjára is! Kezd oszlani a köd. Én szívességből akarok valakinek égetni kész, hozott hex-et az üres procijába. Ezért nálam nem játszik az MPLAB, és a Pickit2-t sem MPLAB alól használom. Tehát bármelyik párost használhatom, szuper.
(#) bitmixer válasza icserny hozzászólására (») Nov 27, 2023 /
 
Kösz, minden eddigi válasz egy irányba mutat, ez megnyugtatott. Most már csak jöjjön az a PIC
(#) Bubu58 válasza proli007 hozzászólására (») Dec 6, 2023 /
 
Üdv. Köszönöm szépen az útbaigazítást! Igen van eredeti HEX file a bírtokomban.És az MCU-t fel programozni (égetni). Egyébként a választ azért most írom, mert nem volt időm foglalkozni vele.
Következő: »»   1197 / 1206
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