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   277 / 1210
(#) n_yálastrubadúr válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
Félre értelmeztelek. Tehát semmit sem sikerül megtartani? Azaz vagy momentary vagy toggle módban megmarad?
(#) mhatalyak válasza n_yálastrubadúr hozzászólására (») Júl 6, 2012 /
 
Igen. Biztosan hardwares hibája lehet. Nem érezheti a PIC, hogy mi van a kimenetén? Vagy esetleg, hogy 38Khz es vevő helyett 36Khz-es van benne? De akkor szerintem nem is értené a jeleket.
(#) n_yálastrubadúr válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
Akkor mit is szeretnél? Nem hiszem a led megfelel a vivő sem hinném hogy annyira kritikus. De ha kapcsol nem értem mi a baj.
(#) vicsys válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
Csak akkor fog tovább lépni, ha érvényes (12 bites) kódot kap. A saját adójával próbálod?
(#) mhatalyak válasza n_yálastrubadúr hozzászólására (») Júl 6, 2012 /
 
Csak annyit, hogy mi miatt lehet az, hogy egyszerűen nem lehet "végig léptetni" a programozást. Mondjuk légszerelet állapotban van az egész össze dobálva, mert csak ki akartam próbálni, hogy jó lesz-e de nem tudom mi oka lehet, mert a távirányító 3 gombjára rá tudom tanítani. Le vannak írva a lépések angolul és a 6. lépésnél nem jut tovább.
(#) mhatalyak válasza vicsys hozzászólására (») Júl 6, 2012 /
 
Ja értem, nem egy Sony TV távirányítójával próbáltam. akkor ez lesz a probléma. Nem baj, meg építem az adóját, azt meg rá tanítom a távirányítómra.
(#) vicsys válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
Figyelj, mert jó lehet a sony-val is. Ha jól emlékszem 9 és 12bites rendszere van. Ha van otthon más távid, azzal is kipróbálhatod...
(#) mhatalyak válasza vicsys hozzászólására (») Júl 6, 2012 /
 
Egy univerzális silvecrest távirányítóm van még, ebben van 1x valahány különböző sony TV-hez végig nézegettem, el fogadja mindegyiknek a kódját, mert a led-ek ki alszanak, csak a kimenetet nem tudom beállítani. Viszont más távirányítóval nem is lép tovább. Ja és halványodik a kijelző háttér világítása, amikor jelet ad és a sony kódjával sokkal gyorsabban vibrál, mint a többi márkával. az 1. kimenetre tettem tranyát, meg relét rajz szerint ellenállással stb., de akkor nem is érzékelte a távirányítót, ebből gondoltam azt, hogy nem a távirányító hibája miatt van, még szenvedek vele egy kicsit, aztán össze rakom az adóját egyszer.
(#) Pepebá válasza icserny hozzászólására (») Júl 6, 2012 /
 
Hali!
Idézet:
„Ha a soros portot nem akarod matatni a magasságos printf, vprinf stb függvényekkel, hanem beéred az _usart_putc(c) és _usart_getc() függvényekkel, akkor az ütközéseket egyszerűen meg lehet szünteni, ha az ...usart.h-ból kiirtod az alábbi sorokat:....”


Sikerült összehozni, tanácsaid alapján egy projekten belül az USB és USART egyidejű működését. Az USART hurok teszt működik. PC-röl USB-n küldött adat a hurkolt USART-n (RX/TX) USB-n keresztül vissza érkezik a PC-re. A blokkoló típusú _usart_putc(c) függvényt átalakítottam, hogy üres input buffer esetén ne várakozzon. (fusson tovább a program). Remélem nem követtem el hibát, úgy tűnik működik rendesen. Az USARTDeviceTasks() hívását a főprogram alacsony prioritású megszakítás kiszolgálásába tettem.
Még egyszer köszönöm a segítséget.
Üdv.
(#) n_yálastrubadúr hozzászólása Júl 6, 2012 /
 
Az elég gyanúsan szerintem a távirányító gond lehet. Gyorsabban azért villog mert a Sony sokkal töb bit-tel operál, vagy és nagyobb a vivő fekrevenciája. Én ezt adó vevő szinten építettem meg, teljesen jól működött, egy 100 forintos nagyságú panelen van mind2.
(#) SzervízMacska válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
[Off]Szia. Ha valamit másolsz, aminek a működéséről gőzöd sincs, illik hűen követni a rajzot. Az utolsó ellenállásig bezárólag. De ennek úgy érzem, amúgy sem sok köze van a pic kezdőknek témához...
(#) n_yálastrubadúr hozzászólása Júl 6, 2012 /
 
Segítség!

Még a PCLATH írása gondom. Hogyan lehetne a főprogramban címezni a nevezett regiszetert, hogy a PCL-hez adáskor ne omoljon össze a program? a tábla kezdőpontját a PCLTH regiszerbe kellene írni? Ha igen hogyan?
(#) mhatalyak válasza n_yálastrubadúr hozzászólására (») Júl 6, 2012 /
 
Értem! Köszönöm, akkor meg építem az adóját is!
(#) kissi válasza n_yálastrubadúr hozzászólására (») Júl 6, 2012 /
 
Szia!

A táblázatodra remélem vigyáztál, nem nyúlik át a laphatáron vagy betartod a HP41C kolléga által leírtakat!
A PCLATH kezelése:

  1. lap_0
  2.                    utasítás_01
  3.                    utasítás_02
  4.  
  5.                    GOTO v. CALL cimke (1-es lap !) <-- ez    
  6.                                                                      gond !
  7. lap_1
  8.                    utasítás_11
  9. cimke
  10.                    utasítás_12
  11.  
  12. kivédése:
  13.                   A GOTO, CALL elé a következőt írd be:
  14.                   PAGESEL (cimke) --> ez a makró beállítja  a PCLATH-ot !


Vigyázz, mert visszaugrás után a PCLATH tartalma marad, tehát az újabb ugró utasítás előtt módosítani kell!
Még annyi, hogy mivel a RETURN a teljes címet használja, ezért a CALL utám mindig visszatalál!

Steve
(#) n_yálastrubadúr válasza kissi hozzászólására (») Júl 6, 2012 /
 
Elküldöm a programot, ha megnéznéd jó lenne. Nem tudom mennyire érthető vagy látszika gond.

clock_uv.asm
    
(#) n_yálastrubadúr hozzászólása Júl 7, 2012 /
 
Ebben a kódban és sok hasonlóban sem tudom mi a highCounTable amit a pclath-ba kellene tenni. a file gondolom az én saját értékem.?
  1. ; (Mid-Range Devices)
  2. CountBits:
  3.         movlw   high CountTable ; Set PCLATH for table
  4.         movwf   PCLATH
  5.         movf    FILE,W          ; Use byte value to goto to the
  6.         movwf   PCL             ; ..bit count value
(#) n_yálastrubadúr hozzászólása Júl 7, 2012 /
 
Leírom mennyit értek. Ha 256 "sornál több van és úgy adok érteket a pcl-hez akkor változik a pch, amit nyomon lehet követni a pclathban, amit lehet írni és olvasni. Nem értem azt sem a Hp41C által használt táblátzat kezelésben a táblázat dt utáni 6 értéket, hogy azok mit adnak.Én csak a retlw -s visszatérésekkel foglalkoztam.
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Júl 7, 2012 /
 
  1. table
  2.     movwf    index
  3.     movlw    high(num)
  4.     movwf    PCLATH
  5.     mov      findex,f
  6.     addwf    PCL,w
  7.     btfsc    STATUS,C
  8.     incf     PCLATH,f
  9.     movwf    PCL
  10.  
  11. num
  12.     retlw    b'11101101';0
  13.     retlw    b'00001100';1
  14.     retlw    b'10111011';2


A dt direktíva retlw utasításokat fordít...
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Júl 7, 2012 /
 
Az index az ugrás értéke? És a num?
(#) n_yálastrubadúr hozzászólása Júl 7, 2012 /
 
Az is zavaros a példaprogramban, hogy az indexet végtelen ciklusban a főprogramban növelni kell? Aztán Xorolni a w-t? és ha 0 törölni az indexet?? jááj nagyon nagy a sötétség.
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Júl 7, 2012 /
 
Szia!
Az index egy átmeneti változó, amibe a tábla indexét mentjük el ideiglenesen: Az indexet a W regiszterben kapja az eljárás, de a W kell a PCLATH beállításához. Ha ütközik a neve nyugodtan nevezd át.
A addwf PCL,f nem kezeli a 7. és 8 bitek közötti átvitelt, így ezt programból kell megcsinálni.
- Beállítjuk a táblázat kezdőcímének felső byte-ját a PCLATH -ba. Elvégezzük az összeadást, ha átvitel lenne a felső byteba, növeljük a PCLATH értékét, aztán lehet a táblázat indexedik elemére ugrani.
A num egy címke, a táblázat 0. elemének címe.
Sajnos a kapkodásban elírtam... Bocsánat.

  1. table
  2.     movwf    index
  3.     movlw    high(num)
  4.     movwf    PCLATH
  5.     movlw    low(num)
  6.     addwf    findex,w
  7.     btfsc    STATUS,C
  8.     incf     PCLATH,f
  9.     movwf    PCL
  10.  
  11. num
  12.     retlw    b'11101101';0
  13.     retlw    b'00001100';1
  14.     retlw    b'10111011';2
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Júl 7, 2012 /
 
Tehát ha ennyi a programom,azaz beteszem ezt a table címke elé.

  1. movlw.5
  2. call table
  3. movwfPORTB
  4. goto$-3


Akkor mindig az 5. retlw-re ugrik? És az alsó és a felső byte az a programban elhelyezett táblázatom tartomonyának címe? Amit honnan látok, hogy mi az értéke. Bocsi, biztosan egyszerű lesz ha valamikor megértem.
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Júl 7, 2012 /
 
Igen. A low() és a high() egy-egy beépített függvény, ami az argumentum alacsony ill. magas byte-ját adja vissza. Neked nem kell látnod a num értékét, a fordító számolja ki. Egyébként állítsd be a MpLab SIM -et debuggernek és lépésenként végrehajthatod a kódodat. Ha a megszakítási rutinban a PCLATH regiszter értékét meg kell változtatnod, ne felejtsd el kiszolgáló rutin elején menteni, kilépés előtt visszaállítani.
(#) kissi válasza n_yálastrubadúr hozzászólására (») Júl 7, 2012 /
 
Szia!
Idézet:
„És az alsó és a felső byte az a programban elhelyezett táblázatom tartomonyának címe? Amit honnan látok, hogy mi az értéke.”

Ezzel a módszerrel a fordító behelyettesíti, erre szolgál a low és high direktíva, jól gondoltad. Ha Te is megakarod tudni, akkor az MPLAB View menüpontjában nézd meg a Program memóriát és ott láthatod, hogy melyik címen mi van letárolva, azaz megkeresheted a táblázatod címét is!

Nagyon ajánlom Neked a szimulátor használatát, mert akkor soronként futtatva láthatod, hogy mit csinálnak az utasítások a PCLATH és PCL regiszterekkel ( szerintem ez a legjobb módja annak, hogy megértsd!) !

Ha kell még segítség, írj, úgy látom HP41C kolléga már adott jó támpontokat!

Steve

u.i. Most látom, hogy már kaptál választ!
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Júl 7, 2012 /
 
El van a pclath mentve. A high és a low -ot az Mplab 8.84 nem értelmezi ezeket a beépítet fügvényeket. Missing argument(s)
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Júl 7, 2012 /
 
Nem léteszik... Már ősidők óta használom. Ilyen formában kell használi: low(num) vagy high(num). Sőt 18F -ekhez van egy harmadik, az upper()...

pl. sublw low(cimke1) - low(cimke2) + high(address >> 2)

Missing argument - hiányzó argumentum...
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Júl 7, 2012 /
 
Oké! A numot nem írtam , most megy de láthatóan vibrál a kijelzés. Ha megszakítás is van, akkor meg mégjobban, szinte nem is látszik, pedig el van mentve a pclath.

  1. bcfINTCON,T0IF
  2.  
  3.  
  4.  
  5. movwfw_save
  6. swapfw_save,f
  7.  
  8. swapfSTATUS,w
  9. movwfstatus_save
  10.  
  11. movfwFSR
  12. movwffsr_s
  13. movfwPCLATH
  14. movwfpclath_s


  1. movfwfsr_s
  2. movwfFSR
  3. movfwpclath_s
  4. movwfPCLATH
  5.  
  6. swapfstatus_save,w
  7. movwfSTATUS
  8.  
  9. swapfw_save,w
(#) kiskata hozzászólása Júl 7, 2012 /
 
Kedves hozzáértők...
Ha két PIC RX és TX lábait összekötöm keresztben MAX232 nélkül akkor kommunikálniuk kell egymással?
Hardveresen működnie kell?
(#) n_yálastrubadúr hozzászólása Júl 7, 2012 /
 
Azt vettem észre hogy bizonyos pontokon elhelyezett nop utasítás működőképessé teszi a programot. Van valami várakozási idő ebben a rutinban, amit jobb ha kivárok? a nop utasítások a table rutin előtt van..
(#) Hp41C válasza kiskata hozzászólására (») Júl 7, 2012 /
 
Igen. Ha a két pic tápfeszültsége eltér vagy az egyik tápja kikapcsolható, akkor kell valami illesztés is.
Következő: »»   277 / 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