Fórum témák
» Több friss téma |
Fórum » PIC programozás
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.
Nem, 4 MHz en ketyeg, és én e szerint állítottam be. (16F628A datasheet)
Ok, ezt benéztem, mert a szinkron módhoz tartozó táblát néztem!
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".. )
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.
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. 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...
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
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!
A dokumentációja is ugyan azt az ábrát mutatja, a többit nem értem (nem tudok angolul)
adatlap: Link
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
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... 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:
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.
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
Kezdd így a programot (ha az MPLAB-ot használod egyáltalán):
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...
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.
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.
CMCON (vagy bármilyen regiszter) értékadása:
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:
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...
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):
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
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)
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:
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 . 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. Idézet: „Az mplab nem ismeri fel a _config részben _CPD_OFF -t” Nálad _DATA_CP_OFF-nak hívják....
Ü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.
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 ...
Ha csak ez a négy eset lehetséges (00, 01, 10, 11), akkor pl. így:
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 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... |
Bejelentkezés
Hirdetés |