Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Én a szimulátorban kezdeném a hiba keresését. Egyébként nekem is gondom volt régen a könyvtári függvényekkel. Emlékeim szerint ez a LIB és a saját rész eltérő memóriamodellű kezelése miatt volt. Miután a könyvtári LIB-eket újra elkészítettem icserny leírása alapján ( A PIC18 perifériakönyvtár újrafordítása ) az ilyen jellegű hibák megszűntek.
A hozzászólás módosítva: Nov 21, 2014
Bocsi a késői válaszért, pont ilyen megoldást kerestem mint ez a TLI4970(csak tudjon I2C-t és jó lenne 4-5bemenete az árammérésre) de Peter65 válaszától is okosabb lettem. Köszi!
Sziasztok!
Ismét PIC18F46K80 eszköz. Analóg, SPI, soros, timer van inikor bekapcsolva. Jellemzően hosszabb idejű kikapcsolás után (két kapcsolás között 1 óra pl.) a PIC elindul, de erős watchdog hatásra. Azaz elindul, de mintha le is fagy valahol, majd RESET a wd hatásra, ezt 10-15x eljátsza. Aztán elindul. Ezután ki- bekapcsolhatom, azonnal elindul a rendes program. Majd hosszabb kikapcsolás után, megint kezdi, elindul, de sokadikra wd hatásra... Találkoztatok ilyen jelenséggel? Nagyon úgy tűnik, mintha nem indulna el valamelyik periféria... elsőre. A perifériák startja után várjak némi időt? (pl. néhány 10 ms?) Ill. milyen sorrendben "kell" elindítani a perifériákat? [SPI, CAN, Analóg, Timer, soros van.] Köszönöm, Roland A hozzászólás módosítva: Dec 17, 2014
Mielőtt használsz egy perifériát, amire egy Timernek hatása van, nyílván a timert kell előbb beálítani és igaz ez egymásra hatások esetén is. Ha van külső eszköz, akkor annak időt kell hagyni az éledésre, de ha jól olvasom, neked nincs. Gondolom a ki-be kapcsolás teljes, nem csak egy reset. Mert ha nem áramtalanítasz, akkor sok regiszter tartalma megmarad, ami az első bekapcsoláskor üres, ha nem állítod be megfelelően, hibára vezet.
Köszönöm!
Igen, a ki- bekapcsolás teljes táp, nem RESET. A jelenlegi init sorrend: SPI UART enable RX/TX int - soros ADC (Fosc/64, 20 TAD) SPI init - RTC (ds1305) Timerek ECAN timer interruptban megy az SPI kiküldés a 23S17 felé, 1 msec-enként, és 6 CH adc convert Töprengek a PWRT bekapcsolásán is, késleltesse a PIC indulását kicsit. Roland
Leginkább a változók értékadására koncentrálnék. Lehet nem véletlen , a parsic azzal indít, az összes memória címet mindentől függetlenül töröl, mielőtt bármit csinálna.
Szia! Hamu a fejemre, de nem értem ( Nem nekem szólt?!
Szia!
Mikor ki-bekapcsolod és elindul a program, akkor mennyi ideig tart a kikapcsolt állapot? Nem lehet, hogy a táp puffer kondijai és a rövid kikapcsolt állapot miatt nem is történik reset? Ha jól értem akkor miután az UART-ot inicializálod engedélyezed az UART interruptot. És itt engedélyezed a globális interruptot is? Az UART-ra milyen eszközt kötöttél? Nálam nemrégiben történt egy hasonló eset. Az UART-ot PC-s kommunikációra használtam és mikor a PC nem volt rákötve akkor nem igazán akart elindulni a kütyü, vagy csak néha sokadik próbálkozásra. A hiba az volt, hogy az UART RX lábán se fel, sem pedig lehúzó ellenállás nem volt, így mikor engedélyeztem az UART interruptot a program egyből el is ment lekezelni a megszakítást, s a lebegő RX miatt ez újra és újra lejátszódott, és olyan volt mintha nem is futna a program. Javaslom, hogy egy GPIO-ra tegyél egy LED-et, s kapcsold be a program különböző pontjain (pl megszakításban), hogy lásd meddig jut el a programod. Üdv.: Tibi
Szia!
Jellemzően hosszabb időre van táp nélkül a PIC, miután nem akar elsőre indulni. Min 15-20 perc. A pufferek 2x2200 uF. Tápfesz 5V. Valószínűsítem, hogy az interrupt engedélyezése jó (?) sorrendben lehet, mert egyébként meg jól működik. A soros csak esetlegesen van, PC. Enélkül is elindul. Soros TX,RX vonalon nincs ellenállás! Beteszek egy LED-et és fokozatosan kapcsolom. Sajnos letöltés után nem jelentkezik a lefagyás. Tesztelem. Roland
Kikapcsolás után süsd ki a kondikat és utána kapcsold be. Biztosan nem jól inicializálod a változókat illetve perifériákat és ha valahogy elindul, a nagy kondi miatt sokat kell várni a memória kiürülésére. A sorrenddel kapcsolatban korábban írtam, hogy milyen sorrend kell, ezután leírod a rossz sorrendet és nem vonod le a következtetéseket...
Egyébként indokolatlanul nagy kapacitás a 4400uF! Max. 1000, de legtöbb esetben 470µF elég.
Szia!
Bocsánat, 2x220 µF a tápon a puffer, elírtam... A perifériák initjében (remélem amit leírtál a szerint is, úgy értelmeztem) az vezérelt, hogy mi mire "épül" rá. A timer interrupt elindítása/initje előtt azért van az ADC és SPI init, mert a timerben ezeket olvasom ill. írom. A többi irreleváns - ebből a szempontból - mikor indul el. Ezt nem jól értelmezem? A hozzászólás módosítva: Dec 19, 2014
Kondikat full kisütöttem, >10 MOhm belső ellenállású műszerrel is rájuk mértem, mV
nagyságrend az eredmény. Ezután gond nélkül elindult.
A stabIC bemenetén is 220µF és kimenetén is? Az úgy nagyon nem lesz jó...
Szerintem az a lényeg hogy a globális interruptot csak az init végén engedélyezd.
Ha a PIC reset láb be van kötve és engedélyezve is van, akkor nagyjából mindegy hogy mekkora puffer van a tápon, legfeljebb amíg nem sül ki, addig nem áll le. Persze akkor ha ez más perifériákkal nem okoz ütközést, amelyek előbb elvesztik a tápellátásukat, de azt is le lehet kezelni kis odafigyeléssel.
Igen, be és kimenetén vannak a stab IC-nek a pufferek.
MIért nem lesz így jó? A hozzászólás módosítva: Dec 19, 2014
Kimeneten nem jó. Max néhány mikrofarad lehet.
Ökölszabály, hogy a kimeneten maximum fele akkora lehet mint a bemeneten, de mindig kisebb! Ha a kapcsolásodban nem indokolja semmi sem az ekkora elkó használatát, akkor inkább olyan 1uF...max 22µF értéket használj. Én a gyári ajánlás szerinti diódákat is bele szoktam építeni.
A hozzászólás módosítva: Dec 19, 2014
A stabilizátor IC kimenetére felesleges kondenzátor, max. a lábaihoz közel 100nF, a bemenetéhez közel pedig 330nF (elé mehet, sőt, kell is puffer). Bekapcsoláskor a kimenetére kötött kondenzátor rövidzárként viselkedik...
Stabilizátora válogatja. Sok szereti az 1-2 µF jó minőségű kondenzátort a kimeneten, kevésbé hajlamos gerjedésre vele. Az LM 317 úgy tudom kifejezetten kéri is .
Úgy-úgy! Ráadásul ha valami nagyobbacska fogyasztó van az 5V-on, jó ha van egy kis puffer, hogy ne az IC-t rángassa.
Sziasztok!
Egy PIC-es jegyzetben olvastam a MikroPascal környezetről, hogy: Idézet: „Fontos, hogy ezek a termékek nem hibabiztosak, így ne használjuk őket olyan célokra, ahol a fordítók hibás működése bármilyen kárhoz vezethet” Bővebben: Link. Igaz, ez nem a hivatalos weboldalról van, "csak" egy főiskolai jegyzet, de azért aggodalomra adhat okot. Ez azt jelenti, hogy pl. ipari eszközöket nem biztos hogy érdemes ezzel csinálni? Továbbá, ez igaz lehet pl. az MPLAB, és C fordítójára? Szerk.: mondjuk a C-nél találkoztam már fordítási hibával... A hozzászólás módosítva: Jan 7, 2015
Ez csupán védekezés, nehogy valaki beperelje majd őket, mondván, hogy mekkora nagy kár érte a hibás fordítás miatt.
Azért elsősorban a program írójának kell nagyon odafigyelnie és persze tesztelnie...
Sziasztok!
szeretnék segítséget kérni, a következőt szeretném csinálni, szeretnék több asm fájlt használni, valamint külső header vagy include fájlokat. mik a formai követelményei ennek? az include az működik azokkal nincs baj de ha 2 asm van akkor már nme fordul le bármit is próbálok. olyan válaszokat várok, hogy hova helyezem el a főprogramon belül az includeot vagy hogy lépek át a másik asm be a programon belül. szóval a formai követelmények. előre is köszönöm. *Mod: Az utólagos üdv helyett, használd a shiftgombot a mondatok elején! A hozzászólás módosítva: Jan 10, 2015
Szia!
Azokat az include fájlokat amiben csak szubrutinok vannak, azokat a program végén includeold. Azt nem tudom hogy miért van szükséged két asm fájlra, de ha csak egy programot szedtél ketté akkor szerintem a fő asm fájlodba a szubrutin hívások elé kéne betenni és akkor oda fogja beszúrni az MPLAB a másik asm-ben levő programot.
Megoldás lehet, hogy átnevezed. inc-re, valamint az ott használt változókat CBLOCK -ba rakod cím nélkül . ekkor a fordító automatikusan befordítja az az "include ...." helyétől kezdődően nekem igy gond nélkül működik.
A hozzászólás módosítva: Jan 10, 2015
Köszi a választ, a lényeg, hogy olyan komplex programot írok, hogy az lcd kezelés menne egy asm fájlból, amibe van include az lcd inicializálására,ahogy írtad is a végén működik az include, de ezt már tudtam (bár elég fura). Valamint van egy main.asm amiből át szeretnék lépni az lcd-s asmbe, ha kell.
Láttam már ilyet működni, hogy több asm van, a main.asm lefordul gond nélkül, viszont az lcd.asm-be már egy MOVLW 100-at is hibával fordít. Nyilván valahogy úgy kell formázni, hogy ezt megfelelően fordítsa be. Erre valami ötletetek van esetleg? Az lcd.asm valaha főprogram volt, de megcsináltam úgy, hogy most már "univerzális".
Köszi a választ, szeretném asm.nek megtartani..., de nyilván olyan lesz a végeredmény ami működőképes.
Figyelem: A legújabb MpLabX lecseréli a PICkit3 operációs rendszerét (PicKit 3 3.01 -re), amivel az MpLab 8.xx nem képes működni. Bővebben: Link
Köszönjük a figyelmeztetést!
Nem tudom, más hogy van vele, de én már egy ideje verem a fejem a falba, hogy anno a Microchip kontroller mellett döntöttem. Az MPLabX első bétájától kezdve becsületesen próbálkoztam szinte mindegyik verzióval, de nem sok sikerrel. Valahogy nem nyerte meg a tetszésemet, nehezem tudom számontartani, hogy éppen mi mit csinál a fejlesztőrendszerben. Az MPLab követhető, tiszta megoldás, vannak benne faramuci hibák, következetlenségek, ennek ellenére kézben tartható. Én ellenszenvesnek tartom ezt az agresszív "fejlődést" a Microchip rendszerében. Mai fejjel már biztosan a más kontrollercsaláddal kezdenék. |
Bejelentkezés
Hirdetés |