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   239 / 1209
(#) bbalazs_ válasza n_yálastrubadúr hozzászólására (») Ápr 13, 2012 /
 
Magatol nem kuld, csak 'felszolitasra'.
Adatlap tanulmanyozasat javaslom.
(#) n_yálastrubadúr hozzászólása Ápr 13, 2012 /
 
Törlés utáni visszaellenőrzésre peddig ezt.

877_pr2.JPG
    
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Ápr 13, 2012 /
 
Szia!
Van a programban egy kis hiba a védelem kezelésnél.
Töröld ki a kontrollert (Erase). Csatlakoztasd le. Indítsd újra a programot. Csatlkoztasd a kontroller, olvasd ki. Ekkor már jónak kell lennie.
Vdd 5V -ra volt állítva?
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Ápr 13, 2012 /
 
Sajnos ezt is akárhányszor végzem el, mindig u.a. Ezt a kontrollert még a tait féle égetőmmel írtam, akkor kezdett instabillá válni hol megírta hol nem, hol fel sem ismerte stb. Aztán amikor már észrevettem hogy írásnál melegszik többet nem foglalkoztam vele, csak gondoltam rehabilitálódott, de akkor ezek szerint ami benne van az benne is marad, hacsak kalapáccsal ki nem törlöm.?
(#) n_yálastrubadúr hozzászólása Ápr 13, 2012 /
 
Nemtudom az mondd e még valamit hogy 1028h tól 0-át olvas a végéig.
-Amúgy egy 887-el ami egyébként jó, azzal ez bejött amit mondtál.
(#) mhatalyak válasza ferkoo hozzászólására (») Ápr 13, 2012 /
 
Szia!

Köszönöm a tanácsot. Olvasgattam róluk, hogy hibáznak sokszor, de én nem szeretnék komolyan bele kezdeni a PIC-be. Tudom, hogy sok érdekességet lehet vele építeni, csak nekem nem éri meg venni egy PICKITet azért, hogy 1-2 mikrovezérlőt égessek vele.
(#) icserny válasza mhatalyak hozzászólására (») Ápr 13, 2012 /
 
Ha úgy sem akarsz komolyabban foglalkozni vele, akkor pláne nem érdemes egy megbízhatatlan jószággal vacakolni. Van sok más mikrovezérlő, amit programozóval együtt igeny nyomott áron (nyilvánvalóan beetetési célzattal) árulnak. Vagy próbálj beszerezni egy olyan mikrovezérlőt, ami bootloaderrel már fel van programozva, s akkor csak a soros (vagy USB) kommunikációt kel biztosítani neki. Persze, ennek is csak akkor van értelme, ha tanulni akarsz vele/rajta.
(#) mhatalyak válasza icserny hozzászólására (») Ápr 13, 2012 /
 
Hát sikerült le beszélnetek róla, veszek egy PICKI2-t. Egyszer kell meg venni és tuti, hogy működik. Ki tudja, talán még meg is tetszik. Egész este olvasgattam róla, nem egyszerű, de 19évesen még van időm meg tanulni! Köszönöm a válaszokat!

mhatalyak
(#) mhatalyak válasza mhatalyak hozzászólására (») Ápr 13, 2012 /
 
Volt itthon hozzá alkatrész, összedobtam és működik, amit linkeltem. Harmadszorra sikerült írni!
(#) vilmosd válasza mekkmesterke hozzászólására (») Ápr 13, 2012 /
 
Itt talalsz 18, 20, 28 es 40 labas joszagokhoz. A 20 labas jo a 12Fxxx 8 labas, es a 16Fxxx 14 labasokhoz is.
(#) Pepebá válasza icserny hozzászólására (») Ápr 14, 2012 /
 
Üdv.
Köszönöm a segítségeket, melyekkel sikerült a PCF8583 I2C ditális óra adataihoz hozzáférni, azokat megjeleníteni.
A PICCOLO projekt keretében, annak függvényeinek felhasználásával és egyenlőre USB CDC kapcsolaton PC-re küldeni (VB6 progival feldolgozva) az óra és naptári adatokat.
Legalább tanulmányoztam a BCD kódolást-dekódolást. Azt nem mondom hogy mindent értek, de legalább tudom nagyjából miről van szó.
Órába az adatok beírását, módosítását és az alarm regiszterek kezelését kell még megismernem, de úgy vélem ezek már nem megoldhatatlanok számomra.
(#) kormika hozzászólása Ápr 14, 2012 /
 
Sziasztok! Megint EEPROM gondom lenne... Ezúttal egy 16F84A proci nem akarja az igazat, a datasheetben van egy programrészlet, ahol az EEPROM írást-olvasást mutatják be, de nekem nem hajlandó működni a dolog... A programrészletben a W regisztert írják be az EEPROM-ba, én is ezt szeretném, de az MPLAB arra hivatkozik, hogy a regiszterek nincsenek előre definiálva... Csatoltam a datasheet-et...

PIC16F84A.PDF
    
(#) potyo válasza kormika hozzászólására (») Ápr 14, 2012 /
 
Inkább a kódodat csatold. Adatlapot esetleg csak linkeld a microchiptől, de az se olyan életbevágó, mindenki pillanatok alatt megtalálja a típusjelzés alapján.
(#) kormika válasza potyo hozzászólására (») Ápr 14, 2012 /
 
A kódom egy az egyben ugyanaz, mint a datasheetben levő példa, mindárt előkeresem a sok asm közül :pirul: Amúgy az egész progi annyit csinál, hogy beolvassa az AD-t, az értéket egy-az egyben kiküldi a B portra binárisan, a porton levő 8 LED működik is, ahogy tekergetem a potit, változik a "kijelzés, de mikor a programozóval beolvasom a proci EEPROM-ját, akkor totál üres...
(#) kormika válasza kormika hozzászólására (») Ápr 14, 2012 /
 
nna kiollóztam a részletet a programból, egy az egyben az, mint a datasheetben, az ADC nevű változó saját definíció, az tulajdonképpen az A/D konverzió eredménye, ha azt mondom neki, hogy:

MOVF ADC,PORTB

akkor minden gond nélkül "kiteszi" az értéket a B portra, de az EEPROM-ba nem hajlandó beírni...
(#) vilmosd válasza kormika hozzászólására (») Ápr 14, 2012 /
 
Szoval nem jo az ollod, mert nem jol ollozott. Az adatlapban szepen le van irva, hogyan lehet irni az EEPROM-ba. De a Te programod nem egeszen ugyanaz. Eloszoris a MOVLW ADC sor az ADC cimet teszi be a W regiszterbe. Ugy kellene csinalni, hogy a beirando adatot be kell tolteni a EEDATA regiszterbe, a cimet berakni a EEADR regiszterbe, majd eljatszani a varazskodot. Utana mar ott is van az adat az EEPROM megfelelo cimen.
(#) norbigal hozzászólása Ápr 14, 2012 /
 
Hali!
A segítségeteket szeretném kérni a PIC-ekkel kapcsolatban. Az elmúlt fél-egy évben AVR-eket programozgattam és már elég jól értem őket ahhoz, hogy bele vágjam a fejszém a PIC-ekbe. Viszont igazából semmit nem tudok róluk azon kívül, hogy más az architektúrájuk. AVR-ek esetén már könnyen összedobtam volna egy panelt, PIC esetében viszont első -barátkozásra- valami kész panelt szeretnék.

Annyit tudok, hogy a Pickit 2/3-mal lehet őket programozni. Viszont nem tudom, hogy van-e különbség köztük és ha igen akkor mi. Azt sem értem, hogy mely szoftverrel lehet programot írni/letölteni a PIC-be. Hallottam az MPLAB-ról, viszont erről sem tudom, hogy fizetős, vagy ingyenes, mint AVR-nél pl az AVR Studio.

Továbbá szükségem lenne egy kezdő panelra is, ami legalább a chip-et a programozóhoz köti és egy raszteres NYÁK-on lehetőség van LED_ek és nyomógombok beforrasztására. A ChipCad oldalán keresgéltem ilyen után. Az első, ami nagyon szembe ötlött az a PICkit 2 Starter, viszont az nincs raktáron. A másik pedig a PICKit 2 Debug Express, amihez, amennyire tudom, szintén jár egy alap panel amin található egy chip, és lábainak kivezetése, de a chip SMD tokozású, vagyis nem lehet kicserélni. Ti melyiket javasolnátok?!?! Mi a különbség a kettő között? Vagy lehet máshol is max 15.000 körül kapni kezdő panelt + programozót?

Bocsi ha kicsit soknak tűnik a kérdés áradat, de a lehetőségekhez képest magabiztosan szeretnék elindulni a PIC programozás terén. :S
(#) vilmosd válasza norbigal hozzászólására (») Ápr 14, 2012 /
 
(#) norbigal válasza vilmosd hozzászólására (») Ápr 15, 2012 /
 
Köszi, ez elég komplex megoldás a panel problémára
Viszont egyetlen dolog még mindig nem világos.
PICKit 2 avagy 3????
Angol weboldalakon, youtube videókban azt írják/mondják, hogy mindenképp PICKit 3-at kell venni, hiszen előbb-utóbb a PICKit2 hazsnálatatlan lesz az újabb chipek megjelenésével.

Mi ennek az alapja?!?! Csak pénzügyi fogás, hogy a 3-as terjedjen el vagy néhány éven belül valóban teljesen elavulttá válhat a 2-es?!?! Ti mit használtok!?!? Vagy megéri megvenni a 2-eset és majd idővel úgy is megjelenik egy "tökéletes" PICKit 3-as klón amit érdemesebb megépíteni?!?!
Szummázva tehát: Ti mit javasolnátok?
(#) nedudgi válasza norbigal hozzászólására (») Ápr 15, 2012 /
 
Nekem mindkettő van.
A Pickit2 egyetlen hátránya, hogy a Microchip abbahagyta a támogatását, a legújabb (tehát költséghatékonyabb) kontrollerek nem, vagy pedig körülményesen programozhatók vele...
Viszont:
A Pickit2 szoftvercsomagja tartalmaz egy négycsatornás logikai analizátort, és egy soros porti adaptert. Kezelő szoftvere szerintem kifinomultabb. A Pickit3 használata esetén előnyösebb a saját táppal rendelkező panelek használata.
A Microchip fórumon olvastam egy kicsit túlzó megfogalmazást a kettő közti különbségről: A PK2 és PK3 között az a különbség, hogy az első működik. Mindenesetre elgondolkodtató hogy a Pickit3 először nekiesik a kontrollernek, utána közli, hogy nem találja. Ezután van csak lehetőséged arra, hogy beállítsad, a Pickit3 biztosítsa a tápot a kontrollernek. Ezt a beállítást nem hajlandó megjegyezni.
(#) norbigal válasza nedudgi hozzászólására (») Ápr 15, 2012 /
 
Ahha, tehát akkor tulajdonképpen a PICKit3 nem is tartalmaz logikai analizátort, és soros porti adaptert?!?! Mert mind kettő nagyon jól jönne ha lenne, és így tul.képpen ki is zárhatnám a PICKit3-asat....

Ha abból indulok ki, hogy AVR-ekkel is csak Atmega 16 és 128-at használok, és ezek is bőven elegek akármi megoldására, akkor lehet, hogy nem is akkora tragédia ha nem tudom az egész palettát programozni... .
(#) nedudgi válasza norbigal hozzászólására (») Ápr 15, 2012 /
 
Félreérted. A szoftvercsomagja teszi alkalmassá ezere a feladatokra.
Fel kell mérni a palettát, és a támogatott kontrollerek alapján válasz.
Később aránylag könnyen építhetsz PK2 klónt, a Pickit3 már nehezebb ügy.
(#) szaffo555 hozzászólása Ápr 15, 2012 /
 
PIC16Fxxx program memóriájában szeretnék adatokat elhelyezni. Ehhez a DT direktívát használnék (tudom a DT RETLW -t csinál). Táblázat a page 3 -on (0x1800 - 0x1FFF) lenne. A táblázat olvasását a page0 ról hívogatnám.
Találtam erre többféle példa kódot, amiket részben értek, de mégis kis segítségre szorulnék:
1. Már ott elakadtam amikor lapváltás nélkül megy a table hívása

  1. movlw offset   ;load offset in w reg
  2. call Table
  3. .
  4. .
  5. Table:
  6. addwf PCL,F   ;add offset to pc to
  7. retlw ?A?    ;return the ASCII char A
  8. retlw ?B?    ;return the ASCII char B
  9. retlw ?C?    ;return the ASCII char C


Mi garantálja, hogy az addwf nem csinál túlcsordulást PCL ben, és a program nem onnan fut, ahonnan egyébként futna?

Másik kérdés az alábbi példaprogram alapján:

  1. org 0x80
  2. movlw HIGH Table
  3. movwf PCLATH
  4. movlw offset
  5. call Table
  6. .
  7. .
  8. org 0x320
  9. Table:
  10. addwf PCL,F
  11. retlw ?A?
  12. retlw ?B?
  13. .


Itt már a 3. sorban PCLATH megkapta a Table High címét (0x03), de honnan tudja az alsó címét? Ezt mi alapján tudja megszerezni?

Harmadik dolog pedig az alábbi példaprogram, amit nem tudom milyen környezetben lenne célszerű használni:

  1. org 0x80
  2. movlw LOW Table ;get low 8 bits of
  3. ; address
  4. addwf offset,F ;do an 8-bit add
  5. ; operation
  6. movlw HIGH Table ;get high 5 bits of
  7. ; address
  8. btfsc status,c ;page crossed?
  9. addlw 1 ;yes then increment
  10. ; high address
  11. movwf PCLATH ;load high address in
  12. ; latch
  13. movf offset,w ;load computed offset
  14. ; in w reg
  15. call Table
  16. .
  17. .
  18. org 0x9FD
  19. Table:
  20. movwf PCL,F ;load computed offset
  21. ; in PCL
  22. retlw ?A? ;return the ASCII
  23. ; char A
  24. retlw ?B? ;return the ASCII
  25. ; char B
  26. retlw ?C? ;return the ASCII
  27. ; char C


Az addig rendben van, hogy az offset új értéke el van tolva a Table low címével. De a
  1. movlw HIGH Table ;get high 5 bits of
  2. ; address
  3. btfsc status,c ;page crossed?
  4. addlw 1 ;yes then increment
  5. ; high address

rész el tudná valaki magyarázni?
(#) szaffo555 válasza szaffo555 hozzászólására (») Ápr 15, 2012 /
 
Egy kicsit elemeztem a fenti kérdésemet MPLAB -al (a középsőt).
  1. org 0x80
  2.     movlw HIGH Table
  3.     movwf PCLATH
  4.     movlw offset
  5.     call Table
  6.     .
  7.     .
  8.     org 0x320
  9.     Table:
  10.     addwf PCL,F
  11.     retlw ?A?
  12.     retlw ?B?
  13.     .

Alábbiakra jutottam:
Először előtöltjük a Table magas címét 0x03. Az offsetet W -be tesszük, de ekkor még PC értékére nincs hatással az előtöltés. Majd meghívjuk a call -al a Table -t. A call 11 bites címmel rendelkezik. A call hatására ez kiegészül a PCLATH 3-4 bitjével. A PCLATH ban azonban ott van már a teljes felső cím is, de abból csak az említett 2 bit lesz érdekes, a 11 (3+8) bitben úgyis ott van a maradék 3.
A call hívás hatására PCLATH regiszter tartalma a PCH-ba kerül, így eljutunk a 0x320 címre.
Aztán jön a korábbi kérdésként is feltett probléma. Mi van ha túlcsordulás történik a összeadás során? (pl offset d'240' lenne?)
(#) kissi válasza szaffo555 hozzászólására (») Ápr 16, 2012 /
 
Szia!

Az ADDWF PCL.F utasítás hatására csak a PCL változik, tehát pl. PC=0x320, W=d'240' --> 0x410 helyett 0x310 lesz a PC tartalma, tehát a táblád "elé" ugrik ( ott bármi történhet ! ) ! A tábla kezdetét ezért tesszük lapkezdetre és az elemek száma ezért korlátos a 16F-nél!

Szimuláld le!

Steve
(#) Hp41C válasza kissi hozzászólására (») Ápr 16, 2012 /
 
Nem csak a 16F -nél... A 18F -eknél még rosszabb a helyzet. Az utasítások minimum 2 byte -ot foglalnak, az addwf PCL,f itt is csak az alsó 8 bitet módosítja. Ebből következik, hogy a maximális méret (az átvitel kezelése nélkül) 128 tétel., és még ügyelnünk kell arra is, hogy az egyes elemekhez tartozó utasítások azonos helyfoglalásúak legyenek.

Ellenben az átvitel kezelhető, nem kell tőle annyira félni:
Bővebben: Cikk

Egy kis segítség a 18F -eken: A movf PCL,w feltölti a PC -nek megfelelő értékkel a PCLATU és PCLATH regisztereket (egy addwf PCL,f viszont nem).
(#) acoustic hozzászólása Ápr 16, 2012 /
 
Sziasztok!

A kérdésem a következő lenne, van egy 5V-os Szilva féle Klón, és egy 16f88 as Pic.
Egy digitális forrasztó állomás hex file, szerettem volna bele égetni, de hibára ált ki.

-Pickit2 Klone: vdd - 4,73V
vpp -12,20V

Az építés leírása szerint mindent végig csináltam, első indításra felismerte a gép(pic18f2550-et elsőre felprogramozza hiba nélkül.3x újra programoztam és csak ez a 2 Pic van itthon). De a 16f88 nem akarja.
Általában a 2-es képen lévő hiba a jellemző.
Törlés után is ugyan ezek a hiba üzenetek és a ("VPP First Program Entry") re sem reagál.

Csatoltam képeket, a hiba üzentekről.

Segítségeteket előre is nagyon szépen köszönöm!
(#) cmdnetwizard hozzászólása Ápr 16, 2012 /
 
Sziasztok!
Van egy PIC16F628A -s Picem, és az a kérdésem, hogy ennek van-e belső oscillátora, és ha igen, akkor CCS -ben hogy tudom ezt beállítani?
Köszönöm!!!
(#) Hp41C válasza cmdnetwizard hozzászólására (») Ápr 16, 2012 /
 
Szia!

A PGM (a 9.) láb be van kötve a PICKit2 6. kivezetésére? A PGM lábat a programozás alatt alacsony szinten kell tartani.

A programban a konfigurációs szóban a LVP módot ki kellene kapcsolni: 0x3F6A helyett 0x3FEA kellene.
(#) cmdnetwizard válasza Hp41C hozzászólására (») Ápr 16, 2012 /
 
Miért kell odakďtni?
Valamint melyik opció kell a konfigba? HS_OSC, XT_OSC, vagy valami harmadik?
Következő: »»   239 / 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