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   574 / 1209
(#) Electricboy válasza nedudgi hozzászólására (») Okt 1, 2014 /
 
Köszönöm nektek!
Megfogadom a tanácsod, előbb inkább az óra részeit, működését értelmezem, tanulmányozom. Így az általad lebontott formában. Igazából nagyon az elején vagyok még a dolgoknak, de szeretném elsajátítani az elektronika ezen műfaját is, igaz suliban tanítanak mikrovezérlőket (sajnos nem sok órában), viszont félek nem fogom megérteni rendesen, így önszorgalomból próbálnám a dolgokat helyre rakni.
(#) Maverick91 válasza Hp41C hozzászólására (») Okt 1, 2014 /
 
Valóban, piros code protect... Ilyenkor mi a helyzet? Benne van a progi a PIC-ben?
(#) Hp41C válasza Maverick91 hozzászólására (») Okt 1, 2014 /
 
Code protect: Kiolvasásvédelem. A levédett PIC kontrollereknél minden utasításkód helyett 0 -t (nop) olvas ki a programozó.
A PICkit2 az írást úgy végzi, hogy a konfigurációs szót (szavakat) programozza be utoljára. Ha az írás közbeni ellenőrzés be van kapcsolva, a konfigurációs szó (szavak) programozása előtt ellenőrzi a kontrollert. Ha a programot és az adatokat sikeresen beírta, akkor beírja a konfigurációt is.
Idézet:
„Benne van a progi a PIC-ben?”

Ha be volt kapcsolva az írás közbeni ellenőrzés és az írás végén nem jelzett hibát, akkor biztosan beírta. Az írás befejezése utáni ellenőrzések már hibát jeleznek a védelem aktivizálása miatt. Ha egy védett konrtollerből olvastad ki a progarmot, akkor egy csupa nop utasításból álló program van a programozott kontrollerben.
Idézet:
„Ilyenkor mi a helyzet?”

Ha állományból töltötted be a programot (hex file), akkor egy kis ügyeskedéssel (a hex állomány módosításával) le lehet tiltani a védelmet.
(#) Maverick91 válasza Hp41C hozzászólására (») Okt 1, 2014 /
 
Nagyon köszönöm a kimerítő választ. Most építem az Attila86 féle panelmérőt, és ezek szerint a PIC is készen van. Köszönöm mégegyszer.
(#) don_peter hozzászólása Okt 1, 2014 /
 
Uraim, a PIC32-eseket lehet PICKIT2-vel programozni?
Vagy azzal már nem?
Gondolok itt a Max 3.6v-os PIC-ekkre, meg arra, hogy azt írják a Microchip fórumon, hogy az már nem támogatja a PIC kit 2.
A hozzászólás módosítva: Okt 1, 2014
(#) Hp41C válasza don_peter hozzászólására (») Okt 1, 2014 /
 
Csak Vdd állítós PICkit2 -vel lehet programozni őket. A Szilva félével nem, mert az ICSP vonalakon nem korlátozza a feszültséget a Vdd_tgt szintjére. A gyári kezelő programja elég szegényes választékot ad és az azonosítás is hibás. Csak néhány bitet használ, így "összetéveszthet" típusokat. Sajnos a programming executive is be van vasalva a programba, ami lehetetlenné teszi a 32MX1x, 32MX2x -ek kezelését.
Egy kis C# programozással megoldható az összes 32MX programozása, de az MpLab és MpLabX valamint az MpLab IPE nem támogatja sem programozásra sem nyomkovetésre a PICkit2 -t.
(#) don_peter válasza Hp41C hozzászólására (») Okt 1, 2014 /
 
Nekem ez a PicKit2 típusom van: Bővebben: Link
PIC32MX795F512L-re gondoltam, hogy ki kellene próbálni, de egyből felmerült a programozási probléma.
Akkor ezek szerint megoldható majd csak kell kis piszkálás egyéb még számomra ismeretlen helyen...
(#) Hp41C válasza don_peter hozzászólására (») Okt 2, 2014 / 1
 
Nagy szerencséd van:
- A PIC32 családnál 0xFF000 DeviceIdMask -ot használ a program, a PIC32MX795F512L -é ennek ellenére is egyedi marad.
- A programozási utastása szerint a bevasalt Programming execitive is megfelelő,
- Van már definiálva ekkor memóriával kontroller.
PIC32MX795F512L könnyen beletehető:
- Töltsd le és telepítsd a Pk2DevicefileEditor -t.
- Mentsd el a Pk2Devicefile.dat állományt más néven is.
- Nyisd meg a Pk2DevicefileEditor -ral,
- Keresd meg a PIC32MX340F512L -t,
- Duplicate, írd át a típust PIC32MX795F512L -re,
- Mentsd el a módosított állományt.
- Nyisd meg úja,
- Módosítsd a DeviceId -t 0x37000 -ra, a ConfigBlank[] és a ConfigMask[] adatokat a programozási leírás alapján.
- Mentsd el a módosított állományt.
A hozzászólás módosítva: Okt 2, 2014
(#) icserny válasza Hp41C hozzászólására (») Okt 2, 2014 /
 
Erről a a ConfigBlank[] és a ConfigMask[] módosításról tudnál valami szájbarágósabb információt is adni?

Egyszerű programfeltöltés enélkül is ment, de a konfigurációs bitekhez még nem mertem hozzápiszkálni, nehogy fejreállítsam a vezérlőt.
(#) Hp41C válasza icserny hozzászólására (») Okt 2, 2014 / 1
 
ConfigBlank[] és ConfigBlank[] 16 bites értékek. A ConfigWords mező tartalmazza a konfigurációs szavak (16 bites részek) számát. Maximum 9, de itt a tömbben csak 8, a 9. az UNUSED4 32 bites mezőben van, ConfigMask[8], ConfigBlank[8] sorrenben (PIC24FxxKA bővítés).
A legalacsonyabb címen található szó (32 bites esetben annak alsó 16 bitje) kerül a 0 indexre. A két tömb indexelése azonos. ConfigBlank tömb a törlés utáni értékeket tartalmazza, a WriteConfigOnErase mező utasítja a programot, hogy törlés után a ConfigBlank tömbben megadott értékeket írja be a kontrollerbe a törlés után.
A kontroller adatlapjában megtalálható a konfigutációs szavak értéke törlés után. Ezeket kell megadni a ConfigBlank[] tömbben. A bitkiosztásnál funkcióval bíró biteknél 1 -et kell megadni a ConfigMask[] tömbben. Az újabb adatlapokban olvasható a maszkok táblázata: PIC32 esetén DS61145L-page 45.
(#) don_peter válasza Hp41C hozzászólására (») Okt 2, 2014 /
 
Húú ez nagyon hasznos infó..
Köszönöm..
Viszont az utóbbi kicsit bonyolultnak tűnik.. (mondjuk minden az ameddig az ember rá nem jön mit kell csinálni)
A programot már töltöm lefelé.
Gondolom itt minél újabb annál jobb a program legalább is remélem.
"PK2DFE 1.0.0.7"-est találtam ezen az oldalon: Bővebben: Link
A hozzászólás módosítva: Okt 2, 2014
(#) Hp41C válasza don_peter hozzászólására (») Okt 2, 2014 / 1
 
Az a legújabb, de még ez sem tükrözi a PICkit2 v2.61 értelmézését. Sőt egy hiba is van benne: A tömb elemeket cím szerint másolja a duplicate parancsra. így ha módosítod az újat. módosul a régi példány is. Ezért írtam, hogy a diplicate parancs után csak a típust írd át, majd mentsd ki az állományt és töltsd be újra. A betöltésnél már két független példány jön létre.
Ez is egy hasznos olvasmány.
A hozzászólás módosítva: Okt 2, 2014
(#) Pali79 hozzászólása Okt 2, 2014 /
 
Újra elővettem a sebességmérő projektemet (PIC16F877A, ASM.), de elvesztettem a fonalat valahol. A lényeg, hogy CCP-vel fogadom a jelet. Elméletileg két CCP között számol a Timer1. Mivel két jel között többször is túlcsordul a Timer1, ezért a túlcsordulás növel egy változót. Az elképzelés az volt, hogy a túlcsordulásokat megszorzom 65535-tel és hozzáadom a két CCP értékét.
Na kb itt vesztettem a fonalat, nem igazán áll össze fejben, hogy mi lenne a következő lépés. Ha valaki adna egy kis szamárvezetőt azt megköszönném!
(#) foxi63 válasza Pali79 hozzászólására (») Okt 2, 2014 /
 
Szia! A timer0 csak 256-ig számol, nem 65536 ig . A timer0 nak a felső byte számlálója(RAM ban) lehet több darab is, nem okoz gondot. A timer0 előosztója beállítható 256-os osztásra.
Ha lassú jeleket kell detektálnod, akkor érdemesebb a timer2 számlálóval 1mS -os megszakítási alapot készíteni, (mert ezt könnyű pontosra beállítani) és ez az 1mS os időzítő már könnyen léptethet más számlálókat, amiket főprogramból lehet adott értékre állítani, resetelni stb.
(#) Pali79 válasza foxi63 hozzászólására (») Okt 2, 2014 /
 
Nem egészen értelek. A timer1-et használom, mert ez van a ccp-hez rendelve. A timer2 már foglalt.
(#) foxi63 válasza Pali79 hozzászólására (») Okt 2, 2014 /
 
Bocsánat, elsiklottam az adott szövegrész fölött.
A timer2 attól mert foglalt például pwm időalap, attól még használható pontos időzítésre, pl a PR2 249-re állításával. és az utó osztója beállításával pontos megszakítást generálhat.
Ha a timer1-el kell elvégezni, az is járható út, amikor átfordul, megszakításban növeled az adott változót... jó úton jársz..
A hozzászólás módosítva: Okt 2, 2014
(#) vilmosd válasza Pali79 hozzászólására (») Okt 2, 2014 /
 
Megoldas lehet egy CCP INT, es ebben nullazod a TMR1-et. Esetleg, ha a TMR1 tulcsordulna a ket CCP megszakitas kozott, akkor arra is kell egy INT, aholis egy szamlalot novelsz minden INT-nel, majd a CCP INT-nel azt is nullazod a feldolgozas utan.
(#) ktamas66 válasza Pali79 hozzászólására (») Okt 2, 2014 /
 
Nem kell szorozgatni semmit, ha számolod a túlcsordulásokat a CCP felfutáskor (vagy lefutáskor) előáll egy 24 bites számod ( túlcsordulás+CCPxH+CCPxL). Ezt elmented és következő capture eseménynél a új értékből levonod az előzőt (mint itt írtam), így megkapod az időt. Már csak a utat kell ismerni (körülfordulás) és ki tudod számolni a sebességet. A TMR1-et nem kell manipulálni, legfeljebb azt kell figyelni, hogy a túlcsordulás számlálód nem csorduljon túl kétszer (egyszer ugye szabad neki ). Amúgy is érdemes egy időkorlátot figyelni, különben soha nem írna ki 0 km/h-át.
(#) Pali79 válasza ktamas66 hozzászólására (») Okt 2, 2014 /
 
Értem már! A 24 bites szám összeállítása nehezen esett le, de azt hiszem felfogtam. Gyúrom a kódot, majd jelentkezem! Köszi!
(#) ktamas66 válasza Pali79 hozzászólására (») Okt 2, 2014 /
 
Habár ez 32 bitesre van:
  1. MEGSZ_CCP3
  2.                 BTFSC   KTFLAG,3                                        ;ha nem volt kijelezve, csak mentsen
  3.                 GOTO    MEGSZ_CCP3_TOV
  4.                 BANKSEL CCPR3L
  5.                 MOV16   KT_TMR3_TUL,KT_TMR3_FEL+2       ;aktuális értéket elmentjük felső 16 bit
  6.                 MOV16   CCPR3L,KT_TMR3_FEL                      ;elmentjük alsó 16 bit
  7.  
  8.         MOVF    KTCCPR3L_EL,W                   ;32 BIT KIVONÁS DST=DST-SCR
  9.         SUBWF   KT_TMR3_FEL,F                   ;a kapott értékből kivonjuk az előzőt
  10.         MOVF    KTCCPR3L_EL+1,W      
  11.         BTFSS   STATUS,C        
  12.         INCFSZ  KTCCPR3L_EL+1,W    
  13.         SUBWF   KT_TMR3_FEL+1,F      
  14.         MOVF    KT_TMR3_TUL_EL,W
  15.             BTFSS   STATUS,C
  16.         INCFSZ  KT_TMR3_TUL_EL,W      
  17.         SUBWF   KT_TMR3_FEL+2,F
  18.         MOVF    KT_TMR3_TUL_EL+1,W
  19.             BTFSS   STATUS,C
  20.         INCFSZ  KT_TMR3_TUL_EL+1,W      
  21.         SUBWF   KT_TMR3_FEL+3,F                         ;előáll a KT_TMR3_FEL 32 bites idő a felfutó élek között
  22.                 BANKSEL KTFLAG
  23.                 BSF             KTFLAG,3                                        ;kijelezni
  24.  
  25. MEGSZ_CCP3_TOV
  26.                 BANKSEL CCPR3L
  27.                 MOV16   CCPR3L,KTCCPR3L_EL                      ;az új lesz a régi
  28.                 MOV16   KT_TMR3_TUL,KT_TMR3_TUL_EL      ;az új lesz a régi
  29.  
  30.  
  31. MEGSZ_CCP3_TOV2
  32.                 BANKSEL PIR3
  33.                 BCF             PIR3,CCP3IF
  34.                 GOTO    MEGSZ_KILEP
  35.  
  36. MEGSZ_TMR3
  37.                 BANKSEL KT_TMR3_TUL
  38.                 INC16   KT_TMR3_TUL             ;TMR3 32 bites számlálás
  39.                 BANKSEL PIR3
  40.                 BCF             PIR3,TMR3IF
  41.                 GOTO    MEGSZ_KILEP
(#) Pali79 válasza ktamas66 hozzászólására (») Okt 2, 2014 /
 
Ez milyen picre íródott?
(#) ktamas66 válasza Pali79 hozzászólására (») Okt 2, 2014 /
 
PIC16F1527-re, bár nem hiszem, hogy lenne bármi speciális utasítás benne (legfeljebb a 16 bites makrók ).

16BITS.INC
    
(#) Hp41C válasza ktamas66 hozzászólására (») Okt 3, 2014 /
 
Miért kell egy Advanced Midrange kontrolleren egy 16F84 -re fejleszett megoldást alkalmazni?
Midrange - 16F : "Only 35 single word instructions to learn"
Advanced Midrange - 12F1xxx, 16F1xxx "Only 49 instructions"
Köztük van már addwfc és subwfb utasítás is. Érdemes megnézni...
(#) ktamas66 válasza Hp41C hozzászólására (») Okt 3, 2014 /
 
Teljesen igazad van. Két oka van: lustaság (Ctrl+c - Ctrl+v ), és a programot több picben is is kipróbáltam.
(#) Hp41C válasza ktamas66 hozzászólására (») Okt 3, 2014 /
 
Csak azt nem értem, hogy ha megcsinálták az addwfc és subwfb utasításokat miért nem került a készletbe az addlwc és a sublwb.
(#) petike199600 hozzászólása Okt 3, 2014 /
 
Sziasztok!
Foxi készített nekem egy programot.
  1. ;ledflash
  2. ERRORLEVEL 2
  3. #include"p18f14k22.inc"
  4. RADIX DEC
  5. #DEFINE LED PORTB,4
  6. #DEFINE ON      PORTB,6
  7. #DEFINE OFF PORTB,7
  8. ;NEM FOGLALKOZOK BEÁLLÍTÁSOKKAL, CSAK A LÉNYEGGEL
  9. ;31 kHz (kb óra kvarc)
  10. ;Ha ekkora az oszcillátor frekije akkor 129uS egy
  11. ;utasítás ideje. A nyomógombok prelleznek, ezért
  12. ;nem egyértelmű a lekérdezése tehÁT TRÜKKÖSEN kell ;lekérdezni
  13. ;Mivel a gombok lekérdezése is igen gyors,ezért kell
  14. ;várakozási időket is beépíteni, hiszen ha 1mp alatt
  15. ;le tudja kérdezni a gombot 1000x akkor 1000x nővelné
  16. ;a számláló értékét is ezért úgy írom meg a progit, hogy
  17. ;amíg a gomb nyomva van "áll" a progi és gomb ;felengedéskor megy tovább
  18.  
  19. CBLOCK
  20. GOMBCNT
  21. ENDC
  22. org 0
  23. CALL INIT
  24. GOTO PRG
  25. ;
  26. ;
  27. INIT:
  28. MOVLW   B'11101111'
  29. MOVWF   TRISB
  30. CLRF    GOMBCNT ;ON SZÁMLÁLÓ=0
  31. RETURN
  32. ;*** 100mS KÉSLELTETÉS W REGISZTERBEN, HOGY HÁNYSZOR ****
  33. CBLOCK
  34. DL
  35. DH
  36. WT
  37. ENDC
  38. DELAY_100mS     ;775 CIKLUS
  39. MOVWF   WT      ;W REG MENTÉSE
  40. MOVLW   0XFF
  41. MOVWF   DL
  42. MOVLW   0X01
  43. MOVWF   DH
  44. DECFSZ  DL
  45. BRA     $-2
  46. DECFSZ  DH
  47. BRA     $-6
  48. DECFSZ  WT
  49. BRA     $-18
  50. NOP
  51. RETURN
  52. ;***************************************
  53. GET_GOMB
  54. CBLOCK
  55. KEY
  56. ENDC
  57. MOVF    PORTB,W
  58. ANDLW   B'11000000'     ;TÖBBI BIT KIZÁRÁSA
  59. BNZ     $+4     ;MEGNYOMVA
  60. RETURN  ;NINCS MEGNYOMVA
  61. MOVWF   KEY     ;A MEGNYOMOTT BILLENTYŰ(K) ELMENTÉSE
  62. MOVF    PORTB,W
  63. CPFSEQ  KEY
  64. BRA     $+4     ;VÁLTOZOTT
  65. BRA     $-6     ;AZONOS VISSZA
  66. MOVLW   0XC0
  67. XORWF   KEY,W   ;MINDKÉT BILLENTYŰ KIZÁRÁSA
  68. BNZ     $+6
  69. CLRF    WREG
  70. RETURN
  71. MOVF    KEY,W   ;ON = 0X40
  72. RETURN  ;OFF= 0X80
  73. ;************************************************************* 
  74. PRG:
  75. MOVLW   0X01
  76. CALL    DELAY_100mS     ;HOGY LASSABB LEGYEN A PROGI
  77. MOVF    GOMBCNT,F       ;HA ON SZÁMLÁLÓ NULL KIKAPCSOLNI
  78. BNZ     $+6
  79. BCF     LED
  80. BRA     P00
  81. BSF     LED     ;HA NEM NULLA BEKAPCSOLNI
  82. P00     CALL    GET_GOMB        ;EREDMÉNY-> WREG
  83. BTFSS   WREG,6  ;ON
  84. GOTO    P01
  85. MOVLW   0XFF
  86. XORWF   GOMBCNT
  87. BZ      PRG     ;255 NÉL MÁR NEM NÖVELÜNK
  88. INCF    GOMBCNT,F
  89. GOTO    PRG
  90. P01 BTFSS       WREG,7  ;OFF
  91. BRA     PRG
  92. MOVF    GOMBCNT,F       ;MÁR NULLA?
  93. BZ      PRG
  94. DECF    GOMBCNT,F      
  95. GOTO    PRG
  96. END

Ezt csak be kellett másoljam, átírtam a bemeneteket és a kimeneteket arra amire nekem szükségem van, de nem működik a program, rátölti, de aztán semmit nem csinál ha nyomogatom a gombokat.
Szerintetek mi a baj?
(#) don_peter hozzászólása Okt 3, 2014 /
 
Uraim, mit jelent pontosan, hogy földhurok?
Nem tudom, hogy ide e tartozik ezért elnézést, ha nem...
(#) Hp41C válasza don_peter hozzászólására (») Okt 3, 2014 / 1
 
Inkább az analóg kapcsolásokhoz tartozik.
(#) don_peter válasza (Felhasználó 13571) hozzászólására (») Okt 3, 2014 /
 
Köszi srácok
Olyan értelmében kérdezem, hogy ilyen földhurok előfordulhat PIC-es kapcsolásoknál, áramköröknél?
Vagy tápegységeknél ami a kontrollerünket hajtja?
A hozzászólás módosítva: Okt 3, 2014
(#) vilmosd válasza don_peter hozzászólására (») Okt 4, 2014 / 1
 
Akkora aramok nem folynak, hogy a digitalis jeleket zavarna, mert ha igen akkor mar regen rossz. Viszont analog jelek feldolgozasanal elofordulhat, es ezzel meg tudja hamisitani a merest. Talan a telifold megoldhatja ezt a problemat, ja meg persze a megfelelo hidegito kondik. Vannak olyan PIC-ek ahol az analog GND es a digitalis GND kulon kivezetes
Következő: »»   574 / 1209
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