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   169 / 1211
(#) n_yálastrubadúr válasza kaqkk hozzászólására (») Nov 9, 2011 /
 
Az mclr láb ki van kapcsolva, és hameg a Pickit2- programban bepipálom ezen beállítás mellett a az mclr ablakot akkor meg teljesen megáll.
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
Látom... 0XF0 az FRC oszcillátort jelenti:
Idézet:
„5.1 Analog-to-Digital Conversion
An ADC conversion may not complete under these conditions:
1. When FOSC is greater than 8 MHz and it is the clock source used for the ADC converter.
2. The ADC is operating from its dedicated internal FRC oscillator and the device is not in Sleep mode (any FOSC frequency). When this occurs, the ADC Interrupt Flag (ADIF) does not get set, the GO/DONE bit does not get cleared, and the conversion result does not get loaded into the ADRESH and ADRESL result registers.”

Az A4 reviziót már nem érinit a hiba...

MCLR: Ha a PICKit2 -n kipipálod, akkor a VPP / MCLR vonal alacsony lesz. Ha erre a kontroller megáll, akkor ellentmondás van a MCLRE_OFF konfigurációs beállítással...
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
A LVP mód engedélyezve van? Ekkor nem engedi letiltani a MCLR funkciót...
(#) kaqkk válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
Nem egy malomban őrlünk ! Én a "hardverről" beszélek te szoftverről . Nézd meg a panelon a felhúzóellenállást .
(#) El_Pinyo válasza n_yálastrubadúr hozzászólására (») Nov 9, 2011 /
 
A Configuration Word 2-ben levő LVP (alacsony feszültségű programozási mód) bitet törölni kell, tehát LVP_OFF, vagy hasonló (régebbi típusoknál így volt jelölve).
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 9, 2011 /
 
a konfigban nincs LVP_OFF, ezek szerint az alap beállítás is xar. Máskülönben jótudni az mclr lábra vonatkozóan hogy ha pipa be akkor lacsony szinten van. > De ezzel a konfiggal használom és az mclr pipára kikapcsol.
(#) n_yálastrubadúr válasza kaqkk hozzászólására (») Nov 9, 2011 /
 
Igen fizikailag is ottvan az ellenálás mert majdan bekapcsológomb lesz ha az a temérdek sötétség egy kis fényt hoz ezzela pic-kel kapcsolatban.
(#) PLaci válasza Hp41C hozzászólására (») Nov 9, 2011 /
 
Kiváló!
Pont ez az amire nekem szükségem van. Én még egy 100nF-os kondit gondoltam az RA.2 kimenet és a föld közé. Nagyon szépen köszi a segítséget! Akkor tervezem a panelt. Sajnos nem volt lehetőségem próbapanelen ki próbálni ezért kérdeztem
(#) Zserigta hozzászólása Nov 9, 2011 /
 
Sziasztok.

Egy egyszerű kérdéssel fordulnék hozzátok.

Miért lehet az, hogy ADC - potméter esetén 256-os felbontásban kb 2-3 egységet ugrál folyton, de van, hogy akár 12 egységet is ugrik egy pillanatra a mért érték?
Mind ezt alap mozdítatlan helyzetben.

(USB által meghajtott PIC18F4550 esetében, bár ez lehet, hogy lényegtelen.)

Próbáltam más potmétereket is, a helyzet változatlan.

Ezt, hogy lehetne hardveresen vagy szoftveresen finomítani?

Válaszokat előre is köszönöm.
(#) mate_x válasza Zserigta hozzászólására (») Nov 9, 2011 /
 
Milyen referencia feszültséget használsz?
Próbáld meg, hogy a tápra teszel egy nagyobb szűrő elkót.

Üdv, mate_x
(#) Zserigta válasza mate_x hozzászólására (») Nov 9, 2011 /
 
Idézet:
„Milyen referencia feszültséget használsz?”

Az USB-t, amit az kiad, 5V.
Idézet:
„Próbáld meg, hogy a tápra teszel egy nagyobb szűrő elkót.”

A 'táp'-on 100nF kondi van.
Rakjak nagyobbat?
De kb mekkorát?
470nf az szerinted sok lenne már?? (Csak mert az a következő lépcső az itthon találhatóak közül ennyi.
(#) mate_x válasza Zserigta hozzászólására (») Nov 9, 2011 /
 
Egy próbát mindenképpen megér, de akár 100 mikrofarádosat is tehetsz, ha az nem szűri meg rendesen, akkor nem itt lesz a baj.
(#) Zserigta válasza mate_x hozzászólására (») Nov 9, 2011 /
 
Kipróbáltam a 470nF-es kondival. Az eredmény teljesen ugyan az.
Szóval tényleg más lehet a probléma.

Esetleg valami más ötlet?
(#) icserny válasza Zserigta hozzászólására (») Nov 9, 2011 /
 
- Lehet próbálkozni a bemenet (a potméter csúszka) szűrésével.
- Meg lehet próbálni, hogy hosszabb időt vársz a csatorna kiválasztása és a konverzió elindítása között.
- Végezhetsz sok mérést, melyeknek az átlagát veszed. Erre találsz példát a honlapomon is.
(#) Zserigta válasza icserny hozzászólására (») Nov 9, 2011 /
 
Köszönöm szépen.
Végig fogom próbálni az általad említett lehetőségeket.

Viszont egy kérdés felmerült időközbe bennem.

Van egy MIDI vezérlő billentyűzetem. Van rajta pár potméter.
A potmétereket 128 egységben érzékeli.
Viszont azt olyan stabilan, hogy az nem igaz.
Ha pl 95-re tekerem, akkor az 100%, hogy akárhogy próbálom finoman küszöb értékre tekerni, az akkor is annyi marad, amennyire tekerve lett.

Szóval a felől érdeklődnék, hogy te, vagy akár más, tudja e annak módját, hogy midi vezérlők esetében a potméter pontosságát hogyan oldják meg ennyire jóra?
(#) icserny válasza Zserigta hozzászólására (») Nov 9, 2011 /
 
Kapcsolási rajz nélkül honnan lehetne bármit is tudni? Még az is lehet, hogy digitális potméterek...
(#) Zserigta válasza icserny hozzászólására (») Nov 9, 2011 /
 
Azt nem tudom milyen a digitális potméter, de pl a pedálban a potméter teljesen úgy néz ki, mint ami a képen van. 20Kohm-os egyfordulatú szén potméter.

Kapcsolási rajzot nem tudok sajnos, de olyan MIDI vezérlőt még nem láttam, aminél nem lett volna legalább közel ilyen pontos egy potméter érzékelése.

Esetleg valaki valami ötlet, hogy mi szerint keressek rá neten?
Mert még elindulni sem tudok ezen a téren.
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
Szia. Elolvastam, ezek rendben vannak. 4mhzen- megy az osc. De viszont ír valamit a TRIS regiszterekről. De lehet hogy csak bemenetre kell állítani viszont a példában az ANSELA regiszterrel is foglalkozik. Amit csak félig értek tehát egyszer meg kell mondani hogy bemnet legyen majd azt is hogy milyen? Mellesleg én megpróbáltam megmondani neki ezt is NEM MEGY!
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Na most tényleg nemértem. > de tuti az mclr láb baxakodik. mert az mclr_off és az lvp is off. De ha megy és az mclr- en lévő kapcsolót lehúzom földre kikapcsol, amit ha kedve tartja bármikor megtesz. Mintha ingadozna az órajel. A kiírt számok a multiplexelt kijelzőn szétcsúsznak aztán megáll. Tényleg teli a tököm vele. SEGÍTSÉG !
-Mplab 8.50
-Pickit2 - a legújabb dattal-
- a pic F-es ,de csak 3V vagy alatta programoz különben elveszti. Ez normális?
- A konfigban kikapcsolva az mclr és az lvp...
Mi az isten?
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Lehet hogy a panel terv a rossz? Ettől megállhat az osc?
Van még rajta egy dual op amp meg annak egy negatív fesz gyártó 7660.
(#) Poostmaster válasza Poostmaster hozzászólására (») Nov 10, 2011 /
 
Sziasztok.
Megint elakadtam az órával. Azt szeretném megoldani, hogy az RB-re kötött gombokkal be tudjam állítani. Ehhez az RB megszakítását kellene igénybe vennem. Leírom, hogy hogyan akartam megcsinálni:
- Beállítom az RB-t digitális benemetre (ANSELH)
- Beállítom a TRISB-t '00000111' (3 gomb)
- Beállítom az IOCB-t ugyanerre
- indítom a megszakítást: BSF RBIE, PEIE, GIE sorrendben.
A megszakítás rutinban pedig így választom ki:
  1. ORG 0X04
  2.  
  3. MOVWF WSAVE
  4. SWAPF WSAVE,F
  5. SWAPF STATUS,W
  6. MOVWF SSAVE
  7.  
  8. BTFSS INTCON,RBIF; Gomb megnyomás váltotta ki az IR-t?
  9. GOTO INT_LOAD; Kilép a megszakításból
  10. GOTO S_BEALLIT; Ugrás a gomb lekezelésére
  11. BTFSS PIR1,TMR2IF; Számláló túlcsordulás váltotta ki az IR-t?
  12. GOTO INT_LOAD
  13. BCF PIR1,TMR2IF
  14.  
  15. S_ORA_SZAMOL

Kihagytam valamit? Mert így nem működik. A másik kérdés, hogy ha az egyik megszakítást kezelem le éppen, akkor a másik tiltva van, vagy nekem kell arról gondoskodnom, hogy az ne zavarja meg az éppen folyó munkát. A 887-es ugye nem prioritásos megszakítással rendelkezik.
Tehát, amíg a gombnyomást kezelem, addig a TMR2IF ugyanúgy átválthat?
(#) Hp41C válasza Poostmaster hozzászólására (») Nov 10, 2011 / 1
 
- A B porton az IOC megszakítás törléséhez ki kell olvasni a PORTB -t (az összes bit változottságát törli).
- Amig egy másik ok kiszolgálása folyik, a TMR2 és más perifériák megszakítás ok jelzői bebillenhetnek. Ezek közül csak az engedélyezettek kérnek megszakítást. Ha egy eszköz kész, de a megszakítása tiltott, annak nem szabad lefuttatni a kiszolgálását.
- Ha a portb megszakítása érvényre jut, a lekezelése alatt a timer2 kérése is bebillen, akkor két lehetőség fordulhat elő:
-- A kérés még a jelzőbitjének tesztelése előtt bebillen - a megszakítási rutin egymás után mind a két kérést kiszolgálja, a kéréseket törli és visszatér.
-- A kérés a jelzőbitjének tesztelése után billen be - Az első kérés kiszolgálása lefut, a jelzőbitjét letörli, visszatér. Rögvest érvényre jut a timer2 megszakítás, a kiszolgáló rutin lefut még egyszer, most a timer2 -t szolgálja ki, törli az okot és visszatés. Mivel nincs több ok, a fő program fut egy darabig...
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Kiakadtam. A Pickit ha detektálja felismeri a pic 16f1826-ot. Ezzel együtt visszateszi 5,0V-ra a Vdd-t de ha betöltöm a hexet jön a piros üzenet, el is veszti aztán no device, ha leveszem a Vdd-t úgy töltöm be akkor ismert marad meg is írja. de a kiírt 255 vagy elmegy vagy villog vagy szabályosan vagy nem de hót f?s az egész. Valaki nemtudja hogy mivel van a baj?
(#) szitko válasza Hp41C hozzászólására (») Nov 10, 2011 /
 
Remélem nem haragszotok, ha közbevágok, de pl. nálam
Idézet:
„- A B porton az IOC megszakítás törléséhez ki kell olvasni a PORTB -t (az összes bit változottságát törli).”

ez nem működött, de lehet (biztos), hogy valamit Én nem értek.
  1. org  4
  2.  movwf  w_ment      ; W mentés
  3.  swapf  STATUS,w    ; STATUS mozgatás W-be
  4.  clrf  STATUS             ; STATUS törlése
  5.  movwf  s_ment       ; W mentése
  6.  movf  PORTB,w       ; PORTB kiolvasása
  7.  bcf  INTCON,RBIF    ; Flag törlése

Hiáaba olvastam ki a PORTB-t, a megszakítás mindkét változásra lefutott. Csak úgy tudtam megoldani, ha a megszakításon belül, megvártam míg visszaáll az adott bemenet alapba.
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
A remegés megszűnt. leszedtem a majdani 5V-os regulátort De az A/D most sem megy. Elovastam a bankseles súgót.
De kevéssé tudok angolul. Javítsatok! Bármelyik bank regiszterére hivatkozok egy banksel utasítással akkor abban a bankban vagyok és abban is maradok még egy másik banksel utasítással hivatkozom egy másik bank regiszterére és akkor már abban vagyok?
pl BANKSEL PORTA -- akkor a bank0 ban bármelyik regiszterrel foglalkozhatom?
aztán:
-BANKSEL TRISA-- most kerültem át a bank1 ben és megintcsak újabb banksel utasításig itt is maradok
-BANKSEL ANSELA--most bank 3 ban foglalkozhatom bármelyik regiszterrel?
Az A/D-hez a pic 16f1826-nál be kell állítani az ADCON0-ban is melyikkel foglakozzon és az ANSEL-ben is? Meg valami amit muszály, mert nem megy.
(#) nedudgi válasza n_yálastrubadúr hozzászólására (») Nov 10, 2011 /
 
Mire használod az RB6 és RB7 lábakat?
(#) n_yálastrubadúr válasza nedudgi hozzászólására (») Nov 10, 2011 /
 
szegmens meghajtás
(#) n_yálastrubadúr hozzászólása Nov 10, 2011 /
 
Ha valaki lenne olyan kedves átbogarászni a progot csak az A/D akarnám a portb-re írni -egyelőre. Minden át van ugrálva , de nem megy.
  1. list      p=16f1826          
  2. #include <p16F1826.inc>
  3. errorlevel -302    
  4.  
  5.  ; __CONFIG    _CONFIG1,  _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF
  6.  ; __CONFIG    _CONFIG2,  _WRT_OFF & _PLLEN_OFF & _STVREN_OFF  & _LVP_OFF
  7. ;__config_CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
  8.  
  9. ;__config_CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_ON & _BORV_25 & _LVP_OFF
  10.  
  11.  
  12. __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
  13. __config _CONFIG2, _PLLEN_OFF  & _LVP_OFF & _STVREN_OFF
  14.  
  15. CBLOCK0X20
  16. T1,T2,T3
  17. DIV1,DIV2,DIV3,DIV4
  18. BCDL,BCDM,BCDH,BIN1
  19. ANSEL;& _BORV_25
  20. ENDC
  21.  
  22. #INCLUDE"paka_all.asm"
  23. #INCLUDE"disdriver.asm"
  24.  
  25.  
  26.  
  27. #DEFINEPAPORTA
  28. #DEFINEPBPORTB
  29. #DEFINEDIG1PA,0
  30. #DEFINEDIG2PA,1
  31. #DEFINEDIG3PA,7
  32. #DEFINEDIG4PA,6
  33. #DEFINEONPA,5
  34. #DEFINESTBYPA,4
  35.  
  36.  
  37.  
  38.  
  39. _0EQUB'11111010'
  40. _1EQUB'01000010'
  41. _2EQUB'10101110'
  42. _3EQUB'11001110'
  43. _4EQUB'01010110'
  44. _5EQUB'11011100'
  45. _6EQUB'11111100'
  46. _7EQUB'01001010'
  47. _8EQUB'11111110';OK    D,C,E,F,A,G,B,0
  48. _9EQUB'11011110'
  49. _FOKEQUB'00011111'
  50.  
  51. ;>>> INIT <<<
  52. ;*----------------------------------------------------------------------
  53. ;*----------------------------------------------------------------------
  54. MOVLB.1
  55. MOVLW   B'01101000'
  56. MOVWFOSCCON
  57.  
  58. MOVLWB'00111100'
  59. MOVWFTRISA
  60. MOVLWB'00000000'
  61. MOVWFTRISB
  62. MOVLB.0  
  63.  
  64.  
  65.  
  66.  
  67. GOTOAD_LOOP
  68.  
  69. ;DISPLAY
  70. LOOP
  71. ;*----------------------------------------------------------------------
  72. ;*----------------------------------------------------------------------
  73. PAKA_DISPLAY_DRIVER;>>> MACRO <<<
  74. ;*----------------------------------------------------------------------
  75. ;*----------------------------------------------------------------------
  76.  
  77.  
  78. AD_LOOP
  79. MOVLW.255
  80. MOVWFPA;mind a 4 szegmens on
  81.  
  82.  
  83.  
  84.  
  85. BANKSEL ADCON1 ;
  86. MOVLW B'11110000' ;Right justify, Frc
  87. ;clock
  88. MOVWF ADCON1 ;Vdd and Vss Vref
  89. BANKSEL TRISA ;
  90. BSF TRISA,2 ;Set RA2 to input
  91. BANKSEL ANSEL ;
  92. BSF ANSEL,2 ;Set RA2 to analog
  93. BANKSEL ADCON0 ;
  94. MOVLW B'00001001' ;Select channel AN2
  95. MOVWF ADCON0 ;Turn ADC On
  96. CALL sample_time ;Acquisiton delay
  97. BSF ADCON0,ADGO ;Start conversion
  98. BTFSC ADCON0,ADGO ;Is conversion done?
  99. GOTO $-1 ;No, test again
  100. ;BANKSEL ADRESH ;
  101. ;MOVF ADRESH,W ;Read upper 2 bits
  102. ;MOVWF RESULTHI ;store in GPR space
  103. BANKSEL ADRESL ;
  104. MOVF ADRESL,W ;Read lower 8 bits
  105. BANKSELPORTB
  106.  
  107. MOVWF PB;az ad eredmény elvileg itt lenne
  108.  
  109.  
  110. GOTOAD_LOOP
  111.  
  112. ;*----------------------------------------------------------------------
  113. ;*----------------------------------------------------------------------
  114. BCD_SEVEN_SEGMENT_SUB;>>> MACRO <<<
  115. ;*----------------------------------------------------------------------
  116. ;*----------------------------------------------------------------------
  117. _CELSIUS
  118. MOVLW_FOK
  119. MOVWFDIV1;>>> CELSIUS <<<
  120.  
  121. CLRFBCDL
  122. CLRFBCDH;>>> CLEAN<<<
  123. CLRFBCDM
  124.  
  125. GOTOLOOP;>>> JUMP BACK <<<
  126. ;*----------------------------------------------------------------------
  127. ;*----------------------------------------------------------------------
  128. ;>>> PROGRAM END <<<
  129. ;*----------------------------------------------------------------------
  130. ;*----------------------------------------------------------------------
  131. ;>>> SUBRITIN'S <<<
  132. ;kontraszt  <<<
  133. DY
  134. MOVLW.40
  135. MOVWFT1
  136. DOWN
  137. DECFSZT1,F
  138. GOTODOWN
  139. RETURN
  140. ;*----------------------------------------------------------------------
  141. ;*----------------------------------------------------------------------
  142. sample_time
  143. MOVLW.255
  144. DOWN1
  145. DECFSZT2,F
  146. MOVWFT2
  147. GOTODOWN1
  148. RETURN
  149.  
  150. END;>>> ALL END <<<
  151. ;*----------------------------------------------------------------------
  152. ;*----------------------------------------------------------------------




Ezt szépen betette...
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Nov 10, 2011 /
 
Kivezetés analóg módra állítása a 16F1826 -on:
- TRIS regiszterekben a megadott biten bemenet állítása.
- ANSEL regiszterekben a megadott helyen analóg mód állítása,
- ADCON0 regiszterben a bemenet kiválaszztása

Mérés a kiválasztott bemeneten:
- A/D beállási idő kivárása,
- A/D indítása.
- Kész jelzés megvárása .... Errata megoldásai.
- Érték kiolvasása az ADRES regiszterekből.

Banksel
- Minden pic kontrolleren úgy van, ha kiválasztasz egy bankot, akkor addig az marad kiválasztva, ameddig másikat nem választasz ki. Mindegy hogyan történik a kiválasztás : a STATUS felső bitjeivel vagy a BSR regiszterrel.
- Ha másik bankbeli regisztert szeretnél elérni, akkor előbb a bankot kell kiválasztani, majd műveletet végezni a regiszterrel. Ha több ugyan abban a bankban levő regiszterrel van egymás után dolgunk, akkor köztük nem kell bankot váltani, de a megszakítási rutinnak mentenie és visszaállítania kell a bank kiválasztását. Ha másik bankbeli regiszterel lesz dolgunk, megint ki kell választani az kívánt bankot...

Hagyd az A/D -t egy kicsit, mert még azt sem tudod, hoga a programodban van a hiba vagy az A/D nem működik rendesen. Egy led villogtatás működik? Mi lett a MCLR lábbal? Lehet már bemenetnek használni, vagy most is megáll az élet? Mitől áll meg, ha a MCLR funkció és az LVP is le van tiltva? Ha ezek már mennek, jöhet a többi... A 16F1826 -ban van uart. Jó lenne beüzemelni... Mivel a PICKit2 -vel nem lehet debuggolni ezt a típust, az uart-tal lehetne állapot információt küldeni a programból...
(#) nedudgi válasza n_yálastrubadúr hozzászólására (») Nov 10, 2011 /
 
Tegyél be késleltetést a TRISB állítása előtt hogy a Pickitnek legyen ideje vacakolni kontrollerrel..
Következő: »»   169 / 1211
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