Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   684 / 1320
(#) The_Saint válasza The_Saint hozzászólására (») Feb 23, 2010 /
 
Hát.... nem boldogulok vele. csatoltam a fájlt, aminek az egyes értékeit szépen sorban egyenként a W-be kellene beolvasni.... az LCD kezelő részt már megoldottam, csak ezt a táblát kéne szépen beolvasni.... van valakinek ötlete? nem nagyon szeretném egyenként átírni retlw 0xXX-re átírni. Előre is köszi a segítséget!

Üdv

bmp.asm
    
(#) watt válasza The_Saint hozzászólására (») Feb 23, 2010 /
 
Itt egy kiragadott részlet.
  1. PAGESEL KARAKTER_TÁBLA
  2.                 MOVLW   HIGH(KARAKTER_TÁBLA)
  3.                 MOVWF   PCLATH                                                   
  4.                 MOVF    MUTATÓ,W
  5.                 CALL    KARAKTER_TÁBLA
  6.                 ; Itt a W-ben lesz a MUTATÓ által mutatott adat.
  7.                 ; Fontos, hogy a Karakter tábla ne nyúljon át laphatáron. Ha igen, több részre kell bontani a táblát!
  8.  
  9.                 RETURN
  10.  
  11. KARAKTER_TÁBLA
  12.                 ADDWF   PCL,F
  13.  
  14.         DT      02,04,0E,01,0F,11,0F,00
  15.         DT      02,04,00,0E,11,11,0E,00
  16.                 stb....


Ha visszaolvasol találhatsz még ezzel kapcsolatos hozzászólásokat!
(#) The_Saint válasza watt hozzászólására (») Feb 23, 2010 /
 
Szia!

Köszönöm, fel kell bontsam 8 bájtokra, vagy hagyhatok 16 értéket egy sorban. 1024 ilyen bájtom van, az egészet 4 részre kell osztanom?, mert a MUTATÓ, nem tud nagyobb lenni 255-nél.... a DT az mit is jelent? DataTable?
(#) watt válasza The_Saint hozzászólására (») Feb 23, 2010 /
 
Idézet:
„fel kell bontsam 8 bájtokra, vagy hagyhatok 16 értéket egy sorban”

Bármennyi lehet egy sorban, amennyit a szerkesztő elbír.
Igen, azért kell felbontanod.
A DT(nem emlékszem minek a rövidítése, de valami olyasmi!) gyakorlatilag egy csomó RETLW-vel pakolja le a bájtokat a program memóriába(8 bitet felhasználva a 14-ből). Ez a direktíva a fordítónak szól.
(#) The_Saint válasza watt hozzászólására (») Feb 23, 2010 /
 
OK, Köszi, megyeget... küzdök vele még kicsit Ezt a DT dolgot még sehol nem láttam...enélkül, bele se merek gondolni....

Köszönöm újfent a segítségedet, már 2 sörrel jövök

Üdv!
(#) Hp41C válasza Tilinkó Gábor hozzászólására (») Feb 23, 2010 /
 
Szia!

A 18F4423, 18F4523 -ban a belső A/D 12 bites, és lábkompatibilis a 16F877-tel ill. 16F887-tel...

Szia
(#) Hp41C válasza watt hozzászólására (») Feb 23, 2010 /
 
Szia!

A szerkesztő miatt kell felbontanod, nem tudod az 1024 adatot egy sorban leírni neki. A mutatót két byte-osra kell definiálni: MUTATOL, MUTATOH, az adatokat pedig egy kezdőcímtől folyamatosan definiálhatod:


A hívás a 0. lapról:

  1. ;               MUTATOH és MUTATOL fel van töltve az első adat címe 0x0000, a másodiké 0x0001....a 256.-é 0x0100,.. az 1023.-é 0x03FF
  2.                 call            GetCharPattern
  3. Visszater
  4.                 bcf             PCLATH,4
  5.                 bcf             PCLATH,3
  6. ; ...

A hívás utáni bit állításokat a hívást tartalmazó lap sorszáma szerint kell beállítani, használható a pagesel makró is:
  1. call            GetCharPattern
  2. Visszater
  3.                 pagesel Visszater
  4. ; ...

A táblázat kezelése:
  1. GetCharPattern
  2.                 movlw   high(CharTab)
  3.                 addwf   MUTATOH,w       ; High byte
  4.                 movwf   PCLATH          ; -> PCLATH
  5.                 movf            MUTATOL,w       ; Low byte
  6.                 addlw   low(CharTab)
  7.                 btfsc           STATUS,C
  8.                 incf            PCLATH,f
  9.                 movwf   PCL                     ;

A táblázat:
  1. org     0x1000  :Nem kell hogy a hívás után legyen...
  2. CharTab
  3.                 dt              0x00,0x00,0x00........
  4. ;  folytatható akár a rendelkezésre álló memória végéig...


Ha használsz megszakítást, a kiszolgáló rutinnak a PCLATH regisztert is mentenie, visszaállítania kell...

Szia
(#) szilva válasza The_Saint hozzászólására (») Feb 23, 2010 /
 
Ha retlw-s táblázatot akarnál csinálni belőle, akkor írj elé dt-t, az pont ezt csinálja: a felsorolt konstansokból retlw-ket gyárt. Más megoldás nincs, hacsak az adott PIC nem tudja olvasni a saját flash-ét a programból. A flash olvasására az adatlapban szoktak lenni példák.
(#) Tilinkó Gábor válasza potyo hozzászólására (») Feb 23, 2010 /
 
Köszi,a jó tanácsot.
(#) watt válasza Hp41C hozzászólására (») Feb 23, 2010 /
 
Bevallom én soha nem használtam 16F-et ekkora táblára(sőt 1 lapnál nagyobb 16F-et, nem is használok.), ezért ez nekem szóba se került, és nem is fog. 18F-eknél az élet sokkal egyszerűbb a táblapointerek miatt. Reméljük The_Saint-nak hasznos lesz!
(#) Thowra hozzászólása Feb 23, 2010 /
 
Mindenkinek köszönöm a segítséget, végül meglett az lcd progi hibája. A BUSY kiolvasásánál átállítottam az RDWD t de a sikeres kiolvasás után mikor visszatértem a nem állítottam vissza . Ezt javítva minden ok.
(#) kissi válasza trudnai hozzászólására (») Feb 23, 2010 /
 
Szia!

Tudom, hogy van 17-es család, csak nem írta a pontos típust, azért füstölögtem!

Steve
(#) kissi válasza zsoltee0001 hozzászólására (») Feb 23, 2010 /
 
A típus alapján az MPLAB a képen láthatót adja!

Steve
(#) vicsys hozzászólása Feb 23, 2010 /
 
Lenne egy amatőr kérdésem:
Játszadozok egy GLCD-vel és szeretnék képet megjeleníteni rajta. Tudnátok javasolni olyan (ingyenes) progit, ami letölthető és mondjuk egy ff bmp-ből készít file-t? Ezt viszont egy 24LC256-ban tárolnám le. Hogyan lehet ezt könnyen gyorsan megoldani? Előre köszi!
(#) The_Saint válasza vicsys hozzászólására (») Feb 23, 2010 /
 
Szia!

Hát én is pont most ezzel bajlódok. sajnos linket nem tudok de 2 progi is jól működik:

LCDAssistant
bmp2asm

mindkettő jó! nekem személy szerint az LCDAssistant jobban tetszik...asm-hez használhatóbb fájlt készít!

Nem tudom itt lehet belinkelnem...ha kell és nem tilos, szívesen megosztom veled!

Üdv

The_saint
(#) vicsys válasza The_Saint hozzászólására (») Feb 23, 2010 /
 
Köszi, rákeresek!
(#) icserny válasza vicsys hozzászólására (») Feb 23, 2010 /
 
LCDAssistant
LCD Assistant is a free tool for converting monochromatic bitmaps to data arrays for easy use with programs for embedded systems with microcontrollers and graphics monochromatic LCD displays like a T6963C, KS0108, SED1335 etc
(#) The_Saint válasza Hp41C hozzászólására (») Feb 23, 2010 /
 
Köszönöm mindenkinek a hozzászólást! Ez a DT dolog volt ismeretlen számomra...de már megyeget a dolog! Hp41c, amit írtál az kicsit zavaros...illetve nem teljesen látom át a dolgot...de ha eleakadok még kérdezek!

Köszi még 1x!


Üdv
The_Saint
(#) vicsys válasza icserny hozzászólására (») Feb 23, 2010 /
 
Igen! Közben már ki is próbáltam. Köszi! Vajon találok a neten leírást, hogy 24LC256-ba hogyan todom belegyömöszölni PK2-vel? Még a PIC-es cucc nélkül?
(#) Attila86 hozzászólása Feb 23, 2010 /
 
A 18F2520-as PIC belső A/D átalakítóját használom és az a baj, hogy hatalmasakat ugrál a mért érték. A nyák természetesen rendesen van huzalozva, és külső referenciát használok. A mérendő jel és a referencia műszerrel mérve gyönyörű, nem ugrál.
Mi lehet a gond? Az A/D konfigurációjában kellene állítani valamit? Érdekes, hogy korábban nem ugrált így, aztán ahogy fejlődött a program egyszer csak megjelent ez a probléma. Az A/D így van beállítva:
  1. movlw   b'00000001'
  2.         movwf   ADCON0                  ;AN0 lesz használva, engedélyezve
  3.         movlw   b'00111011'    
  4.         movwf   ADCON1                  ;külső REF+ és REF- használata, AN0, AN1, AN2 és AN3 lesz analóg bemenet
  5.         movlw   b'10011101'
  6.         movwf   ADCON2                  ;eredmény jobbra igazítása, 6TAD, Fosc/16
(#) t-dani válasza Attila86 hozzászólására (») Feb 23, 2010 /
 
Az EZT követő jónéhány hozzászólásban az AD-ről esik szó, érdemes elolvasni a kritikus időkre vonatkozó hozzászólásokat.
(#) icserny válasza vicsys hozzászólására (») Feb 23, 2010 /
 
Leginkább a PICkit2 README-ben...

  1. Connections for 24LC devices
  2.         ---------------------------------------
  3.         PICkit 2 Pin             24LC Device Pin (DIP)
  4.         (2) Vdd !                8 Vcc
  5.         (3) GND                  4 Vss
  6.         (5) PGC                  6 SCL (driven as push-pull)
  7.         (6) AUX                  5 SDA (requires pullup)
  8.                                  7 WP - disabled (GND)
  9.                                  1, 2, 3 Ax pins
  10.                                     Connect to Vdd or GND per
  11.                                     datasheet and to set address
  12.  
  13.         ! 24LC devices may not program properly below 3.6V VDD.
  14.           This is a limitation of the PICkit 2 AUX IO pin.
(#) Attila86 válasza t-dani hozzászólására (») Feb 23, 2010 /
 
Köszönöm a linket!

Icserny ITT ezt írta:
Idézet:
„Van egy adatgyűjtési idő , ami hőmérséklettől függően Tacq = 1,4 - 2,4 us
Van egy konverziós idő, ami beállítástól függően bitenként Tad = 0,7-25 us (a pontos méréshez a minimumhoz közeli értéket célszerű választani!). A 10 bites ADC-hez ennek a 11-12-szerese szükséges.
Van aztán egy min. 0,2 us körüli kisütési idő, de ez a fentiekhez képest bagatell...”

Nálam 4MHz-en megy a PIC a belső oszcillátoráról. A Tad tehát Fosc/4-nek kellene lennie hogy 1us legyen? Icserny azt írta hogy 0,7us és 25us közt kell lennie és minél kisebb legyen. Ha Fosc/2 lenne az túl kevés, tehát az Fosc/4 a legkisebb tartományon belüli érték. Jól gondolom a számítást?
A Tad tehát akkor 1us. A Tacq-nak akkor 2TAD-nak kellene lennie hogy 1,4 és 2,4us közt legyen.
Könnyen lehet persze hogy rosszul értettem valamit.
(#) El_Pinyo válasza vicsys hozzászólására (») Feb 23, 2010 /
 
PicKit2 saját szoftverével megoldható az biztos, de a leírás elég szűkszavú. Konkrétan a PicKit2 User's guide-ban találtam róla néhány sort, a 3.7-es alfejezetben. Ez hivatkozik a Help>Readme filera, amelyben valóban le is van írva a bekötés, de ennél többet sajnos nem mond.
(#) icserny válasza El_Pinyo hozzászólására (») Feb 24, 2010 /
 
Nem csináltam még ilyet, de a README megadja a bekötést, a többi meg a PICkit2 kezelőprogramja alapján egyértelműnek tűnik:

A PICkit2 kezelőprogramjában kiválasztható a Device Family, ami esetünkben EEPROMS/24LC.
Ezután kiválasztható a konkrét típus: Device=24LC256.
A jobb felső sarokban A0,A1, A2 állítható be. Gondolom, pipa=1, nincs pipa=0 (ha nem így van, akkor én leszek pipa!).

A fenti beállítások után az Import Hex, Write, Read, Verify, Erase bizonyára ugyanúgy használandó, mint a PIC programmemória esetén.
(#) icserny válasza Attila86 hozzászólására (») Feb 24, 2010 /
 
Jól számoltad. Tad értékét azonban érdemesebb Tosc egységekben számolni (Tosc=1/Fosc), mert az adatlapban így van megadva. PIC18F mikrovezérlő esetén a 4Tosc (ami frekvenciában Fosc/4, ahogy Te írtad) max. 5,71 MH-ig jó, tehát a 4 MHz-es belső órajelhez tökéletes.

Érdekes megjegyezni, hogy a PIC18LF sorozatnál lassabban zajlik a konverzió, ott az adatlap szerint Tad = 8 Tosc kellene ugyanehhez a Fosc = 4 MHz-es órajelhez!
(#) watt válasza Attila86 hozzászólására (») Feb 24, 2010 /
 
Ha nem csillapodna a beállítás után, javaslom cseréld ki a 100n-s kondikat 470n...1µF-ra a bemeneten.
(#) spepe válasza watt hozzászólására (») Feb 24, 2010 /
 
Hello!

Köszönöm a válaszokat!

Bekötöttem egy 74LS06-os IC-t a kábel és a PIC közé. Annyi gondom van vele, hogy amikor letesztelem a lábakat miközben a PIC-re rá van kötve akkor max 0,16 V jön ki bekapcsolt állapotban. (A vonalak invertálva vannak és van felhúzó ellenállás is.) Ha az IC nincs rákötve a PIC-re akkor, Kb. 5,2 V van a lábon ( gondolom a felhúzó ellenállás miatt ). Ebből gondolom, hogy az IC-nek lehet valami baj. Lehetséges, hogy az IC megsérült? Csak az a furcsa, hogy már használtam egyszer egy programozó áramkörbe és már akkor sem működött tökéletesen. Eddig még nem sikerült vele az adatokat rendesen kiolvasni.

Lehetséges, hogy az LPT port nem ad elég áramot? A programban egyébként amikor váltom a vonalakat akkor a változás a bement jelzésnél is megjelenik de ha a PIC típusát szeretném ellenőrizni akkor vagy 0x0000-át vagy pedig 0x3FFF-et kapok. (Attól függően, hogy a bemenet invertálva van e vagy nem)

Bye!
(#) Attila86 válasza icserny hozzászólására (») Feb 24, 2010 /
 
Köszönöm a válaszokat! Így sem tökéletes, de már sokkal jobb. Néha-néha ha rájön akkor alámér, de használható tulajdonképpen.
(#) spepe válasza Attila86 hozzászólására (») Feb 24, 2010 /
 
Én a múltkor építettem egy nagyon egyszerű oszcilloszkóp szerűséget 18F4550-es PIC-vel és nekem nem tűnt fel, hogy lettek volna ilyen problémák pedig én negyed ennyire sem néztem meg a pontos számításokat, sőt.

Ráadásul közbe még egy LCD kijelzőre ki is rajzoltam, hogy milyen a hullámforma.

Szerintem az lehet nálad a gond, hogy túl gyorsan akarod mérni. Tudom, hogy az adatlap leírja, hogy pontosan mennyit kell rászámolni, hogy rendben mennyen de szerintem akkor is hagyj rá egy picit. Csak egy pár ciklusos késleltetés kell mondjuk úgy 100-200 órajelnyi már elég lenne szerintem.

Ha gondolod próbáld ki, hátha jó lenne.

Bye!
Következő: »»   684 / 1320
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