Fórumok
A képen minden infó rajta van: http://dl.dropbox.com/u/364904/mplab.jpg
A PORTC regiszter 0. bitjét nem tudom 1-re állítani, vagy legalábbis se a watch se a special function register ablakban nem látom a változást. Mi lehet a gond?
A programkód pdf-ből lett kimásolva, működni kell.
Hozzászólások
Nem nagyon használok PIC-et, de első ránézésre van valami ellentmondás a register page kiválasztásánál.
Olyan, mint ha a harmadik utasításban éppen törölnéd. Vagy nem jól látom? (Atmelt használok inkább, így ez a hozzászólás nyugodtan tekinthető jóindulatú kontárkodásnak.)
A bsf STATUS,RP0 beállítja az RP0 bitet
a bcf STATUS,RP0 pedig ugyanazt törli, miközben nem látszik, hogy átváltottál volna egy másikra.
AZ RPn bitek a regiszterbank választásához vannak és megfelelően vannak állítva.
Biztosan. Én nem nagyon látom a logikát abban, hogy először beállítom utána pedig törlöm. Lefutó élre állítódik? :)
Regiszter bankokat 8051-es architektúraban láttam (PIC-et nem nagyon használok) de ott ki kellettt választani, hogy melyiket akarom használni. Az az igazság, hogy a PIC-nél ezt a területet nem néztem át, de nem tartom kizártnak, hogy egyszer szükségem lehet rá.
Szerk: Közben megnéztem, valóban jól vannak beállítva. :)
TRISC regiszter a Page1-en van (STATUS RP0:1), a PORTC regiszter Page0 (STATUS RP0:0)
Köszi! Ez majd jól jön, ha PIC-et is fogok használni. Mert biztosan fogok, csak idő kérdése.
Állítsd át digitális I/O-nak az ANSEL megfelelő bitjének törlésével.
BCF STATUS,RP0 ;Bank 0
BCF STATUS,RP1 ;
CLRF PORTA ;Init PORTA
BSF STATUS,RP1 ;Bank 2
CLRF ANSEL ;digital I/O
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
MOVLW 0Ch ;Set RA<3:2> as inputs
MOVWF TRISA ;and set RA<5:4,1:0> as outputs
BCF STATUS,RP0 ;Bank 0
Az adatlap szerint így kell egy portot inicializálni. Az ANSEL valóban kulcsfontosságú.
Na, majd kipróbálom otthon.
Ha a microchip oldaláról letöltött, kezdő lépéseket tartalmazó pdf hello world programja ilyen hibát tartalmaz, kérdéses, hogy érdemes-e tovább foglalkozni ezzel? :)
Égetőm még nincs, kiváncsi vagyok PIC-be égetve működne-e. Én inkább a MPLAB PIC Simulator nem mefelelő konfigurálására gondolnék, vagy ilyesmi.
Az a hello word általános program vagy kifejezetten a 16F690-re íródott?
És ha valami nem megy elsőre, az nem biztos, hogy a valami hibája. ;)
Az adatlapot mindig olvasd el a legelsőtől a legutolsó lapig. Programfejlesztésnél pedig az éppen aktuális rész mindig legyen kéznél. kovacsj-hez hasonlóan én is előkaptam az imént az adatlapot és megnéztem, hogy van-e az RC0-nak analóg funkciója, alapból az van-e bekapcsolva és milyen módon lehet kikapcsolni.
Kifejezetten 16F690-re íródott.
Közben az adatlapon megtaláltam a port inicializálást, most már biztos vagyok benne, hogy ez volt a gond :)
"The ANSEL (11Eh) and ANSELH (11Fh)
registers must be initialized to configure
an analog channel as a digital input. Pins
configured as analog inputs will read '0'."
Eddig nem is néztem ezt a részt, hittem a "PK2 lessons" pdf-nek :)
Köszönöm mindenkinek aki segített.
Tudnál linket adni a példaprogramot tartalmazó doksihoz?
Átnézem és megírom nekik a hibákat, hogy tudják javítani.
Szerk.: Megtaláltam. Szerintem ne ebből tanulj. :(
Így már működik:
http://pastebin.com/AQYM5pVV
Esetleg valami forrást tudsz mutatni, amit érdemes nézegetni kezdőként? (Az adott PIC saját dokumentációján kivül.)
Leginkább a google-t tudom javasolni. Valószínűleg találsz pár könyvet is, ami alapján el lehet indulni. Sajnos a nagy többség a PIC16F84A-ra tartalmaz példaprogramokat, de ezeket a használt PIC adatlapjának segítségével nem nehéz átírni.
http://www.freeweb.hu/t-t/elokep/pic.htm
http://www.covingtoninnovations.com/noppp/picassem2004.pdf
Ezek és a többi talált oldal mellett a Microchip és a ChipCAD fórum, valamint a retro levlista ajánlott információszerzésre.