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   86 / 1210
(#) icserny válasza HalAnd hozzászólására (») Jan 27, 2011 /
 
Nézd meg figyelmesebben a memóriatérképet! Csak a 0. bankban van memória, a másik bankban csak ugyanazt tükrözi.
(#) MPi-c válasza HalAnd hozzászólására (») Jan 27, 2011 /
 
Az adatlap a Bank1 A0h-DFh-nél ezt írja: "accesses 20h-5F" ... vagyis ott a 20h-5Fh tartományt éri el.

A programodról: az a sok warning azt jelenti, hogy a cimkén kívül az összes többi sort beljebb kell kezdeni (nyomj egy TAb-ot).
Az SFR regiszterekre, és azok bitjeire név szerint lehet hivatkozni az MPASM-ban, mindig nagybetűvel. Így könnyebb megjegyezni. Tehát nem
bsf 0x03,5 hanem bsf STATUS,RP0.

Ezeket a neveket megtalálod az adott PIC adatlapján kívül, a PIC include fájlában ami a ...\Microchip\MPASM Suite\ könyvtárban van.
(#) HalAnd válasza MPi-c hozzászólására (») Jan 28, 2011 /
 
icserny, MPi-c :
Köszönöm szépen a gyors segítséget. Így már rendben. Pontosabban tudom, hogy mit értettem félre. Én azt hittem, hogy csak az SFR van tükrözve minkét bankra az általános célú regiszterek nem.
Köszönöm még egyszer!

A warning-okat már meg sem mertem kérdezni, hogy mitől lehetnek, bár nagyon zavartak. Az include file-ban még nem nézelődtem.(eddig, de majd mindjárt...) Köszönöm az ezekre adott tanácsokat is.

A címeket csak azért írtam hexában, hogy jobban rögzüljön bennem, az hogy mi hol található. Így az elején ezt fontosnak tartom.
(#) watt válasza HalAnd hozzászólására (») Jan 28, 2011 /
 
Lehet, hogy igazad van, bár nem sok hasznát veszed majd, miután pl. a STATUS C, Z az adott, és nem igazán érdekes, hanyadik biten van. Ha igen, ott az adatlap. Azért érdemes még jeleket használni, mert ha segítséget kérsz, senki nem szívesen böngészi az adatlapokat a bitek után, miután mi sem így használjuk, ezért nem tudjuk mindet fejből.
(#) kissi válasza HalAnd hozzászólására (») Jan 28, 2011 /
 
Ha zavar a warning, akkor a project ablakban jobb egérgomb katt az *.asm fájlon --> Build Options --> Categories--> Output Diagnostic level --> Errors only !

Én is így használom általában, nem zavaró a sok figyelmeztetés!

Steve
(#) Hp41C válasza kissi hozzászólására (») Jan 28, 2011 /
 
Szia!

Ha csak egyféle / néhány zavar (pl. bankváltásnál, lapváltásnál kiírt), akkor
  1. ; Disabling warning messages
  2.         errorlevel -302                 ; Disable "Register in operand not in bank 0"
  3.         errorlevel -306                 ; Disable "Crossing page boundary"
(#) Baxi hozzászólása Jan 28, 2011 /
 
Hi Mesterek
Van egy kis gondom a prg debug-nál tökéletesen megy lépésről lépésre, de ha pic "futtatja" akkor nem megy.
Mi lehet a gond?

FUTFENY.asm
    
(#) trudnai válasza Baxi hozzászólására (») Jan 28, 2011 /
 
org 0 -t tegyel az elejere elso lepesben.
(#) Hp41C válasza Baxi hozzászólására (») Jan 28, 2011 /
 
Szia!

Az MpLab ablakában felül középen a Debug módot állítsd át Release módra.
(#) Baxi válasza trudnai hozzászólására (») Jan 28, 2011 /
 
Raktam ORG 0, de semmi.
Most jelenleg úgy megyen hogy RCB4,RCB6-on lévő ledek világítanak ha megnyomom a gombot (ami a RC0-van) akkor RCB2,RCB4-en levő ledek világítanak.
Annyi különbség van a debug illetve a pic-es futtatáskor hogy debugba a CALL KESL kiszedem hogy ne keljen végig léptetni. Lehet hogy ez lenne a gubanc?
(#) trudnai válasza Baxi hozzászólására (») Jan 28, 2011 /
 
Ebben a kodban amit mellekeltel nincs gomb nyomas...
(#) Baxi válasza Hp41C hozzászólására (») Jan 28, 2011 /
 
Átállítottam, de ugyanaz.
Egyébként mi a különbség a Debug és a Release mód között?

Bocsánat valamit benéztem, kimásoltam TXT-be.
(#) trudnai válasza Baxi hozzászólására (») Jan 28, 2011 /
 
Meg par megjegyzes:

1. A fo problema valoszinuleg, hogy a PORTB nincs rendesen felinicializalva. Hogy hogyan kell, nezd meg a pelda programot az adatlapban. (118. oldal avagy 10.2 fejezet)

2. Az alapbeallitasokban a radix az 16, nem 10. Magyarul nem decimalis, hanem hexadecimalis szamokat feltetelez. Decimalis szamokat pl .255 vagy D'255' alakban lehet megadni.

3. Nem tudom most hirtelen a 01234H vagy a 0011B jeloles mukodik-e. Ezt vagy H'01234' vagy 0x01234 alakban ill B'0011' alakban erdemes beirni.

4. 18F-ben nem kell neked a BANKSEL az SFR eleresehez, az automatikusan access modban elerodik (igy jo magyarosan).

5. TEMP valtozo neked tulajdonkepp nem is kell, csak a LATB, hisz az mar onmagaban egy arnyek regiszter, nem kell annak egy masik arnyek regiszter (ehhez az egyszeru alkalmazashoz).

6. BRA utasitas csk egy szot foglal le a program memoriabol mig GOTO 2-t. Ha kisebb ugrasokat hasznalsz erdemesebb ezt hasznalni

7. CALL-lal ugyanaz a helyzet, helyette RCALL-t erdemes hasznalni

Tehat 4. - 7. pontok miatt:

  1. BALRA:
  2.         RLNCF           LATB, F
  3.         RCALL           KESL
  4.         BRA             ELEJE


8. Skip utasitast egyszerubben is fel lehet hasznalni:

  1. ELEJE:
  2.         BTFSS           PORTC,0 ; ha gomb akkor 0 ugrik
  3.         GOTO            JOBRA        
  4. BALRA:


9. Mindig tedd ki a target-et, ne hagyatkozz az alapertelmezettre, pl jelen esetben az 'F'-et:

  1. CIKL:
  2.         DECFSZ  SZAM1,F
  3.         BRA     CIKL
(#) Baxi válasza trudnai hozzászólására (») Jan 28, 2011 /
 
Köszönöm, hogy átnézted, és a magyarázatot!
A radix-ot itt átálítottam, s így elvileg jó, vagy nem?
Na áttanulmányozom a leírtakat.
Viszont annak örülök hogy a 18fXXXX sorozatú PIC-ekben akkor automatikus a bankváltás.

Névtelen.jpg
    
(#) icserny válasza Baxi hozzászólására (») Jan 28, 2011 /
 
Idézet:
„MOVWF TEMP,W
MOVWF LATB,W
MOVWF TEMP”

Ezekkel nem tudom, hogy mit akartál csinálni, de szerintem nincs értelmük. Vagy MOVF kellene, vagy a W célmegjelölést kell elhagyni az első két utasításnál.
Idézet:
„Viszont annak örülök hogy a 18fXXXX sorozatú PIC-ekben akkor automatikus a bankváltás.”
Erről szó nincs! Csak értelmesebben vannak elhelyezve, és nagyobb az egyidejúleg látott bank mérete. Sok PIC-nél az összes SFR regiszter belefér, meg az adatmemória eleje is látható. A varázsszó: ACCESS BANK
(#) Hp41C válasza Hp41C hozzászólására (») Jan 28, 2011 /
 
Csak úgy magamnak írom...

Idézet:
„4. 18F-ben nem kell neked a BANKSEL az SFR eleresehez, az automatikusan access modban elerodik (igy jo magyarosan).”


Ne hirdessük, mert nem igaz az újabb, több perifériával rendelkező kontrollerekre: 18F2580 CAN, 18F2680 ECAN, 18F97J60 Ethernet és tárasikra. Annyi igaz csak, hogy egy lapon nem 32 FSR érhető el, hanem 256. Amennyiben a kontroller 128-nál több FSR-rel rendelkezik, akkor kell a bankváltás. A 0xF00 és 0xF7F közötti FSR -ek a 15. bank kiválasztásával érhetők el. (A BSR regiszter beállítása...)

Még két mód áll rendelkezésre:
- Indirekt elérés - a teljes cím az FSRx -ből jön,
- movff utasítás - mindkét regiszter teljes címe az utasításban van.

Jelentős segítség az ACCESS bank, de ezeknél a kontrollereknél nem elég.
(#) Hp41C válasza Baxi hozzászólására (») Jan 28, 2011 /
 
Szia!

Debug módban egy programrészletet tesz még a programodhoz, amivel a nyomkövetés során a fejlesztő eszközzel (ICD2, ICD3, PICKit2, PICKit3, stb.) kommunikál.

Release módban csak a programod kerül a kontrollerbe.
(#) trudnai válasza Baxi hozzászólására (») Jan 28, 2011 /
 
Kiegeszitve icsernyit:

Valoban sok alkalmazashoz elegendo, ha az ACCESS bankban kotoraszik az ember, de ezen felul 'allandora' beallit egy masik bankot amit bankos eleresben er el, azonban mivel ezt 'allando' jelleggel hasznalja, a bankot nem kell a program vegrehajtasa kozben valtania, megis eleg nagy terulet all rendelkezesre.

Abban az adatlapban amit belinkeltem neked a 68. oldalon az 5.5-os abran latszik jo, hogy mi van, tehat a normal bankos eleres nagyon hasonlit a 16F-es PIC-ekehez, mig az access ram-os eleres eseten tulajdonkepp egy olyanbankot latsz, aminek az eleje szabadon felhasznalhato RAM, a vege pedig a specialis regiszterek -- es akkor ugye ezt a speci bankot fuggetlenul a bank valaszto regisztertol ered el, csupan az access mod kivalasztasaval (amit a fordito neked automatan elintez, de kezzel is megadhatod ha akarod)...

Namost, ezt nehanyan meg azzal fejelik meg, hogy a fobb processeknek kulon lapjuk van a lokalisok szaara, igy fuggveny belepeskor valtanak bankot ill kilepeskor vissza allitjak az eredeit (vagy a hivo intezi el, ez attol fugg hogy csinajak meg. Nyilvan ekkor akar tobb fuggveny is osztozhat ugyanazon a bankon, a lenyeg, hogy erosen lecsokkentik a futas kozben szukseges bank valtasok szamat.

Na es akkor erre meg pakolgatnak olyan okossagokat, hogy a tobbi bankot RAM-kent hasznaljak es onnan MOVFF-el emelik at a sajat bankjaikba avagy INDF cimzessel dolgoznak onnan.

Hogy mi a jo megoldas azt nehez megmondani -- de ez mar nagyon elkanyarodik az eredeti kerdestol. Csupan csak fel szerettem volna vazolni, hogy a lehetosegek korlatlanok es sok jopofa dolgot lehet megcsinalni, de ahogy icserny emlitette volt a 18F-ben is vannak bankok.
(#) Baxi válasza trudnai hozzászólására (») Jan 28, 2011 /
 
Hi
Na ez egy kicsit még kínai, de rajta vagyok.
Na így megyen a prg szépen, köszönöm a segítséget.
Lehet hogy itt is van fölösleges bank váltás, de hiába kerestem a adatmemória térképet nem találtam a 18f2550 adatlapjában, de biztos Én vagyok a bamba.
(#) icserny válasza Baxi hozzászólására (») Jan 28, 2011 /
 
Az SFR tartományvan BSR-nél keresd! (Bank Select Register)

Az utasításoknál meg MOVLB k.
(#) HalAnd válasza watt hozzászólására (») Jan 28, 2011 /
 
Őszintén szólva még elég ködös nekem ez az egész. Nem voltam benne biztos, hogy jó az nekem, ha memorizálom a speciális bitek/bájotk elhelyezkedését (de elsőre jó ötletnek tűnt), de elég könnyen meggyőztetek, hogy nem jól gondolom.
Akkor hát ezután nem vacakolok a hexás címekkel, hanem úgy tanulom ahogyan mondtátok.
És még egyszer köszönöm, mindenkinek a válaszait(na meg a türelmét a kezdő kérdéseimhez). Különösen MPi-c nek, aki még a hibaüzenetek miértjére is kitért, no és az include fájlok tartalmára is felhívta a figyelmem.
(#) trudnai válasza HalAnd hozzászólására (») Jan 28, 2011 /
 
Nem a mazochizmus a vegcel hanem a PIC architekturajanak megismerese
(#) vilmosd válasza HalAnd hozzászólására (») Jan 29, 2011 1 /
 
Hali
Ha egy kis olvasnivalora vagysz, akkor latogass el a konyvtaramba. Talalhatsz jo konyveket, es mintapeldakat. Van egy 40 peldas ASM csomag, ami a kezdestol a LCD kezelesig vegig vezet. Erdemes a kitaposott utat kovetni.
(#) Hp41C válasza icserny hozzászólására (») Jan 29, 2011 /
 
Szia!

Idézet:
„MOVWF TEMP,W
MOVWF LATB,W
MOVWF TEMP”


Sajnos itt még rosszabb a helyzet, mert ezeknek az utasításoknak a második paramétere az a, azaz étéke ACCESS vagy BANKED lehetne. Az ACCESS értéke 0, a BANKED értéke pedig 1. A fent idézett sorokban a helyére a d paraméter konstansa kerül, ahol a f értéke 1, a w értéke pedig 0, ha elhagyjuk, akkor f azaz 1 értéket kap.
A lefordított utasítások úgy fognak működni, mintha ezeket a sorokat írták volna le:
  1. MOVWF TEMP,ACCESS
  2. MOVWF LATB,ACCESS
  3. MOVWF TEMP,ACCEESS

Itt még nem okoz problémát, de az alábbi két sor már nem ugyanazt végzi el:

  1. XORWF LATB,F     ; xorwf LATB,f,ACCESS
  2. XORWF LATB,ACCESS             ; xorwf LATB,w,ACCESS

Sajnos az MpLab Assemblere nem ellenőrzi a paraméterek nevét, csak az értékekiet.
(#) trudnai válasza Hp41C hozzászólására (») Jan 29, 2011 /
 
Idézet:
„Sajnos az MpLab Assemblere nem ellenőrzi a paraméterek nevét, csak az értékekiet.”


Nem is ellenorizheti, hiszen ezek csak egyszeru ertek behelyettesitesek, aminek nincs tipusa. Valoszinuleg lint-tel vagy plint-tel meg lehetne oldani a figyelmezteteseket.
(#) HalAnd válasza vilmosd hozzászólására (») Jan 29, 2011 /
 
Huhh, ez aztán a bőséges olvasni való! Kösz neked is.
(#) edison14 hozzászólása Jan 29, 2011 /
 
Hali. Egy 2x16 karakteres LCD-re szeretnék kiíratni szöveget. Van egy kész programom amiben 4bites módban van vezérelve az LCD. Az első sorban van egy felirat és mellette írja ki a mérés eredményét. Ezt szeretném áttenni a 2 sor közepére és az első sorba pedig a program elején szeretnék kiíratni egy szöveget. Ehhez kérnék segítséget, hogy 4 bites módban hogyan vezéreljem a kijelzős és hogy a mérést hogyan vigyem át a második sorba. ITT található a kapcsolás és minden egyéb a készülékhez.
A segítségeteket előre is köszönöm.
(#) Hp41C válasza edison14 hozzászólására (») Jan 30, 2011 /
 
Szia!

A 2. sor a belső memória 0x40 pozíciójától kezdődik. A kurzor pozíciója a 0x80+pozíció paranccsal állítható.
(#) Baxi hozzászólása Jan 31, 2011 /
 
Hi Mesterek!
Lassan kezdem feladni.
Szóval próbálgatom a PCL-es RETLW-s parancsot.
Elvileg az úgy menne hogy a hogy a programszámlálóhoz=62 hozzá adom az épen aktuális W=2 értékét s akkor ez elugrik (62+2=64) oda s visszatér abban a sorba berakott X értékkel. Ez megyen is de nem értem hogy a watch ablakban nézem akkor a W aktuális értéke 2 a PCL=62 s ezeket összeadatom vele ADDWF akkor ez lesz=66 . Nem értem!

A másik problémám hogy elvileg XOR paranccsal lehet két kőlombozó regisztert/byte-ot összehasonlítani.
MOVLW 0xFF
MOVWF EGYIK
MOVLW 0xFF
XORWF EGYIK,W
BTFSC STATUS,Z (ha 1 akkor ugrik)
és ha jól tudom akkor ennek a müveletnek az eredménye 0 kel lennie az a Z beáll egybe. Ezt megnézem s ugratom a prg ahova gondolom. És ezután törlöm a Z-t.
Próbáltam ezt AND logikával is, de szintén az se azt csinálja amit Én szeretnék!

Más a Z C és a ehez hasonló Status regiszter bitjeit hogy tudom bevarázsolni a watch ablakba?

Vagy mit érdemes két byte összehasonlítására használni?
Segítséget előre is köszönöm.
(#) icserny válasza Baxi hozzászólására (») Jan 31, 2011 /
 
Amióta elektronikus számítógépet gyártanak, az utasításszámláló mindig a következő utasításra mutat. Tehát ha a 62. címen levő utasítás hajtódik végre, akkor a 64. címre. Gondolom, ezért lesz belőle 66, de mindez az adatlapban le van írva.

Idézet:
„BTFSC STATUS,Z (ha 1 akkor ugrik)”
Dehogy ugrik! Skip if Clear, azaz akkor ugrik, ha a bit nulla. A Z bit pedig akkor nulla, ha az eredmény nem nulla.
Következő: »»   86 / 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