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   614 / 1210
(#) edison14 válasza Hp41C hozzászólására (») Jan 4, 2015 /
 
Köszönöm a magyarázatot!
Bocsánat hogy állandóan jövök a kérdéseimmel, de még van mit tanulnom a témában. Már értem a lapozás lényegét és hogy miért is használják. Közben olvasgattam a PIC adatlapját és ezt találtam:

Idézet:
PIC18 microcontrollers implement a 21-bit Program Counter (PC) that is capable of addressing a 2-Mbyte program memory space.”


Ezt a részt kellett volna csak elolvasnom amiből már következtethettem volna, hogy az én PIC-em 8k-s területén nem kell semmilyen plusz műveleteket végeznem.
(#) Balagemann2031 hozzászólása Jan 4, 2015 /
 
Sziasztok! Egy bagatel kérdésem lenne, van 4db 8 bites regiszter R1,R2,R3,R4, mikor UART-on bejön adat, akkor RCREG-ből bemásolom R1-be az értéket. RRCF bitforgatóval minden bájt érkezésekor átforgatom az értéket a következő (R2) regbe. A problémám ott van, hogy R4 már első forgatásnál belefordul R1-be...
  1. MOVLW           D'8'
  2.         MOVWF           RT_POINTER
  3. UU
  4.         RRCF            R1
  5.         RRCF            R2
  6.         RRCF            R3
  7.         RRCF            R4
  8.         DECFSZ          RT_POINTER,F
  9.         GOTO            UU


Valahogy nem jövök rá, hogyan kerüljem el, hogy visszaforogjon R4, R1-be. Valaki tudna segíteni?
(#) killbill válasza Balagemann2031 hozzászólására (») Jan 4, 2015 /
 
Az direkt van, hogy egy nyolcas ciklussal masolsz a carry-n keresztul bitenkent at harom byte-ot?
Jol ertem, hogy azt szeretned,hogy r4 = r3, r3 = r2, r2 = r1?
A hozzászólás módosítva: Jan 4, 2015
(#) icserny válasza Balagemann2031 hozzászólására (») Jan 4, 2015 /
 
Miért zavar ez, ha a következő karakter beérkezésekor úgyis felülírod R1-et?
(#) Balagemann2031 válasza killbill hozzászólására (») Jan 4, 2015 /
 
Nem a másolás a lényeg, hanem hogy ez R1 re érkezzen mindig a legfrissebb érték, és tolódjon hátrafelé, ahogy jönnek újabb bájtok.
(#) Balagemann2031 válasza icserny hozzászólására (») Jan 4, 2015 /
 
Azért, gond, mert valamiért nem tudom R1 értékét megjeleníteni kijelzőn. Viszont 4 bájt beérkezése után megjelenik az R1-en a negyedik bájt. Nade közben kitaláltam, hogy nem forgatással fogom megoldani.
(#) killbill válasza Balagemann2031 hozzászólására (») Jan 4, 2015 /
 
Hat akkor masold a harom byte-ot at, es az R1-be a beerkezett karaktert. En csak azt nem ertettem, hogy sima byte mozgatas helyett miert bitenkent masolsz.
A hozzászólás módosítva: Jan 4, 2015
(#) ktamas66 válasza Balagemann2031 hozzászólására (») Jan 4, 2015 / 1
 
Töröld a carry-t mielőtt rotálod, ha azt szeretnéd, hogy mindig 0 legyen R1-ben.
(#) Balagemann2031 válasza killbill hozzászólására (») Jan 4, 2015 /
 
Igen, én sem értem miért ezen szórakozok már fél órája Lehet kezdek fáradni reggel óta...
(#) Balagemann2031 válasza ktamas66 hozzászólására (») Jan 4, 2015 /
 
Köszi, erre nem gondoltam!
(#) icserny válasza Balagemann2031 hozzászólására (») Jan 4, 2015 /
 
Idézet:
„Nade közben kitaláltam, hogy nem forgatással fogom megoldani.”
Négy bájt esetén egyszerűbben is megoldható a pakolgatás.

Jobb helyeken viszont gyűrűs tárakat (ring buffer) alkalmaznak már ezer éve! Nem a tárban levő adatokat pakolgatják ide-oda, hanem beviteli és kiviteli mutatókat léptetnek.
(#) killbill válasza icserny hozzászólására (») Jan 4, 2015 /
 
Még a ring buffer-nél is van egyszerübb megoldás, de csak szigorúan jobb helyeken:
  1. #include <stdint.h>
  2.  
  3. uint32_t x;
  4.  
  5.   x = (x << 8) | newdata;

(#) Hp41C válasza killbill hozzászólására (») Jan 4, 2015 /
 
Azt hiszed ez nem pakolgatásra fordul 8 bites környezetben?
A hozzászólás módosítva: Jan 4, 2015
(#) Hp41C válasza Hp41C hozzászólására (») Jan 4, 2015 /
 
A valóság még rosszabb. A C18 egy 8 -as ciklusban bitet léptet majd 32 bitre végrehajtja a logikai vagy műveletet:
  1. unsigned long buf;
  2. unsigned char new;
  3. //.....
  4. 429:                    buf = (buf << 8)| new;
  5.   002E    0E08     MOVLW 0x8
  6.   0030    0B1F     ANDLW 0x1f
  7.   0032    C0AE     MOVFF 0xae, 0x53
  8.   0034    F053     NOP
  9.   0036    C0AF     MOVFF 0xaf, 0x54
  10.   0038    F054     NOP
  11.   003A    C0B0     MOVFF 0xb0, 0x55
  12.   003C    F055     NOP
  13.   003E    C0B1     MOVFF 0xb1, 0x56
  14.   0040    F056     NOP
  15.   0042    E007     BZ 0x52
  16.   0044    90D8     BCF 0xfd8, 0, ACCESS
  17.   0046    3653     RLCF 0x53, F, ACCESS
  18.   0048    3654     RLCF 0x54, F, ACCESS
  19.   004A    3655     RLCF 0x55, F, ACCESS
  20.   004C    3656     RLCF 0x56, F, ACCESS
  21.   004E    06E8     DECF 0xfe8, F, ACCESS
  22.   0050    E1F9     BNZ 0x44
  23.   0052    C0B2     MOVFF 0xb2, 0x57
  24.   0054    F057     NOP
  25.   0056    6A58     CLRF 0x58, ACCESS
  26.   0058    6A59     CLRF 0x59, ACCESS
  27.   005A    6A5A     CLRF 0x5a, ACCESS
  28.   005C    5053     MOVF 0x53, W, ACCESS
  29.   005E    1057     IORWF 0x57, W, ACCESS
  30.   0060    0100     MOVLB 0
  31.   0062    6FAE     MOVWF 0xae, BANKED
  32.   0064    5054     MOVF 0x54, W, ACCESS
  33.   0066    1058     IORWF 0x58, W, ACCESS
  34.   0068    6FAF     MOVWF 0xaf, BANKED
  35.   006A    5055     MOVF 0x55, W, ACCESS
  36.   006C    1059     IORWF 0x59, W, ACCESS
  37.   006E    6FB0     MOVWF 0xb0, BANKED
  38.   0070    5056     MOVF 0x56, W, ACCESS
  39.   0072    105A     IORWF 0x5a, W, ACCESS
  40.   0074    6FB1     MOVWF 0xb1, BANKED
(#) killbill válasza Hp41C hozzászólására (») Jan 4, 2015 /
 
Tudom, hogy mire fordul, ezert is irtam, hogy csak "szigoruan jobb helyeken", ezert off a post es ezert van a vegen a smiley.
(#) killbill válasza Hp41C hozzászólására (») Jan 4, 2015 /
 
Asztak@! Na, azert ennel jobb kodra szamitottam. Ezen a forditon lehet optimalizaciot kerni?
Szégyen és gyalázat. Négy MOVFF-fel megoldhatta volna az egeszet.
A hozzászólás módosítva: Jan 4, 2015
(#) mark.budai válasza killbill hozzászólására (») Jan 4, 2015 /
 
Igazad van, elég hülyén és átgondolatlanul fogalmaztam. Van még hova fejlődnöm, de már tudom, hogy tanulni akarom, és fogom is.
Vicsys, nagyon jó lett ez a videó is, most néztem meg. Ha nem írja Péter, hogy elfelejtetted mondani a PIC típusát, fel sem tűnt volna. Csak így tovább, én személy szerint várom a videóidat, nagyon tetszik!
(#) SzT3 hozzászólása Jan 5, 2015 /
 
Sziasztok!

Ismeri valaki a DDE protokolt?
Mármint ha egy program dde protokollal komunikál azt hogyan tudom PIC számára értelmezhetővé fordítani? ( csak számérték)

Köszönöm!
(#) vicsys válasza mark.budai hozzászólására (») Jan 5, 2015 / 1
 
Köszönöm a visszajelzést! Igyekszem folytatni.
(#) ja_kec hozzászólása Jan 5, 2015 /
 
sziasztok valaki tudna video linket kuldeni hogy hogyan kell pic-t programozni?
Elore is koszonom.
(#) Pali79 válasza ja_kec hozzászólására (») Jan 5, 2015 / 1
 
Bővebben: Link
Assembly nyelven
Bővebben: Link
CCS C nyelven
(#) Fricu hozzászólása Jan 5, 2015 /
 
Hali
az IPE 2.05-el "Blank Check"-kel igazoltan törölt (Erase) és 877A-ból kiolvasott és exportált tartalom miért nem nulla?
Miért keletkezik egy 47K-s hex fájl, ami nem üres?

Az előzmény:
szerettem volna tudni korábban mit töltöttem fel a PIC-be, de a kiolvasott hex más volt, mit bármilyen korábbi próbálkozásomé volt. Ezután töröltem, ellenőriztem, kiolvastam, exportáltam - és nem nulla (a tartalom sem).
Mit csináltam rosszul?
kösz
(#) Hp41C válasza Fricu hozzászólására (») Jan 5, 2015 /
 
A törölt 16F* kontroller minden utasítása, konfigurációs szava, felhasználói azonosítója 0x3FFF, minden EEProm cellája 0xFF.
(#) Fricu válasza Hp41C hozzászólására (») Jan 5, 2015 /
 
Ebben mintha lenne más is:

Akkor hogy lehet kinyerni (visszanyerni) a feltöltött hex fájlt?
(bocsi, de még kezdő vagyok)
(#) Bakman válasza Fricu hozzászólására (») Jan 5, 2015 /
 
Ez egy üres kontrollernek tűnik.

Berakod a PIC-et egy programozóba, a programozónak pedig kiadod az olvasási parancsot. Ha a program nincs védve olvasás ellen, akkor látnifogod a tartalmat, amit el is lehet menteni.
(#) Hp41C válasza Fricu hozzászólására (») Jan 5, 2015 /
 
De ez pontosan az, amit írtam.
(#) Fricu válasza Bakman hozzászólására (») Jan 5, 2015 /
 
Üres is, én töröltem kínomban. (Pickit3 + IPE 2.05)
A gondom az, hogy noha üres, a fenti 47kB-os a kiolvasott és exportált fájl.
Az előzményben írtam, hogy az én általam beírt tartalmat olvastam volna vissza, hogy tudjam mit tettem bele annó.
Erre kijön egy 47k-s fájl, ami nem is hasonlít arra, amit beletöltöttem.
Ezért töröltem, és jött ki a feltett hex.
A kérdés továbbra is az:
hogy tudom a korábban beírt hex fájlt kinyerni, eredeti formátumban (hogy azonosítani tudjam, mi volt az) ?
Több darabom is van, a fene emlékszik, melyiket mivel hagytam félbe, mikor utoljára PIC-eztem.
Így már érthető a bajom?
(#) Balagemann2031 válasza killbill hozzászólására (») Jan 5, 2015 /
 
Köszönöm mindenkinek, hogy segítettetek, de megoldottam végül léptetéssel, úgy hogy Carry-t töröltem az utolsó reg után. Egyébként volt egy elírás is elötte a kódban, MOVFF helyett MOVF-t de az már csak a figyelmetlenség volt.
(#) Pali79 válasza Fricu hozzászólására (») Jan 5, 2015 /
 
A pickit saját programjával kiolvasod és elmented. De azokon a címeken ahol nem volt program ott nullák lesznek. Ha jól sejtem a kiolvasott hex soha nem lesz ugyanolyan mint amit te beletöltöttél. A nullák miatt nagyobb lesz, de ebbe nem vagyok teljesen biztos.
(#) Fricu válasza Pali79 hozzászólására (») Jan 5, 2015 /
 
Csináltam egy kísérletet:
Betöltött - kinyert hex fájl.
Az első 9 sor rendben, az megegyezik a betöltöttel, a 10. sor nem ok, ilyen nem volt a bemenőben, más jön ki.
Az utolsó négy sorból (ami 0-val indul) kettő szintén eltűnt, az utolsó kettő viszont megjelenik az export utolsó két soraként..
Szóval nekem káosz
Következő: »»   614 / 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