Fórum témák
» Több friss téma |
HELP!
Megnyitom a View/Watch ablakot, de az"Add Symbol" fül szürke marad, nem tudok hozzáadni saját regisztert. Tud valaki segíteni?
Sziasztok!
Túlfeszültségtől elfüstölt panelt kellene javítani. Pic 16f676-ról hogyan állapítható meg egyszerűen, hogy tönkrement vagy működik? Olvasó, égető nincsen nekem. Forrasztani egy egyszerű próbapanelt?
Hello! Megnézed az oszcillátor kimenetet, van-e rajta jel..
Nem feltétlenül van beprogramozva az oszcillátor kimenet.
Igazából akkor lehet gond, ha a belső osc van kiválasztva, a kavics, vagy RC meg látható. Gondolom én..
Hát, ha csak úgy nem. De még az is lehet, hogy valami feltétel esetén leáll, vagy belső oszcillátorra kapcsol.
Tulajdonképpen az áramfelvétel, és a tápláb feszültségének ellenőrzése, amit meg lehet tenni. Csakhogy az áramfelvétel lehet akár pár µA környékén is - hogy még jobban elbizonytalanodjon a kérdező.
Sziasztok!
Azt szeretném megérdeklődni, hogy ha egy PIC12-esen a program átnyúlik a második memórialapra(ez a rész kezelve van), és miközben ott fut, bekövetkezik egy megszakítás, aminek a futása az első memórialapon van, (sőt a címe is ott található) mi történik? Egyáltalán létre tud-e ilyenkor jönni a megszakítás, és ha igen,lefutás után vissza tud-e menni magától a második lapra? Vagy esetleg erre előre fel kell valahogy készülni, mint az alapprogramnál? Idézet: „Egyáltalán létre tud-e ilyenkor jönni a megszakítás, és ha igen,lefutás után vissza tud-e menni magától a második lapra?” Igen, igen. A megszakításkor a következő utasítás teljes címe a stack -re kerül, a retfie vissza is állítja a teljes címet. Fel kell készülni: A megszakítás elfogadásakor a kontroller a 0x4 címre adja a vezérlést.A megszakítási rutin elején a PCLATH értékét is menteni kell. Ahhoz, hogy a megszakítást kiszolgáló rutin ugrásai jól működjelek, a 0. program lapra kell állítani a PCLATH regisztert. A kiszolgáló rutin végén vissza kell állítani a PCLATH eredeti értékét a visszatérés előtt. Bővebben: Link
Köszönöm.
Nagyjából értem. de lenne még egy ravasz kérdésem. Azt tervezem, hogy két teljesen külön program lesz a PIC-ben. Az egyik bemenet jelöli ki, melyik program fusson. Mindkettőhöz saját megszakítási rutin tartozik. Mivel a két program már nem fér el egy lapon, ezért úgy gondoltam, hogy az egyiket eleve másik lapra teszem. Így képzeltem el a dolgot:
Légyszíves írd meg, hogy ez így működőképes-e! Köszönöm.
- Nyomkövetéshez a 0. címre kell egy nop.
- A megszakítás belépésénél nem árt a PCLATH -t a 0. lapra állítani.
- Már csak arra kell vigyázni, hogy a PCLATH 6..3 bitjei változatlanok maradjanak a Program1 és Program2 futása alatt. A PCLATH módosítása helyett a brw utasítást használni. A hozzászólás módosítva: Márc 25, 2020
Sziasztok!
Régebben volt egy hobbiprojektem, aminek a rajzát átalakítottam picit, ennek az ellenőrzésében szeretnék segítséget kérni. A mostani rajzom alapján készült eszközt a következő szerint szeretném működtetni. A PIC-re három nyomógomb lesz kötve. Az egyik megnyomását követően a kimenetnek beállított ötös láb kapcsolja Q1 tranzisztoron keresztül Q2 FET-et. A terhelés az elvi rajzon egy villanymotor, a valóságban egy mp3 lejátszó lesz. A cél az, hogy az mp3 lejátszó X másodpercig szóljon, majd kikapcsoljon. A másik kettő gomb feladata lesz a szoftverben az X érték növelése és csökkentése. A kérdéseim a következők: -követtem el hibát a rajzon, amit esetleg nem vettem észre? -a célnak megfelelő a rajzom, elkezdhetem a programot megcsinálni szerintetek? -6-os láb és a gomb közé kell megszakítást beiktatni, hogy ha rádugom a PICKIT2-őt, és programozom, akkor az R8-on keresztüli tápfeszültség ne okozzon problémát, vagy ez szoftveresen kezelhető a PIC-ben? Köszönöm előre is a segítséget és a tanácsokat! Üdv: spgabor
Sziasztok. Segítségre lenne szükségem. Készitettem 1 4x4x4 led kockát. Nagyon király , mindenféle animációt lehet vele csinálni. 1 Nagy baj van csak , elfogyott a 2k memória. PIC16F877A-t használok.
Assembly-ben , több forráskódból raktam össze. Lényeg a lényeg, hogy tudnám a következő memória lapra betöltetni a további animációkat? Készíttettem 1 excel-t amibe csak bepipálom hogy melyik led(ek) világítsanak, és legenerálja az animáció forráskódját egyenként. Az animációk hívását call utasítással oldottam meg, igy egy efekt töbször végig futhat vagy akár összevissza is csak változtatni kell a sorrenden. Tudom hogy ez a megoldás helypazarló lehet, de igy is kb 15 animációt beletudtam szuszakolni. A kérdésem a kérdésem Olvasgattam a PCLATH utasítást de azzal csak azt érem el hogy átlépek a másik memória területre , de amíg abban nincs semmi adat addig nem tudok call-al hivni az adatokat. Biztos lesz köztetek olyan aki a kis újából kirázza a megoldást. Várom segítőkész ötleteiteket. Természetesen nem vetemedtem volna segítséget kérni ha itt megtaláltam volna a megoldást. )))
Látni kellene, hogyan van megoldva az animációk futtatása.
MOVLW, MOVWF megoldással , megjelenitk 1 állapotot kiküldőm a portokra, átunna a következő álapot stb
itt a forráskód . meg egy vidi. a lényeg hogy több animáció menjen bele, a többi memória kihasználásával
Úgy látom, hogy a KEP_xx rutinból van nagyon nagyon sok. ezeket szeretnéd folytatni a többi program lapon. Ezek a rutinok csak az Output eljárást híják. Azt javaslom, hogy a call KEP_xx hívásokat egészítsd ki:
-re. A többi rutin legyen a 0. programlapon. Ahhoz, hogy a KEP_xx rutinok ezeket a rutinokat hívni tudja, a első hívás előtt egy
utasítással a 0. lapot kell kiválasztania PCLATH regiszterben. A 0. programlapon így lesz hely az animáció fő ciklusának is. A hozzászólás módosítva: Márc 27, 2020
Kiproszáltam de igy is ahogy eléri a 2k-t kiakad.
A forditó egy csomó ilyent ir ki Message[306] F:\PIC_PROGRAMOK\4X4X4_20200320.ASM 2597 : Crossing page boundary -- ensure page bits are set. Message[306] F:\PIC_PROGRAMOK\4X4X4_20200320.ASM 2599 : Crossing page boundary -- ensure page bits are set.
Én abból indulnék ki, hogy mennyi adat kell egy animációs fázis tárolásához? 64 LED-ed van, tehát ennyi bit. A program memória egy szava 14 bites, tehát 5 szóba (5*14=70) elfér egy fázis. Minden fázist ugyanannyi ideig mutatsz, tehát egy animáció összes információja annyi, hogy hány fázisa van, és a fázisai mik.
Ha átírod a programot úgy, hogy a fázisokat nyers adatként tárolod, akkor sokszorosa fog beférni ugyanabba a program ROM-ba.
Mi akad ki? Mit írt ki?
Azt írta, hogy a vezérlés átmegy a 2k-s programlap határon. De hát pontosan ezt akartad. Az
letiltja ezen üzenetek kiírását. Állítsd be az MpLab Sim -et debuggernek, tegyél töréspontot a KEP_0 cimke utáni utasításra, nyisd meg a Watch ablakot és vedd fel a PCLATH regisztert. Fordítsd újra a kódot, indítsd el. Megáll a KEP_0 utáni törésponton. Innen lépésben végrehajtva a programot leellenőrizhető, hogy a
sor a 0. programlapon jó helyre ugrik, a rutint helyesen hajtja végre és visszatér a 1. lapra. A KEP_0 végén levő return jó helyre (a 0. lapra, a call KEP_0 utáni utasításra) tér vissza. Sőt a KEP_16 -ot a 2. lapra (0x1000 főlé) tettem és ott is jól működik. Mivel a KEP_x nem tartalmaz ugrást, megengedhető, hogy egy "KEP" átlógjon a programlap határán.
Oksi. thx. megnézem. most értem gép közelbe. Hajnalig csak összehozom még egyszer köszi!
Szuperül müxik. De a KEP_16-tal még ha adat sem volt benne, hibát irt a fordító, A névvel volt gondja
Átírtam KEP_17-re azzal ment. Mégegyszer köszi
Sokat tanultam, most már jöhet az 5x5x5-ös
Sziasztok.
Tudna valaki segíteni hogy a PIC16F877 esetében a PORTE2 őt hogyan lehet "mezei" I/O nak használni? Mindent kipróbáltam már, de valami periféria miatt (szerintem) nem működik. Az összes többi port működik csak a PORTE2 nem, sem bemenetként sem kimenetként. Az összes I/O nak konfigolható lábat sikerült kimenetként beállítani, tesztelésnek írtam egy futófényt amin chekkolom hogy mennek e a kimenetek. Minden megy, a PORTE0 és PORTE1 is, viszont a PORTE2 az nem. És ha megfeszülök se jövök rá miért nem. Tudnátok segíteni? A PORTD, PORTE nek az A/D hoz is köze van, de azt beállítottam minden "láb I/O" ra az ADCON1 regiszterben. Viszont ha jól láttam akkor az SSP hez is köze van a PORTE nek, na szerintem ott kéne valamit átállítani de nem jövök rá mit... És mitől megy a PORTE0 és 1, a PORTE2 meg miért nem? A hozzászólás módosítva: Márc 29, 2020
Hali!
Nem lehet hogy zárlatban van? Csinálj egy lassú portbillegtetést, és mérd a felvett áramot. Ha ingadozik, zárlat lesz, mellette pont tápok vannak...
Nem hiszem, legalábbis remelem. Ez tulajdonkeppen egy bemenet lesz, egy nyomogomb van rajta es egy 82k felhuzo ellenallas VDD re. A nyomogombot mertem nem ultettem e el 90 fokkal mert ugy pont zarlatban lenne VSS re mert ket szemkozti laba azonos potencialon van abban a helyzetben. De nincs zarlatban, csak eppen a PORTE2 on 0V van folyamatosan. Ha bemenenek konfigolom akkor is, pedig akkor a 82k n keresztul VDD n kene legyen. De megmérem ma meg egyszer. A 10 es lab a PORTE2 ( DIL40 tok) mellette a 11 az a VDD, igy max tapon lenne ha zarlatos volna, a 9 es lab meg valami portlab, akkor azzal egyutt mukodne, vagy az se mukodne . De minden port el csak a PORTE2 nem. Köszi.
A hozzászólás módosítva: Márc 29, 2020
A PSPMODE (TRISE4) bit be van állítva?
|
Bejelentkezés
Hirdetés |