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   551 / 1210
(#) enree hozzászólása Júl 30, 2014 /
 
Sziasztok!
Egy LANC kamera vezérlést szeretnék készíteni, találtam itt egy nagyon jó kis leírást, de nem boldogulok a HEX beégetésével, a csatolt hibaüzenetet dobja PicKit2. Valamit ír a programozással kapcsolatban, hogy csak a csatolt progival, soros porton lehet beégetni, ilyen létezik? Vagy csak én nem értek angolul... Ezért nem építenék egy programozót, illetve a gépemen nincs is soros port Megköszönném, ha valaki segítene.
Endre
A hozzászólás módosítva: Júl 30, 2014
(#) kissi válasza enree hozzászólására (») Júl 30, 2014 /
 
Azt mondja, hogy a 0-s címen baj van a programozással! Jól kötötted be az IC-t, csatlakozik minden láb ? Próbálkozz esetleg egy teljes törléssel a programozás előtt!
(#) enree válasza kissi hozzászólására (») Júl 31, 2014 /
 
Biztosan jól van bekötve a kontroller, más HEX gond nélkül bele megy (100nF is van, közvetlen a táplábon). Próbáltam úgy is, hogy töröltem, akkor is ez az eredmény
(#) Hp41C válasza enree hozzászólására (») Júl 31, 2014 / 1
 
Árulkodó piros felirat a Configuration címke alatt: Code Protect...
- Amennyiben az írás sikeres volt, a program benne van a kontrollerben, lehet használni.
- Amennyiben az írás sem volt sikeres, az összeköttetés vagy a kontroller hibás.
Biztosan ezt az üzenetet kapjuk, ha az írást követően újra végrehajtjuk a Verify (ellenőrzés) műveletet, hiszen a kiolvasásvédelem miatt az összes utasítás helyett 0x0000 kódot (nop) lehet csak kiolvasni.
Megoldás: A kontroller adatlapja és programozási specifikációja szerint a kiolvasásvédelem módosítása a HEX állományban.
(#) enree válasza Hp41C hozzászólására (») Júl 31, 2014 /
 
Tehát, ha feltételezzük, hogy jó az elektronikus kapcsolat a PIC és PicKit2 közt, illetve a jó maga a PIC is, akkor égetés után nem foglalkozva a hibaüzenettel, benne van a program és használható. Szerintem én ahhoz enyhén szólva kevés vagyok, hogy módosítsam a HEX-et
A hozzászólás módosítva: Júl 31, 2014
(#) Hp41C válasza enree hozzászólására (») Júl 31, 2014 /
 
Ha az írás végén azt jelzi, hogy az sikeres volt, akkor valóban beprogramozta a kontrollert.
Melyik az a hex? Töltsd fel ide!
(#) enree válasza Hp41C hozzászólására (») Júl 31, 2014 /
 
(#) csabagalcsaba hozzászólása Júl 31, 2014 /
 
Üdvözlök mindenkit!

Elnézést kérek, hogy ilyen sokáig nem válaszoltam de nagyon el voltam havazva.
Kipróbáltam az MPLAB- ot.
Kijavítottam amiket javasoltatok, de még így is két MESSAGE van.
Mi lehet a probléma?
Még azt szeretném kérdezni, hogy az MPLAB- ban nem is lehet szimulációt végezni?!
Vagy csak én vagyok béna?
Itt a kód és egy kép is:
  1. LIST            P=PIC16F630
  2.  #include       <P16F630.inc>
  3.  __CONFIG       0x3194
  4.  CBLOCK 0x20
  5. SZAM_1
  6. SZAM_2
  7. SZAM_3
  8. SZAM_4
  9.  ENDC
  10.  ORG 0
  11. ;**********************
  12. BEALLITASOK
  13.  CLRF           PCLATH
  14.  BANKSEL        PORTA
  15.  CLRF           PORTA
  16.  CLRF           PORTC
  17.  BANKSEL        TRISA
  18.  MOVLW          B'001000'
  19.  MOVWF          TRISA
  20.  BANKSEL        TRISC
  21.  CLRF           TRISC
  22.  BANKSEL        PORTC
  23.  GOTO           PROGRAM
  24. ;***************
  25. PROGRAM
  26.  MOVLW          B'100000'
  27.  MOVWF          PORTA
  28.  CALL           IDO
  29.  MOVLW          B'010000'
  30.  MOVWF          PORTA
  31.  CALL           IDO
  32.  CLRF           PORTA
  33.  MOVLW          B'100000'
  34.  MOVWF          PORTC
  35.  CALL           IDO
  36.  CLRF           PORTC
  37.  MOVLW          B'010000'
  38.  MOVWF          PORTC
  39.  CALL           IDO
  40.  CLRF           PORTC
  41.  GOTO           PROGRAM
  42. ;***************
  43. IDO
  44.  MOVLW          D'99'
  45.  MOVWF          SZAM_2
  46.  MOVLW          D'35'
  47.  MOVWF          SZAM_3
  48. IDO_X
  49.  MOVLW          D'20'
  50.  MOVWF          SZAM_1
  51. IDO_I
  52.  DECFSZ         SZAM_1,F
  53.  GOTO           IDO_I
  54. IDO_II
  55.  DECFSZ         SZAM_2,F
  56.  GOTO           IDO_X
  57. IDO_III
  58.  DECFSZ         SZAM_3,F
  59.  GOTO           IDO_X
  60. IDO_R
  61.  RETURN
  62. ;**************
  63.  END
  64.  
  65. ; AZ END UTAN URES SOR
A hozzászólás módosítva: Júl 31, 2014

MPLAB.png
    
(#) Hp41C válasza csabagalcsaba hozzászólására (») Júl 31, 2014 /
 
Szia!
A két message arra figyelmeztet, hogy az utasítás olyan regisztert címez, ami nem a 0. bankban van. Ez nem hiba, csak ellenőrizni kell, hogy az utasítás előtt a megfelelő bank kiválasztása megtörtént. A forrásban benne van a banksel. Egy errorlevel -302 sorral ki lehet kapcsolni.
A Debugger / Select tool menüponttal válaszd ki az MpLab SIM -et, fordítsd újra a programot.
(#) Hp41C válasza csabagalcsaba hozzászólására (») Júl 31, 2014 /
 
Íme. Védelem nélkül.
(#) enree válasza Hp41C hozzászólására (») Júl 31, 2014 /
 
Nagyon köszönöm, de ezzel is dob hibát.

fail2.JPG
    
(#) usane válasza enree hozzászólására (») Júl 31, 2014 /
 
Nos, találtam a microchip fórumon egy bejegyzést erre a hibára, viszont csak a tárolt változat nyílt meg a fórum nem. Belinkelem, hátha a guruk kihámoznak neked valami okosságot. Én sajnos a HEX-ben nem tudok turkálni, ott még nem tartok, illetve ez sem olyan bonyolult ha nekiülnék, csak minden kódot meg kéne néznem mi az assembly megfelelője, és az elég hosszú és macerás folyamat, örülök, ha az assembly mnemonikok szintaktikáját fejben tartom, a disassemblálás meg sosem lesz olyan mint az eredeti.
Íme a link.
A hozzászólás módosítva: Júl 31, 2014
(#) moltam válasza usane hozzászólására (») Júl 31, 2014 /
 
54. oldal. A 8 as config bitet kéne egyre állítani. Szerintem ez a gondja. Elvileg a 2007h címen van a hexben.
A hozzászólás módosítva: Júl 31, 2014
(#) enree válasza moltam hozzászólására (») Júl 31, 2014 /
 
Nagyon köszönöm mindkettőtöknek, én nem találok benne 2007h-t

Zoom_h.hex
    
(#) moltam válasza enree hozzászólására (») Aug 1, 2014 /
 
Igazad van, a picbe van 2007h címen tárolva. Ha rákattintasz a configuration kék feliratra, nem tudod szerkeszteni? Én Watt féle wltp minivel programozok és simán lehet szerkeszteni a configot. Csak valamiért nem menti el ha átírom, de ha beégetném jó lenne. 3F8C re kéne átírni.
(#) moltam válasza enree hozzászólására (») Aug 1, 2014 /
 
Valami gond lesz, mert amit Hp41C küldött, abba mindkét protect bit 1. Sikerülnie kéne. Biztos jó az a pic?
(#) csabagalcsaba hozzászólása Aug 1, 2014 /
 
Üdvözlet!

Már mindent megpróbáltam amit javasoltatok és nem működik.
Mi lehet a probléma?
A tápfesz stabil. 12V-ból stabilizálok egy 7805- el 5V-ot. Azon van egy 100µF-os kondi és egy 100nF-os.
Az MCLR 10kohm-al a + ba van felhúzva.
Ezt írja a fordító:

  1. Eszköz detektálva: vid=0x04D8 pid=0x0100
  2. Path: \\?\hid#vid_04d8&pid_0100#6&3af4d8b2&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  3. Programozó csatlakoztatva
  4. Programmer version 0.10.0
  5. ID: 0.0.1
  6.  (18F2550)
  7.  
  8. 4-es futofeny.HEX :
  9.  
  10.  
  11. Memória kód:
  12. 0000: 018A 1283 1303 0185 0187 1683 1303 3008 0085 1683 1303 0187 1283 1303 280F 3020
  13. 0010: 0085 201F 3010 0085 201F 0185 3020 0087 201F 0187 3010 0087 201F 0187 280F 3063
  14. 0020: 00A1 3023 00A2 3014 00A0 0BA0 2825 0BA1 2823 0BA2 2823 0008 FFFF FFFF FFFF FFFF
  15. 2000: FFFF FFFF FFFF FFFF FFFF FFFF FFFF 3194
  16.  
  17. Regulator táp indítása T=718 ms után
  18.  
  19. Nem találom az EEPROM adatokat
  20. DevID: 0x10C7
  21. 16F630 rev7
  22. Törlés ...kész
  23. Kód írás ...kész, 0 hiba
  24. CONFIG terület írás ...kész, 0 hiba
  25.  
  26. End (0.55 s) 0 hiba
(#) enree válasza moltam hozzászólására (») Aug 1, 2014 /
 
Biztos. Teljesen új volt. Ha valami mást beleégetek, az simán belemegy, működik is. Nem lehet, hogy van benne valami egyéb csavar is? Mert, ugye írja az oldalon, hogy soros portos égetővel működik :/
(#) Pali79 válasza csabagalcsaba hozzászólására (») Aug 1, 2014 /
 
Azt írja, hogy a programozás rendben megtörtént, tehát ha az áramkör jó akkor a programban van a hiba.
A pic táplábai közé minél közelebb is kell egy 100nF kerámia!
(#) enree válasza enree hozzászólására (») Aug 1, 2014 /
 
Valakinek esetleg nincs kéznél egy ilyen PIC? Nem próbálná meg más is? Ha másnál működik, akkor tudjuk, hogy legalább a HEX jó. Egy zsák 629-et, meg 675-öt égettem már be ezzel a PicKit-el, ráadásul nyákos foglalatom van a 8lábú jószágokhoz, nem hinném, hogy ezzel lenne a gond...
(#) enree válasza enree hozzászólására (») Aug 1, 2014 /
 
Megpróbáltam megint, és sikerült! Köszönöm mindenkinek a segítséget, neked különösen Hp41C, a módosított HEX-ért
Annyit csináltam, hogy átdugtam egy másik USB-portba a PicKit-et...
A hozzászólás módosítva: Aug 1, 2014
(#) karak74 válasza csabagalcsaba hozzászólására (») Aug 1, 2014 /
 
A program jó! (Nyilván az ördög nem alszik, de el nem tudom képzelni, mi baj lehetne a programmal. Természetesen leszimuláltam. Áramkörben nem tudom kipróbálni, mert nincs PIC16F630-om.)
Áramkör: 1-es lábra a szűrt és stabil 5V, míg 14-es lábra megy a föld?
2-es lábra az ellenállás (470 ohm-os, amit ellenőriztél műszerrel?) és utána a LED helyesen bekötve? (A LED másik vége persze a földre. Nyilván a 470 ohm nem kőbe vésett érték, de valami hasonló legyen. Ne 470 k ohm!)
Ugyanez (mármint a 2-es lábnál leírtak) a 3-as, 5-ös és 6-os lábon?
Anno júl 11-én adott válaszomban levő 5. pontban leírt ellenőrzés megvolt? Úgy emlékszem erre nem kaptam választ akkor se.
(#) karak74 válasza karak74 hozzászólására (») Aug 1, 2014 /
 
Tényleg! Házi feladat a többieknek (csak a tanulság miatt, én már megoldottam):
Ha valaki más is bepötyögte a csabagalcsaba programját MPLAB-ba, és leszimulálja, láthatja (mondjuk a View / File Registers alapján), hogy a lábak tökéletesen billegnek. Ha viszont a programot átírjuk úgy (26-os és 29-es sor), hogy az RA5 és RA4 helyett az RA0 és RA1 billegjen, akkor a szimulációban az RA lábon nem történik semmi! (Megjegyzem, a valóságban sem történne!) Ezt egy PIC12F675-nél szívtam meg nagyon. Nekem két nap kellett, hogy rájöjjek, mi van. Ezt csak azért mondom, hogy kiemeljem az MPLAB szépségét! Ő ezt is tudja! (Mármint nem szimulálja le, hogy működni fog, mikor a valóságban meg nem működik!)
Természetesen csabagalcsaba ez téged (legalábbis most) nem érint.
(#) csabagalcsaba válasza karak74 hozzászólására (») Aug 2, 2014 /
 
Üdvözlet!

Én már jártasabb vagyok az elektronikában és feleslegesnek tartottam a hardveres tesztet, mert biztos voltam benne, hogy ilyen egyszerű dolgot nem hibázok el. És mégis!!!!!!!!!!!!!
Efféle forrasztás nélküli bedugdosós próbapanelt használtam. Ezt már sok minden tesztelésénél alkalmaztam, de azt a sort ahová a ledeket tettem nem tudtam hogy van hidalva. Mikor már teljesen tanácstalan voltam megfogadtam a te tanácsodat: a hardveres tesztet. De gondoltam magambon milyen felesleges dolog, hát ezt hogyan tudtam volna elrontani?! Nagy meglepetésemre amikor az egyik ellenállásra rátettem a + ot az összes led világítani kezdett. Elkezdtem keresni a hibát és rájöttem, hogy olyan részére dugtam a ledeket a panelnak, hogy az a + jait összehidalta. Így egy ellenálláson keresztül világított az összes led.
Kijavítottam a hibát és láss csodát, működik!
Amúgy a kérdésedre válaszolva: 1kohm-os ellenállásokat használtam és közvetlen a pic tápfesz lába mellé raktam egy 100nF-es kondit.
Szeretném megköszönni neked és mindenki másnak aki segített a hasznos tanácsokat.
Ezt a hibát pedig ajánlom mindenki figyelmébe, mert aki ilyen panelt használ az könnyen ráfázhat!!
(#) csabagalcsaba hozzászólása Aug 4, 2014 /
 
Üdv!

Lenne még egy kérdésem.
Írtátok, hogy konfigurációnak ezt írjam: __CONFIG 0x3194
Ezt honnan lehet kitalálni? Azt tudom, hogy az adatlap 56. oldalán van a konfigurációs bitek beállítása.
Ott valahol olvastam is ezt az ajánlásban.
De valami nem tiszta. A config regiszterben van több vezérlő bit. (Jól tudom?) A táblázat pedig megadja, hogy hanyadik vezérlőbit mit csinál. Ezekbe a vezérlőbitekbe pedig csak 1-est és 0-át lehet beírni nem?
Ha ez így van akkor hogyan lehetséges ez: __CONFIG 0x3194 ?
Elnézést ha hülyeséget kérdezek, de tényleg nem jövök rá és nagyon jó lenne egy kis segítség.
(#) kissi válasza csabagalcsaba hozzászólására (») Aug 4, 2014 /
 
A 0x kezdetű szám hexadecimális számot jelent, amit könnyű binárissá átalakítani ( nézz utána, ha nem ismered!), mindegyik hexa számjegyet 4 bináris számjeggyé kell átalakítani. A 0x3194 --> 3: 0011 1: 0001 9: 1001 4: 0100, azaz összességében --> 0011000110010100 és így már láthatod, melyik bit mivé lett !
(#) jonatani01 hozzászólása Aug 4, 2014 /
 
Héló!
Assemblyben szeretnék írni olyan macrot, amiben változó hosszúságú a paraméterlista.
Van erre lehetőség?
(#) nedudgi válasza jonatani01 hozzászólására (») Aug 4, 2014 /
 
A #ifdef / #endif feltétételes fordítással biztosan megoldható, ha nem konstans számokat akarsz használni.
(#) foxi63 válasza jonatani01 hozzászólására (») Aug 4, 2014 / 1
 
Lehet, például egy 16 bites paraméter:
  1. L16 MACRO A0,A1
  2. movlw A0%256
  3. movwf A1
  4. movlw A0/256
  5. movwf A1+1
  6. ENDM    ;használat:  L16  32000 ,cimke


a cimke a cél változó neve üdv. Foxi
(#) csabagalcsaba válasza kissi hozzászólására (») Aug 5, 2014 /
 
Köszönöm szépen a választ. Most már értem.
Lenne még egy kérdésem.
Ha egy bemenetet szeretnék ellenőrizni így megtehetem?
  1. BTFSC           PORTC,2
  2.  GOTO           PROGRAM_2

Vagyis azt akarom kérdezni, hogy a c portom 2-es bite az bemenet.
Az MPLAB elfogadja ezt: PORTC,2 ?
Vagy esetleg más formában kell írni? Vagy be kell rakni egy regiszterbe?
Következő: »»   551 / 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