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   798 / 1216
(#) nedudgi válasza kriszrap hozzászólására (») Máj 21, 2016 /
 
Ha egyszerre több LED is világíthat, akkor mindegyiknek jusson egy ellenállás.
(#) kriszrap válasza nedudgi hozzászólására (») Máj 21, 2016 /
 
Hát igen DD sajnos ez a baj ugy hogy időmultiplex.

Amikor a ledkockát készitettem ezzel nem számoltam sajnos.(kezdő baki)
kb hány %-kal kissbe a fényerő időmultiplexkor???
(#) eSDi válasza kriszrap hozzászólására (») Máj 21, 2016 /
 
Üdv!

Ilyenkor valamivel nagyobb árammal szokták hajtani a LED-et. Megnézed az adatlapban, hogy mit engednek meg. Pl.: L-59 EGW
Peak Forward Current: max. 150mA, 1/10 Duty Cycle, 0.1ms Pulse Width
(#) sonajkniz válasza edison14 hozzászólására (») Máj 21, 2016 / 3
 
Idézet:
„Ha a programod valahol "beragad" akkor az rosszul van megírva.”

Zseniális! Addj be egy javaslatot a microchipnek, hogy vegyék ki a PIC- ekből a watchdogot, mint teljesen felesleges hardvert, mert ha egy program lefagy, vagy ciklusba kerül, akkor azt újra meg kell írni, de most rendesen. A rovat címe: PIC kezdőknek. Erre, ha egy kezdő feltesz itt egy kérdést, jó esetben olyan választ kap, amivel legfeljebb egy haladó tud mit kezdeni. De többnyire inkább elbeszélnek mellette. Nem azt kérdezte , hogyan ébred altatásból a PIC. Mert ilyen választ is kapott. Mint ahogy azt sem kérdezte, rossz-e a programja. Annyit kérdezett, van-e arra egyszerű mód (mint a power on bit a PLC létrájában) hogy kizárólag bekapcsolásnál fusson le az inicializálás. Reset esetén ne. (Mellesleg ez engem is, és valószínűleg másokat is érdekelt volna.)
pajti2!
Itt az újabb lehetőség, hogy ledorongolj, mert kimondom a véleményemet, hogy egy kezdőknek való oldalon, kezdők számára emészthető válaszokat kell addni. Valamint addhatjátok az újabb negatívokat.
(#) kistee válasza sonajkniz hozzászólására (») Máj 21, 2016 /
 
Én is csodálkoztam, hogy (pl.) az SD kártya file kezelés tényleg a kezdők problémája lenne? Én kezdőként még csak a LED villogtatásnál tartok... ill. CCS-C-ben egy kicsit előrébb... de nem sokkal.
(#) Elektro.on válasza pompidu hozzászólására (») Máj 21, 2016 /
 
Szerintem a port irányok hiányoznak.
A minta program egy az egyben működik ami a MikroC -ben van.
Itt egy MikroPascal-os projektem amiben működik az LCD is. Talán segít.
(#) eSDi válasza sonajkniz hozzászólására (») Máj 21, 2016 /
 
Üdv!

A watchdog nem a hibásan megírt program általi végtelen ciklusba esés miatt van benne. Hanem az esetleges külső zavarok miatt eltévedő programszámláló miatt.
(#) sonajkniz válasza eSDi hozzászólására (») Máj 21, 2016 /
 
Alapvetően igazad van. De lehet olyan eset, hogy egy bemeneten több egymást követö jelre vársz, és mondjuk az idejüket méred. Az első jere beugrik a program a megfelelő ciklusba. Indítja a timert, és számolja a jeleket. Csakhogy valamiért kimarad egy jel. A watchdog nélkül a program ottragadna. Viszont egy teljes reset eltörölne olyan változókat, amit nem kéne. Ahogy a külső hatásra történő lefagyás esetén is.
A hozzászólás módosítva: Máj 21, 2016
(#) benjami válasza sonajkniz hozzászólására (») Máj 21, 2016 / 1
 
Ha a programod jel kimaradás miatt végtelen ciklusban tud maradni, az a program bizony rosszul van megírva, ott használni kell az időtúlcsordulás figyelését is a jelre várakozó ciklusban. A watchdog arra van, ha pl. villámcsapás miatt a PC eltévedne, vagy a RAM-ban tárolt változókban olyan változások keletkeznének, amitől végtelen ciklusba kerül.
(#) eSDi válasza benjami hozzászólására (») Máj 21, 2016 /
 
Erről van szó!
(#) pajti2 válasza sonajkniz hozzászólására (») Máj 21, 2016 /
 
Köszönöm, hogy ennyire bízol bennem, megpróbálok kifinomultan kitenni magamért

A resetet illetően mintha némelyik pic-nek lenne reset azonosító regisztere. Halovány emlékeim szerint már beleakadtam valamelyik pic adatlapján. De amelyiknek nincsen, éppenséggel barkácsolni is lehet. A hideg és meleg indítás között annyi a különbség, hogy hideg indításkor a pic ram területei kajak ki vannak nullázva. Ha resetet követően azonnal egy memória cellát ellenőrzöl 0x00 értékre, és bármi is van ott, csak hozzáadsz +1-et, abban a változóban mindenkoron megkapod majd az addigi meleg reset-ek számát, első alkalomkor pedig mint 0-t, hideg reset értéket kaptál. Szerintem a barkács módszer annyira egyszerű "alkatrészekből" van felépítve, hogy minimális kreativitással igazán bárkinek eszébe juthatna. Pláne, aki plc vezérléshez van szokva - a plc-k világában az állapotgépek mentén bitpontos precizitás szerinti gondolkodás alapvető követelmény.

Lecseszés rendelve, tálalva. Mefelelt?

A led villogtatás a legelső "hello pic" alap példa, természetesen bármikor bárki arra kérdez rá, szívesen segítünk. Viszont az SD kártya file kezelésére se kellene kígyót-békát kiabálni. Elvégre előre megírt libek vannak hozzá, amik egyetlen szoftveres "alkatrész" gyanánt is léteznek, és teljesen felületes ismeretekkel is felhasználhatóak. Áramköri egyeztetés, és spi port config jellemzően kell hozzá, de semmi más. Nem olyan nagy ördöngösség az. A kishitűség pedig, mint felhang, szerintem határozottan ellenzendő egy kezdőknek szóló topicban.
(#) pompidu válasza Elektro.on hozzászólására (») Máj 21, 2016 /
 
Kiderítettem mi volt a probléma, a breadboardom egyik lyuka amibe a kristályt raktam nem érintkezett így nem volt órajel.
Mindenkinek nagyon köszönöm a segítséget.
(#) sonajkniz válasza pajti2 hozzászólására (») Máj 21, 2016 /
 
Idézet:
„hideg indításkor a pic ram területei kajak ki vannak nullázva.”

Bocsáss meg, de ezzel a megállapításoddal vitába szálnék. Nemrégiben jártam úgy, hogy egy PIC 12-essel két encodert kezeltem egyszerre. Minden beindítás utáni első mérés hibás volt. Ugyanis az inicializálás során elfelejtettem törölni a számlálóhoz használt ramokat. Ergo: nem álltak nullára a bekapcsoláskor. Azon kívül én is barkács módszert használok, mégpedig kétszeres biztosítással. Az inicializálás előtt megvizsgálok kettő ramot értékre. Ha nem a kívánt érték van bennük, betöltöm, majd megyek tovább az inicializálásra. Mindettől függetlenül, ha petike kérdésére érkezett volna egy egyszerűbb módszer, azonnal áttértem volna rá.
A hozzászólásod második fele pedig újfent felületes elolvasásról árulkodik.
Kistee nem az SD kártya kezelésének nehézségeiről írt, hanem arról, amire már korábban én is tettem mejegyzést, hogy az adatkommunikáció USART-on, meg SD kártyával nem kezdő téma. Jópár PIC-es topic van. Van haladóknak külön. Ha minden kérdéskör ide helyeződik, a kezdők teljesen kiszorulnak. Néha egy-egy téma annyira pörög, hogy nagyon hamar oldalt vált. Ilyenkor a nem a témához kapcsolódó kérdések megválaszolatlanok maradnak. Esetleg kap ugyan választ a kezdő, de a fennforgó, haladóknak való téma miatt nem kezdőknek való választ kap.
(#) Pali79 válasza sonajkniz hozzászólására (») Máj 21, 2016 / 1
 
Először is, ne húzd fel magad! Rosszat tesz az egészségednek!
Másod sorban a kérdés feltevésével is van némi baj. Ha egy program be tud ragadni egy ciklusba, azzal valóban van némi baj, de ennek az orvoslására van más módszer is nem csak az őrkutya. A felvetés egyébként nem rossz, valóban más projektben is hasznos lehet, de ez a jelenség biztosan programhiba. Ha a sok GOTO miatt hiba lép fel akkor valószínűleg a memórialapok közötti ugrálás kavar be, de lehet más is. Nem tudjuk milyen PIC-ről van szó, ismerjük a feladatot sem.
Egyébként Hp41C nagyjából megadta a választ. Ha 16F szériát nézünk akkor a STATUS regiszternek van olyan bitje ami jelzi, hogy WD reset volt. Ezt kell megvizsgálni a program elején, ha kell, át lehet ugrani az inicializáló részt.
(#) sonajkniz válasza Pali79 hozzászólására (») Máj 21, 2016 /
 
Idézet:
„Ha 16F szériát nézünk akkor a STATUS regiszternek van olyan bitje ami jelzi, hogy WD reset volt. Ezt kell megvizsgálni a program elején, ha kell, át lehet ugrani az inicializáló részt.”

Ez az egyenes beszéd. Megadod a korrekt, kezdő számára is érthető iránymutatást, de nem kínálsz kész megoldást, csak rávezeted. Ezt kértem én is, mikor az 1-wire-vel küzdöttem. Nem példaprogramot kértem. Sem azt, hogy oldja meg valaki helyettem. Csak azt, hogy magyarázzák el. Erre hülyének néztek, és kiosztottak.
Nagy neked! Így kell ezt.
(#) icserny válasza sonajkniz hozzászólására (») Máj 22, 2016 /
 
(#) Pali79 válasza icserny hozzászólására (») Máj 22, 2016 /
 
Ez max a 16F szériához jó, egy 18F-nél már a STATUS nem azokat tartalmazza.
(#) kissi válasza Pali79 hozzászólására (») Máj 22, 2016 /
 
De ott is van ilyen...pl. PIC18F46K22 RCON regiszter, keresse meg !
(#) pajti2 válasza sonajkniz hozzászólására (») Máj 22, 2016 /
 
Idézet:
„Nemrégiben jártam úgy, hogy egy PIC 12-essel ..”

Melyik 12-essel kicsit pontosabban?
(#) kistee válasza sonajkniz hozzászólására (») Máj 22, 2016 /
 
Idézet:
„Kistee nem az SD kártya kezelésének nehézségeiről írt, hanem arról, amire már korábban én is tettem mejegyzést, hogy az adatkommunikáció USART-on, meg SD kártyával nem kezdő téma. Jópár PIC-es topic van. Van haladóknak külön.”


Pontosan erre gondoltam. Még annyit tennék hozzá, hogy (szerintem!) itt a 18-as szériánál fejlettebb PIC szóba sem kerülhetne. A dsPIC-ekkel, a 24-esekkel, a 32-esekkel és a hasonló "százlábúakkal" a haladók foglalkoznak. Nekik van külön topikjuk, több is. De lehet, hogy rosszul gondolom...
(#) pajti2 válasza kistee hozzászólására (») Máj 22, 2016 /
 
Még ha 1-1 post el is kallódik kicsit, a világon semmi sincsen abban, hogy az illető 1-1 laponként jelzi, hogy X. post-ban feltett kérdésével még mindig szenved, és akkor majd választ kap, ha esetleg tényleg elszaladt a téma valamivel. Az internetes topic-ok nem a tökéletességnek születtek. Én nem figyeltem fel olyan jelenségre, hogy bárki tanulási vágyát aránytalanul korlátozná, hogy van egy kicsi pezsgés a topicban.

A ds / 24 / 32 / akármilyen pic-ekkel foglalkozhat bárki, aki megvásárolta élete első kísérleti boardját, és példa gyanánt éppen azzal kezd el ismerkedni, mert pont az van rajta a kísérleti panelen. Neki éppen az a kezdet, ugyanúgy jó helyen van itt még a 32mz is, mint bármi más, függetlenül attól, hogy hány lába van. Ha van ellene bármi észérv, megvitatjuk nagyon szívesen a tapasztalati értékét, mert arról jobb itt mindenkinek tudnia. A jó pap is holtig tanul, senki másnak sem szégyen az. De akkor azt le kellene írni úgy, hogy mindenki megérthesse.
(#) Zsora válasza kistee hozzászólására (») Máj 22, 2016 / 1
 
Miért gondolják azt hogy a 16- ill. 32-bitesekkel a haladók foglalkoznak? Mivel nehezebb pl. egy PIC24-est programozni, mint pl. egy PIC16-ost? Szerintem épp hogy könnyebb használni, mert kevesebb a kompromisszum. Én 3 okot látok arra hogy a kezdők miért a 8-biteseket választják:
1.) azokból több a DIP tokos, amit akár pillanatpákával is lehet forrasztani
2.) többen foglalkoznak velük, így többen tudnak segíteni
3.) mert arra beszélik rá őket (ez a 2. pontból következik, így lesz ez egy ördögi kör)
(#) kriszrap válasza eSDi hozzászólására (») Máj 22, 2016 /
 
Nagyon szépen köszönöm mindenkitől a válaszokat
Sokat segítettek
(#) sonajkniz válasza pajti2 hozzászólására (») Máj 22, 2016 /
 
PIC12F1840
Söt! A kérdéses áramkörben az egyik RAM 255-re, másik állandóan 128-ra állt be. Ugyanis ha indításkor felfel ment a számláló, az egyik oldal hibáját nem is lehetett észlelni, (mindössze 1-et hibázott) amásik viszont jelentősen többet mutatott. Ha pedig lefele számolt, az egyik hibázása a kétszerese volt a másikénak. Miután az inicializálásnál mindkettőt töröltem, a hiba megszünt.
(#) sonajkniz válasza Zsora hozzászólására (») Máj 22, 2016 /
 
Teljesen igazad van, de én még azért tudnék egyébb érvet a 8 bit mellett.
Olcsóbb. A kényelmi szempontokat leszámítva (több byteos számokkal végzett matematikai műveletek) még semmi olyan feladatom nem adódott, amit 8 bites PIC-el nem tudtam megoldani. (Persze ez még változhat.)
Az alap perifériák (LCD, GLCD, LED kijelzők, 1-wire eszközök) 8 bites hardverek. Ezért önkéntelenül 8 bitben gondolkozunk a legtöbben.
(#) mrobi válasza sonajkniz hozzászólására (») Máj 22, 2016 /
 
Ha nincs az adott mikrovezérlőben ilyen periféria, akkor van lehetőség fizikailag is kiépíteni ezt a perifériát: Bővebben: Link
(#) don_peter válasza sonajkniz hozzászólására (») Máj 22, 2016 / 1
 
Az mennyivel jobb, hogy oldalakon keresztül offoljátok szét a topikot, a kislányos dühkirohanásaitokkal? Kicsit már kezd viszályára elsülni ez a menyünk a haladó topikba dolog nem gondoljátok? Remélem nem sértettem vérig senkit, de jó lenne vissza térni arra amiért mindannyian ide járunk. Okosodni és segíteni, segítséget kérni. Köszi srácok.
(#) Lamprologus hozzászólása Máj 22, 2016 /
 
Kinéztem egy PIC-et ... PIC24FJ256GB106

Az adatlapot tanulmányozva találtam CNxx (xx=0...81) jelöléseket. Annyit sikerült megfejtenem, hogy a bemenet megváltozására megszakítást generál.

De milyen megszakítást generál? CCS-C-ben programoznám, de ott a varázslóban nem jövök rá, hogy melyik lehet a sok megszakítás közül.

Tudna ebben valaki segíteni?

Módosítás:
uppsz ... közben lehet, hogy megtaláltam:
Change notice Interrupt

Ha tényleg ez az akkor a kérdés akként módusul, hogy bármelyik CN láb változik ez a megszakítás fut le és nekem kell megnézni hogy melyik láb váltotta ki?
A hozzászólás módosítva: Máj 22, 2016
(#) cross51 válasza Lamprologus hozzászólására (») Máj 22, 2016 /
 
a CNEN és IEC1(mindkettőben kell) regiszterrel lehet engedélyezni a megszakítást az IFS1-ben van a flag-je és ha a normál interreupt vector table (IVT)-t használod akkor a 0x003A-n van a megszakítás vektor.

Szerk.:
Később láttam a módosítást a CNEN tartalmazza, hogy melyik lábon történt, az IFS1, CNIF = 1, ha bármelyik konfigurált lábon változás történt és mint írtam utána a CNEN-ből tudod kiolvasni, hogy melyik lábon történt a megszakítás végén (vagy elején) törölni kell az IFS1, CNIF-et.
A hozzászólás módosítva: Máj 22, 2016
(#) Pali79 válasza don_peter hozzászólására (») Máj 22, 2016 /
 
Idézet:
„Kicsit már kezd viszályára elsülni ez a menyünk a haladó topikba dolog nem gondoljátok?”

Következő: »»   798 / 1216
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