Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia!
Még a 8.83 -ban is sárga a "led" a 16F1825 esetén az MpLab Sim előtt. Még mindig fejlesztés alatt a szimulációja... Van még több hasonló: 10F322 -ben nem szimulálja a TMR2 megszakítást. Nála is sárga a "led" ...
Még a 8.84 -ban is sárga a "led" a 16F1825 -nél...
Sziasztok!
Megepitettem http://www.hobbielektronika.hu/kapcsolasok/egyszeru_lpt_egtoaramkor...4.html egeto aramkort es letoltottem hozza a WPB 1.32b verziot es ezzel probalom felprogramozni a PIC 16F628A mat. Sok probalkozas utan sikerult feldobni ra mindent,a Flash,EPROM memoriat es a Configot is beolvasva es egyeztetve a hex file al azonossagot talal,tehat jo. Az ID LOC al viszont valami gubanc van,mert a pic rol beolvasva nem egyforma es nem tudom mi a gond. Esetleg valami tippetek van,hogy mit figyeljek meg,mivel probalkozzak? Esetleg valaki elmagyarazna,hogy mi is egyaltalan az ID Loc es hol lehet beallitani,vagy mi fa'n terem... Elso kiserletezesem pic el es jo lenne,ha pozitiv elmenykent maradna meg es nekifoghatnak a programozasi nyelv megtanulasanak is. Elore is koszonom a valaszt! Udvozlettel, Csabi
Sziasztok!
Egy kis segítséget szeretnék kérni mátrix billentyűzettel kapcsolatban. A megvalósítás hasonló mint Topi cikkében, annyi különbséggel, hogy egy készen megvásárolható 3x4-es fóliabillentyűzetről van szó. A követelmény, hogy 2 gomb is érzékelhető legyen egyszerre. Minden szépen működik egészen addig, amíg az egyszerre nyomott gombok nem azonos oszlopban vannak. Azért nem teljesen tiszta nekem a dolog, mert sorról sorra vizsgálom a bemeneteket. Előre is köszönöm a segítséget.
Sziasztok!
Segítséget szeretnék kérni. Régebben már írtam ez ügyben, nevezetesen hogy valamiért táp merüléskor, illetve az áramkör kikapcsolásakor az eeprom területbe belerondít a kontroller. Akkor arra jutottunk hogy mivel a BOR nincs bekapcsolva (mert a BOR küszöbe (4,5V) alatti feszről jár az áramkör (li-on akku) ) ezért ez okozhat ilyet. Nos, azóta váltottam kontrollert, ugyanaz a tipus (16f648A) csak most az alacsonyabb tápfeszről járó "LF" szériát használom. Azért bíztam ebben a megoldásban mert az "LF" széria 2 V ig működőképes, a li-on akku védőáramköre pedig 2,7V nál már lekapcsol, tehát elvileg még a normál feszültségtartományon belül lekapcsolja a tápfeszt a kontrollerről. De sajnos a probléma ugyanaz...ha az akku lemerül a következő bekapcsoláskor már tele van írva az eeprom terület 0x00 - kal. Sőt ez a helyzet akkor is, ha egyszerűen kikapcsolom az áramkört a táp elvételével. Mi okozhatja ezt, és hogyan tudnám elkerülni? Esetleg egy külső reset ák. ami a MCLR lábat földre húzza ha a táp a kritikus szint közelébe ér? Ez gond nélkül megoldható, de mi a helyzet a normál kikapcsoláskor jelentkező ugyanilyen jellegű problémával? Azt hogyan tudnám kimozogni..? Mert a probléma a manuális kikapcsoláskor (táp elvétel) is jelentkezik néha. Help please...Köszönöm előre is..
Magától nem írja tele az EEPROM-ot, szerintem valami hiba lehet a programodban ( gondold el, ha a tápelvételre így reagálna, akkor mit lehetne rábízni ?! )! Konkrét javaslatom nincs, de elektromos tervezési vagy programhiba lehet a jelenség mögött, amit meg kell szüntetni, nem "elkerülni" !
Ha megnézed az EEPROM-ot, akkor mindig a 8-al maradék nélkül osztható helyeken van a hiba, nem akárhol --> szerintem program !! Steve
Ezt a lehetőséget is szem előtt tartom természetesen, de ez esetben (ha programhiba) mi köze lehet ennek az egésznek a táphoz..? Mert egyébként minden kifogástalanul működik egészen addig míg le nem merül az akku vagy ki nem kapcsolom az elektronikát...És ráadásul csak esetlegesen /véletlen szerűen jön elő a probléma, van hogy két három ki bekapcsolás után van hogy az elsőnél, van hogy csak a 10. nél. A tápnál ugyanez, van hogy elketyeg az áramkör 3 akku töltéssel is probléma nélkül, a negyediknél már nem működik az egész cucc. Ilyenkor szoktam "belenézni", mi van az eepromban...0x00 ák..sajna...Ha ez program hiba lenne akkor ez állandóan jelentkezne azonos körülmények között, de nem így van.
Most akkor az új PIC esetében be van kapcsolva a BOR? Ha nincs, akkor a program akármit is csinálhat lekapcsoláskor!
Nincs bekapcsolva mert mint említettem li-on akkuról (3,5 - 4,2V) jár az ÁK., a BOR pedig az "LF" szériánál is 4,5V lehet (bár külön az "LF" szériára vonatkozó ilyen utalást nem találtam az adatlapban) Akkor mi lehet a megoldás? Mert 5 V ról nem járathatom egy li-on akkuról, step up al meg sokat fogyasztana... Mert biztosan van megoldás, mert megoldották ezt már már li-on akkus készüléknél is már valahogy mások is.....
Esetleg még arra gondolok hogy a táp puffere relative "nagy". 100uF. Amikor kikapcsolom az áramkört akkor pár 100 msec alatt csökken "0" ra a tápfeszültség, és ez lehet hogy már elég ahhoz hogy hülyeségeket csináljon a kontroller. Ha egy külső reset áramkört belemókolnák ami az MCLR lábat vezérelné... nem jelenthetne megoldást? Mert az valószínűleg gyorsabban lerántja a reset lábat földre mint ahogy a puffer kisülne. Vagy esetleg a pufferrel párhuzamos 10K hogy gyorsabban kisüljön..? vagy nem jó a gondolatmenet...? De ezek persze csak amolyan ötletelések a részemről.
Az EEPROM írás után tiltod az EEPROM írást? WREN bitre gondolok.
Kereshetnél olyan kontrollert, aminél állítható a BOR feszültsége. Olyan kontrollert nem lehet választani, aminek állítható a BOR feszültsége? Pl. 18F1320, bár ez kicsivel drágább. 16F1827 esetleg?
Persze, a WREN az tiltva van írás után. Hát, ha felteszem a mérlegre hogy hardveresen reset áramköröket kell bele mókolnom a kész panelre(ami ráadásul nem is biztos hogy megoldáshoz vezet...) akkor a kontroller csere és a kód átírása is életszerűnek látszik. No meg a panel áttervezése...Az igazság az hogy már az elején elcsesztem, mert egy kontrollerekkel foglalkozó oldalon olvastam az állítható BOR feszültség szintekről, és ebből én általánosítottam hogy mindegyik kontroller ilyen. Az már később, a panel letervezése és a kód megírása után derült ki hogy a 16F628/648 nál fix a BOR feszültsége, ráadásul esetemben annyira magas hogy a BOR t muszáj kikapcsolnom különben állandóan reset ben lenne az áramkör...
Idézet: Szerintem például tud ilyet csinálni valami inicializálás elfelejtése az elején és bizonyos regiszterek "tetszőleges" állapottal indulva "meghülyíthetik" a programodat ( ez véletlenszerű jelenségeket produkál!), hiszen csak "RESET" esetén jön vagy jöhet elő a probléma !„Mert egyébként minden kifogástalanul működik egészen addig míg le nem merül az akku vagy ki nem kapcsolom az elektronikát.” Nézd át az inicializálásokat, minden regiszter alapállapotát határozd meg! Steve
Köszönöm, akkor átnézek mindent az elejétől. Viszont lehet nem jól értelmezem, de szerintem pont azért van ez a rendellenesség mert a kritikus feszültség szint kiváltotta RESET elmarad a BOR kikapcsolása miatt. Más miatt pedig nem tud RESET be menni a kontroller, az MCLR kikapcsolva...stb. Ha a programból futna resetre valami nagy "bug" miatt, akkor pedig ez állandóan előjönne, nem csak a táp esésekor és a kikapcsoláskor...Vagy nem jól gondolom? A nem használt perifériák tiltva vannak (ADC, timer ek..stb), az ezekhez tartozó regisztereket ez esetben nem kell külön inicializálni, vagy ez is bekavarhat..?
Azt írtad, hogy a táp kikapcsolásakor is előjön ez a jelenség: szerintem 100 µF nem olyan nagy kapacitás, hogy ez ilyen problémát okozzon, csináltam már néhány áramkört BOR nélkül ( elemtakarékosság miatt, bár általában én is bekapcsolom), de nem volt vele problémám (igaz nem EEPROM-ot írtam !).
Ha lehet próbáld ki tápról és akkor bekapcsolhatod a BOR-t és így talán kideríthető, hogy szoftveres-e a probléma ( bár lehet, hogy ezt is eltakarja a BOR! )! Sok sikert! Steve
Köszi, az ötlet kiváló! Holnap teszt...De így csak a kikapcsolást tudom tesztelni, a folyamatos akkumerülést nem tudom modellezni, max 4,5 V ig bekapcsolt BOR esetén...De gyanítom hogy így megoldódik a probléma, legalábbis a teszt idejére.
Egyébként amikor ez a jelenség előjön akkor a program a közelében sincs az eeprom írásnak. Tehát nem arról van szó hogy írás közben nem azt írja amit én szeretnék, hanem "csak úgy" véletlenszerűen belegányol az eeprom tartalmába. És nem feltétlenül állandóan oda ahol a képen bejelöltem, vagy hogy két oszloppal erréb vagy arrább, de mindig függőlegesen, oszlopszerűen...
4 Mhz belső oszcillátorról jár, de 16LF648A, szerintem csak elírtad..
Igen, úgy látszik elírtam...
Még egy kérdés: A megszakítási mentések után beállítod a megfelelő bank -ot?
Elkészült a masina. Ez. Annyi változtatással, hogy a 2 data és a clock kapu felhúzó ellenállása nem 10, hanem 1KOhm. Amit viszont nem értek. A PIC katalógusa szerint a Vss maximum értéke 14V. Ebben az áramkörben van egy 7812 ami alapból 12,3V-ot ad. A gnd láb 2 diódával való megemelése ezt a 12,3-at megemeli 13,7V-ra, ami erősen közelít a határértékhez. Miért emelik meg a tervezők ezt a feszt? Nem elég a 12 V? Holnap veszek PIC-et és főpróba.
Hűűha...Ezt speciel nem tudom, de megnézem. Elméletben "watt" oldaláról puskáztam a megszakítás mentést / visszaállítást, de hogy a bank el van e mentve, majd vissza van e állítva ezt nem tudom, de már nézem is. Erre nem is gondoltam, lehet ez a baj...? De ha itt lenne a hiba akkor ez üzem közben is tuti jelentkezne mert másik bankba térne vissza a program mint mikor az int bekövetkezett, ezért nem működne valami a megszakítás lefutása után, ez már kiderült volna. De köszönöm az ötletet már nézem is, tényleg nem tudok már mire gondolni, ezzel szívok hónapok óta..
A status regiszter állapota el van mentve, tehát ez esetben aktuális bank állapota is...
Most nézem, hogy szerintem nem arra válaszoltam amit kérdeztél... Bocs még reggel van nagyon...éjszakáztam. Nos, a mentések után a megszakításban többször is váltok bankot mert muszáj. Ezért is működik a dolog ha ott lenne valami bibi akkor valami nem működne, többek közt az eeprom írása sem aminek a regiszterei a bank1 ben vannak, aztán állítok át közben kimeneteket (PORTA, PORTB..stb, led visszajelzések) azok meg a bank0 ból mennek. Tehát ez a része tuti működik. A megszakítás lefutása után meg visszaállítom a mentéseknek megfelelően a regiszterek állapotait. Szerintem a megszakítás rutin jól működik.
De miért kérdezted az órajelet amire "kissi" is reagálta hogy az is gáz lehet...? Sok variációm nincs ezzel mert 4 Mhz belső rc oszcillátort használok, max át tudom állítani a 38Khz es módba. Ebben az esetben viszont az időzítéseket is át kell számolgatnom, ezt nem nagyon szeretném. De ha ez megoldást jelenthet nekiállok.
Szia!
- A mentés rendben. A 4. sor a 0. Bank -ot választja ki. Ugye az AKKU_TEMP és a STATUS_TMP a 0x70 .. 0x7F területen van? Még túl is biztosítottad magad a 9. sorral - ezt is megcsinálja a 4. sor. A visszaállítás mindig működik, hiszen a STATUS visszaállítása a Bank kiválasztáést is visszaállítja. - 4MHz ig lehet hajtani min. 2V -tal a 16F648A -t az adatlapban található Figure 17-2 szerint. Ezt az elírás egyszer már okozott problémát: nekem: 16F648 - 16F684. Mind a kettő létezik.
Valóban a 9. sor nem is kéne. Az igazság az hogy már kínomban nem tudom mit csináljak vele..ez is valami ilyen "hátha"...módra került bele. Hát, ha 4 Mhz en még ketyeg a kontroller 2 V ról akkor nem ez a baj, mert a lion akku mélykisülés elleni védőáramköre már 2,7 - 2,8 V nál lekapcsolja az akku feszt a kütyüről. Nagyon utálom már ezt a hibát.....átlag 1 héten egyszer veszem elő mert felidegesít és kb 1 hét kell hogy lenyugodjak és ne tapossam meg az egész szerkentyűt. Mi a bánatot nézzek még meg..?
Az 1178033. kérdésben nem tudtok segíteni?
Lenne egy kérdésem egy PIC16F871 ADConverterjével kapcsolatban. Épp egy 18 Ledes kivezérlésmérőt próbálok kivitelezni. Gondoltam, hogy nem kell elé erősítő fokozat mert majd inkább úgy konfigurálom az ADCt, hogy legyen Vref bemenet és ha azt lejjebb veszem akkor ugyan azt a hatást érem el. Amúgy az első két AD bemenetet használom. A Vrefen egy trimmer poti van a tápfesz (5V) és a föld között. Szerintetek mitől lehet az, hogy ha a Vref et állítgatva egy kis tartományban (közel 5V) jól működik a cucc, de ha még lejjebb megyek akkor egyszer csak kigyullad az összes LED és kész? |
Bejelentkezés
Hirdetés |