Fórum témák

» Több friss téma
Fórum » PIC programozás
 
Témaindító: G-Lex, idő: Okt 24, 2005
Lapozás: OK   10 / 66
(#) icserny válasza menyus hozzászólására (») Feb 10, 2009 /
 
Idézet:
„MOVLW D'25' ;BAUD RATE (D'12'=19200) (D'25'=9600 )”

Biztos, hogy 1 MHz-en ketyeg az oszcillátor??????

Mert ha netán a 4 MHz-es belső óra ketyeg (1 MIPS és nem MHz!!!), akkor 103, ill. 51 az adatlap szerinti érték.
(#) menyus válasza icserny hozzászólására (») Feb 10, 2009 /
 
Nem, 4 MHz en ketyeg, és én e szerint állítottam be. (16F628A datasheet)

BRr.jpg
    
(#) icserny válasza menyus hozzászólására (») Feb 10, 2009 /
 
Ok, ezt benéztem, mert a szinkron módhoz tartozó táblát néztem!
(#) menyus válasza icserny hozzászólására (») Feb 10, 2009 /
 
Háát, elbizonytalanítottál kicsit, gyorsban átnéztem Topi cikkét a kommunikáció alapjairól...Én azt hittem én keverem a szinkron / aszinkron átvitelt. ( Ez hirtelen valószínűbbnek tünt mint az hogy te "benézted".. )
(#) menyus válasza menyus hozzászólására (») Feb 10, 2009 /
 
Mi lehet még a hiba hogy nem megy..? Cseréljek PIC et? Egy az egyben átmásoltam Watt egyik 16f628A ra irt példa programjából a soros beállításokat és azzal a programmal sem megy csak a TX.
(#) menyus válasza menyus hozzászólására (») Feb 10, 2009 /
 
Megoldódott a USART probléma. Valamiért nem ment vétel megszakítás nélkül, nem jelzett az RX flag je. Megszakítással működik rendesen, a megszakításban csak az RCIF törlése van. (meg persze az INT elején a regisztermentések, a végén a visszaírás) Ezek szerint nem igaz az info hogy a megszakítások flag jei akkor is jeleznek ha nincs engedélyezve a GIE és a PEIE...legalábbis nálam nem működött így.

Köszönöm a segítséget mindenkinek.
(#) trudnai válasza novarobot hozzászólására (») Feb 10, 2009 /
 
Idézet:
„Szerintem azért (bár lehet hogy tévedek). mert ez c kód, hisz ott van benne hogy c blok meg endc tehát a kettő közötti rész c ben van nem pedig assembly ben.”


Na, ilyen nagyot meg sohasem mosolyogtam Az nem C kod, hanem konstans blokk (Constant BLOCK - CBLOCK)...

Figyi, az MPLAB Help-jeben ott a segitseg, vannak elektronikus, ingyenes konyvek is, meg vannak papir formaban, magyar nyelven is konyvek - ha jol emlekszem a Konya fele konyvet szoktak itt a forumon emlegetni. Ezenfelul az adatlap mint biblia es jelenes konyve olvasando, es mint ilyen mikor PIC-ekkel foglalkozol az elso lepes mindig az kell legyen kinyitod az adatlapot - meg mielott pakahoz nyulnal, vagy aramkort rajzolnal, vagy elgondolkodnal rajta mit is kellene csinalnia a cuccnak...
(#) novarobot hozzászólása Feb 10, 2009 /
 
Megint elakadtam egy kicsit, most érkezett meg a pic-em (végül a PIC16F627A mellet döntöttem mer 16 i-o kapu mellet csak 18 lába van, így még épen befér a tervezet helyére ).

A két problémám, Hogyan kell az porta összes bitjét digitálisra állítani, és mit kell beírni, hogy a belső rc tagot használja (amúgy sem tudom, hogy hova kéne tenni a külső rc tagot ha 18 ból 16 láb foglalt és +2 a táp)?

Drótmodelbe öszedobtam az lpt-s pic égetőt,
de ugye jól értelmeztem, hogy
az égető vpp/mclr lábát a pic 3 as lábára
az égető vdd lábát a pic 14 as lábára
az égető pgd lábát a pic 12 as lábára Kell forrasztani.

A gnd-t és a pgc hova kell forrasztani,
a gnd-re a pic vss (5.) lábát, míg a pgc re a pic pgm(10.)lábát tippelem?
Novarobot
(#) potyo válasza novarobot hozzászólására (») Feb 10, 2009 /
 
Megint nem onnan szeded az információt, ahonnan kellene. Vedd elő a 16F627A adatlapját, és ott keresd meg a lábkiosztását!
(#) novarobot válasza potyo hozzászólására (») Feb 10, 2009 /
 
A dokumentációja is ugyan azt az ábrát mutatja, a többit nem értem (nem tudok angolul)
adatlap: Link
(#) novarobot válasza novarobot hozzászólására (») Feb 10, 2009 /
 
A bekötés megvan (csak rendesen körül kellene néznem néha )
A porta analóg bemeneteit digitális bemenetekre történő átállítás és a belső órajel generátor használatára viszont egyáltalán nincs ötletem.
Enek lenére elkezdem az első pic em égetését (remélem nem szó szerint )
Novarobot
(#) potyo válasza novarobot hozzászólására (») Feb 10, 2009 /
 
Ismét csak azt kell mondanom, hogy nem onnan szeded az információt, ahonnan kellene, bár most épp nincs különbség. De PIC adatlapot MINDIG a microchip.com-ról szedünk!

Az adatlap IO Ports részét és a Configuration Bits részét olvasd el! De angol nélkül nehéz lesz...
(#) icserny válasza novarobot hozzászólására (») Feb 10, 2009 /
 
Idézet:
„A porta analóg bemeneteit digitális bemenetekre történő átállítás”

Le kell tiltani az adott lábakra multiplexelt analóg eszközöket. El kell olvasni az adatlapban az ADC, analóg komparátor, stb. eszköznél, hogy ehhez mit kell az adott eszköz konfigurációs regisztereibe írni.

Idézet:
„és a belső órajel generátor használatára”

Ezt a konfigurációs bitek beállításával lehet elérni. Erre szolgál a programok elején a __CONFIG direktíva.
MPLAB assembly részlet következik:

  1. __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF )


Itt jelzem, hogy az MCLR-t is ki kellkapcsolnod, ha az MCLR láb is kell, és azt csak inputra lehet használni.
Tiltanod kell a Low Level Programmingot is, hogy felszabauljon a PGM láb is.

(#) novarobot válasza icserny hozzászólására (») Feb 10, 2009 /
 
Sajnos nem tudok angolu, és így nem tudom értelmezni az adatlapot sem.

Ha tudnál segíteni az adatlap ezen részének értelmezésében, és abban hogy pontosan mit is irjak bele a program elejére, azt nagyon megköszönném

Maga a program egész jól halad, "csak" annyiban kéne még segítenetek hogy a porta0, porta1, és a porta2 digitális output míg az összes többi porta és portb digitális input legyen.

Novarobot
(#) icserny válasza novarobot hozzászólására (») Feb 10, 2009 /
 
Kezdd így a programot (ha az MPLAB-ot használod egyáltalán):

  1. #include <p16F627A.inc>
  2.      __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _BOREN_OFF & _PWRTE_OFF & _MCLRE_OFF & _LVP_OFF & _CP_OFF & _CPD_OFF )


Fig 10.1 jobb felső sarkában van a komparátorok kikapcsolása (CMCON2..0= 111).

Outputhoz TRISA megfelelő bitjeit 0-be, a bemenetekhez tartozót pedig 1-be kell állítani. TRISB hasonlóan konfigurálandó (ez a B porthoz tartozik).

Nem tudom, hogy mit kell még inicializálni, őszintén szólva nincs kedvem végigolvasni 178 oldalt...
(#) novarobot válasza icserny hozzászólására (») Feb 11, 2009 /
 
Igen az mplab-ot használom, egész kezdem megszeretni

Az mplab nem ismeri fel a _config részben _CPD_OFF -t , kitöröltem, remélem nem csinált semmi fontosa

Az analog biteket nem tudtam átálítan, (a hex filet szimulátorban tesztelem, de az anlaogo továbbra is analogok, bevallom nem értetem itt pontosan mit kell csinálnom ezzel az utasításal CMCON2..0= 111, mert sehogy nemeszi meg az mplab )

Sajnos hogy belső rc-t használja azt nem tudom kipróbálni, mert a szimulátor ezt nem nézi, és az égetőmmel valami baj van (3db pic-et rögtön kinyírt, ha meg nem nyirja ki akkor az első adatnál kidobja hogy a beírt érték 0x63.. és a kiolvasott érték 0x3ff..) még nem tudom hogy mi lehet a baja.
(#) mgabesz válasza novarobot hozzászólására (») Feb 11, 2009 /
 
Szia.

Idézet:
„bevallom nem értetem itt pontosan mit kell csinálnom ezzel az utasításal CMCON2..0= 111”
.

Ez a sor nem utasítás, hanem azt mutatja, hogy a CMCON regiszter alsó 3 bitjét magasra kell állítanod, pl. a CMCON OR 6 (nem így kell beírni ez csak az elv) paranccsal.
Így a komparátorokat kikapcsolod és sima i/o-ként fognak viselkedni a bemenetek.

Szia.
(#) icserny válasza mgabesz hozzászólására (») Feb 11, 2009 /
 
CMCON (vagy bármilyen regiszter) értékadása:
  1. CMCON= adat


A CMCON2..0= 111 csak azt jelzi, hogy az utolsó három bitbe 1-et kell írni, ez kapcsolaj ki az analóg komparátort. Tehát például így:

  1. CMCON=0x07


Idézet:
„Az mplab nem ismeri fel a _config részben _CPD_OFF -t


Ahány PIC, annyiféle képpen nevezik a konfig biteket. Lásd adatlap, lásd 16f627a.inc. Mindenesetre ez az adatvédelmet kapcsolja ki (Copy Protect EEprom Data vagy ilyesmi...). Nem izgalmas, ha nem állítod most be.

Idézet:
„és az égetőmmel valami baj van”

Feszültségeket és a bekötést nem árt ellenőrizni. Főleg hogy a Vpp feszültség hova megy....

Szerk: az eggyel korábbira hozzászólásra akartam válaszolni, csak mellényúltam...
(#) vilmosd válasza novarobot hozzászólására (») Feb 11, 2009 /
 
Hali
Itt a forumon mar sokszor leirtuk a t-es-t oldal cimet ott talalsz ismertetest magyarul.
Ezen a forumon is van sok dolog a " PIC miertek es hogyanok " thread-ben. Olvasgasd szorgalmasan es sokmindenre valaszt kaphatsz.

A CMCON reg.-be a kovetkezo modon irhatsz ( a tobbibe is):
  1. movlw 0b00000111     ; 0b00000111 a w-be
  2. movwf CMCON     ; a w tartama a CMCON reg.-be

Ez akkor ervenyes ha ASM-ben programozol. Az MPLAB tartalmaz helpet is igaz ezt kulfoldiul irtak, de altalaban mindent konnyebben talalsz eredeti nyelven mint megyarul (oroszul, romanul, szerbul, vagy mas nyelven).
Megoldas : el kell kezdeni angolul tanulni 1000 km/h sebesseggel. Utana minden sokkal konnyebb lesz.
Udv Vili
(#) novarobot válasza vilmosd hozzászólására (») Feb 11, 2009 /
 
Ismerem az oldalt, onnan néztem a legtöbb általam használt parancsot is
Pontosan így próbáltam már 3 órája, de aztán rájöttem hogy a banksel trisa előtt kell beírni na mindegy a lényeg hogy sikerült
Itt a kód, ha minden igaz, ezzel már az összes porta és portb illetve a belső rc tag is be van állítva (legalábbis a pic szimulátor szerint)
  1. LIST P=16F627A
  2. #include <p16F627A.inc>
  3. __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _BOREN_OFF & _PWRTE_OFF & _MCLRE_OFF & _LVP_OFF & _CP_OFF);
  4.  
  5.         ORG     0
  6.  
  7. START
  8.         MOVLW   0x07                   
  9.         MOVWF   CMCON                  
  10.         banksel TRISA
  11.         MOVLW   B'11111000'            
  12.         MOVWF   TRISA                  
  13.         MOVLW   B'11111111'            
  14.         MOVWF   TRISB                  
  15.         BANKSEL PORTA                  
  16. VEGE
  17.         GOTO    VEGE
  18.         END


Az eredeti pic égetőt átalakítom (melléklet), így minden felesleges hibalehetőséget elvileg mellőzöm.
A kérdés, hogy szerintetek jó-e ez a így vagy kihagytam ezzel valami fontosat is?
Novarobot :yes:
(#) kaqkk válasza novarobot hozzászólására (») Feb 11, 2009 /
 
Nem értem ezt már miért egyszerűsíted?
Így sincs túlbonyolítva ! Biztos lehetsz benne
hogy van funkciója minden alkatrésznek , amit
a hibalehetőségek miatt mellőznél .
Tuti hogy minden fontos alkatrészt kiagysz belőle ,de ha működik írd meg ide a topikba és ezentúl mindenki csak evvel a kapcsolással fog égetni .
(#) icserny válasza novarobot hozzászólására (») Feb 11, 2009 /
 
Idézet:
„Az eredeti pic égetőt átalakítom (melléklet)”

Ne tedd, így biztosan nem jó!!!!!!!
Pl. a PDG és al LPT port kimenetét nem szabad direktben összekötni, mivel a PGD kétirányú jel. Az sem egészséges, ha az MCLR jel "lebeg", mielőtt rákapcsolnád a Vpp feszültséget.
(#) icserny válasza novarobot hozzászólására (») Feb 11, 2009 /
 
Idézet:
„Az mplab nem ismeri fel a _config részben _CPD_OFF -t”

Nálad _DATA_CP_OFF-nak hívják....
(#) brato hozzászólása Feb 15, 2009 /
 
Üdv!

Akadt egy problémám pic programozással.
Hogyan lehet az alábbi dolgot megoldani ASM-ben?

Adott egy változó, az értéke 0-3 ig bármi lehet.
A változó értékétől függően kell ugrani 4 cimkére.
PL.: változó=2 ugrás cimke0 -ra.
változó=3 ugrás cimke3 -ra.

Előre is köszi a segítséget.
(#) foxi63 válasza brato hozzászólására (») Feb 15, 2009 /
 
movf ADAT,0 ;W = ADAT
addwf PCL,1 ;közvetett programmemória-címzés
goto NULLA ;itt folytatódik, ha ADAT = 0
goto EGY ;itt folytatódik, ha ADAT = 1
goto KETTO ;itt folytatódik, ha ADAT = 2
goto HAROM ;itt folytatódik, ha ADAT = 3
goto NEGY ;itt folytatódik, ha ADAT = 4
...
(#) brato válasza foxi63 hozzászólására (») Feb 15, 2009 /
 
Köszi a gyors segítséget.
(#) icserny válasza brato hozzászólására (») Feb 15, 2009 /
 
Ha csak ez a négy eset lehetséges (00, 01, 10, 11), akkor pl. így:
  1. BTFSS  VAR,1   ; Vizsgáld a 2.bitet
  2.         GOTO  LESS2   ; bit2=0, var < 2
  3.         BTFSS  VAR,0   ; Vizsgáld az 1. bitet
  4.         GOTO CIMKE0  ; bit1=0, var = 0
  5.         GOTO CIMKE1  ; bit1=1, var = 1
  6. LESS2
  7.         BTFSS  VAR,0   ; Vizsgáld az 1. bitet
  8.         GOTO CIMKE2
  9. CIMKE3
  10.         ........
  11. CIMKE2
  12.         ........
  13. CIMKE1
  14.         ........
  15. CIMKE0
  16.         ........

(#) brato válasza icserny hozzászólására (») Feb 15, 2009 /
 
Köszi neked is a választ.
(#) novarobot hozzászólása Feb 18, 2009 /
 
Hali, megint elakadtam, újra építettem a pic égetőt pontosan úgy ahogy le volt írva nem hagytam ki semmit, független(egy külön számítógép tápról közös földel) tápláltam.
Első bekapcsoláskor elkezdem az égetést mire meghal rögtön hogy 0x1635 írt és 0x3ff8 at olvasott.
A következő bekapcsolásnál rendesen írja és 2% a hex első sorának 6. oszlopában kihal hogy0x3002 írt és 0x1048 at olvasott, ez a hiba állandósult.
Ha beolvasom a pic tartalmát akkor azt látom, hogy a hex első sor első száma 0x1048, ezt többé nem, tudom módosítani, akár mit csinálok ez nem változik, ha újra be írom az eredeti hexet megint a 1. sor 6. akad meg ugyan azzal a hibaüzenettel, de a pic tartalma nem változik.
Ahol a pic et vettem (chip cad) azt tanácsolták hogy a "pgm" lábával is kell kezdeni valamit, nálam az öszes láb "leng" amint hazaértem lekötöm öket gnd re bár a chip cad szerint lenghet, lvp tiltva van.
Mi lehet a probléma?

Novarobot
(#) icserny válasza novarobot hozzászólására (») Feb 18, 2009 /
 
Idézet:
„Mi lehet a probléma?”

Na, ez az, amit mi innen nem tudunk kideríteni. Voltmérő a kézbe, s tessék leellenőrizni a feszültségeket, beleértve az LPT portról jövő szinteket is.

A nem használt lábakat programozáskor nem kell leföldelni. A PGM-et esetleg leföldelheted, ha ez megnyugtat... AZ LVP egyébként szerintem gyárilag engedélyezve van (te fogod majd letiltani, ha sikerül beírnod a config biteket), de a magas szintű programozást ez nem befolyásolja...
Következő: »»   10 / 66
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