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   1112 / 1210
(#) antalegri hozzászólása Márc 25, 2020 /
 
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?
(#) amperjano hozzászólása Márc 25, 2020 /
 
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?
(#) proli007 válasza amperjano hozzászólására (») Márc 25, 2020 /
 
Hello! Megnézed az oszcillátor kimenetet, van-e rajta jel..
(#) nedudgi válasza proli007 hozzászólására (») Márc 25, 2020 /
 
Nem feltétlenül van beprogramozva az oszcillátor kimenet.
(#) proli007 válasza nedudgi hozzászólására (») Márc 25, 2020 /
 
Igazából akkor lehet gond, ha a belső osc van kiválasztva, a kavics, vagy RC meg látható. Gondolom én..
(#) nedudgi válasza proli007 hozzászólására (») Márc 25, 2020 / 1
 
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ő.
(#) Pali79 válasza antalegri hozzászólására (») Márc 25, 2020 /
 
Debug módban fordítottad?
(#) antalegri válasza Pali79 hozzászólására (») Márc 25, 2020 /
 
Igen, próbáltam úgy is.
(#) sonajkniz hozzászólása Márc 25, 2020 /
 
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?
(#) Hp41C válasza sonajkniz hozzászólására (») Márc 25, 2020 / 1
 
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
(#) sonajkniz válasza Hp41C hozzászólására (») Márc 25, 2020 /
 
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:
  1. LIST    P=PIC12F1840    ; lista megadása
  2.         RADIX   hex             ; alapértelmezet számrendszer megadása
  3.  
  4. #include "p12F1840.inc"
  5.  
  6.  __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _MCLRE_OFF
  7.  
  8.  __CONFIG _CONFIG2, _LVP_OFF
  9.  
  10.     CBLOCK  0x0070
  11.     VALTOZO
  12.     ENDC
  13.    
  14.    
  15.     org     0x0000              ; program memória kezd? címe
  16.     GOTO    INICIALIZALAS
  17.     nop
  18.     org     0X0004
  19.     MOVLB   0x0
  20.     BTFSS   PORTA,3
  21.     GOTO    MEGSZAKITAS_1
  22.     PAGESEL 0x8
  23.     GOTO    MEGSZAKITAS_2
  24.     nop
  25.     org     0x0010
  26.     nop
  27.    
  28. INICIALIZALAS
  29.     ;Itt inicializál
  30.    
  31. PROGRAM_1
  32.     MOVLB   0x0
  33.     BTFSS   PORTA,3
  34.     GOTO    MAIN
  35.     PAGESEL 0x8
  36.     GOTO    PROGRAM_2
  37. MAIN    
  38.     ;Itt van az első program
  39.    
  40.     ;Program vége
  41.     GOTO    PROGRAM_1
  42.     ;---
  43. MEGSZAKITAS_1    
  44.     ;1-es programhoz tartozó megszakítási rutin
  45.     RETFIE
  46. ;----------------------    
  47.     org     0x800
  48. PROGRAM_2
  49.     MOVLB   0x0
  50.     BTFSS   PORTA,3
  51.     GOTO    MAIN_2
  52.     PAGESEL 0x0
  53.     GOTO    PROGRAM_1
  54. MAIN_2  
  55.     ;Itt van az első program
  56.    
  57.     ;Program vége
  58.     GOTO    PROGRAM_2
  59.     ;---
  60. MEGSZAKITAS_2    
  61.     ;2-es programhoz tartozó megszakítási rutin
  62.     RETFIE

Légyszíves írd meg, hogy ez így működőképes-e!
Köszönöm.
(#) Hp41C válasza sonajkniz hozzászólására (») Márc 25, 2020 / 1
 
- 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.
  1. org     0x0000               ; program memória kezd? címe
  2.     nop
  3.     GOTO    INICIALIZALAS
  4.  
  5.     org     0X0004
  6.     movlp 0x0
  7.     MOVLB   0x0
  8.     BTFSS   PORTA,3
  9.     GOTO    MEGSZAKITAS_1
  10.     PAGESEL 0x8
  11.     GOTO    MEGSZAKITAS_2

- 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
(#) spgabor hozzászólása 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
(#) Szemmy hozzászólása Márc 27, 2020 /
 
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. )))

20200327.jpg
    
(#) Hp41C válasza Szemmy hozzászólására (») Márc 27, 2020 /
 
Látni kellene, hogyan van megoldva az animációk futtatása.
(#) Szemmy hozzászólása Márc 27, 2020 /
 
MOVLW, MOVWF megoldással , megjelenitk 1 állapotot kiküldőm a portokra, átunna a következő álapot stb
(#) Hp41C válasza Szemmy hozzászólására (») Márc 27, 2020 /
 
Melyik rutin hol lenne a memóriában?
(#) Szemmy hozzászólása Márc 27, 2020 /
 
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
(#) Hp41C válasza Szemmy hozzászólására (») Márc 27, 2020 /
 
Ú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:
  1. pagesel  KEP_xx
  2. call KEP_xx

-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
  1. pagesel Output

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
(#) Szemmy hozzászólása 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.
(#) asch válasza Szemmy hozzászólására (») Márc 27, 2020 /
 
É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.
(#) Hp41C válasza Szemmy hozzászólására (») Márc 27, 2020 /
 
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
  1. errorlevel -306

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
  1. call   Output

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.
(#) Szemmy hozzászólása Márc 27, 2020 /
 
Oksi. thx. megnézem. most értem gép közelbe. Hajnalig csak összehozom még egyszer köszi!
(#) Szemmy hozzászólása Márc 27, 2020 /
 
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
(#) Szemmy hozzászólása Márc 27, 2020 /
 
Sokat tanultam, most már jöhet az 5x5x5-ös
(#) menyus hozzászólása Márc 29, 2020 /
 
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
(#) pipi válasza menyus hozzászólására (») 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...
(#) menyus válasza pipi hozzászólására (») Márc 29, 2020 /
 
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
(#) nedudgi válasza menyus hozzászólására (») Márc 29, 2020 /
 
A PSPMODE (TRISE4) bit be van állítva?
(#) menyus válasza nedudgi hozzászólására (») Márc 29, 2020 /
 
Nincs, minden 0 ban van.
Következő: »»   1112 / 1210
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