PIC kezdő lépések MPLAB PIC Simulator

 ( tucsok | 2010. november 9., kedd - 7:46 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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.