Stojan Trifunovic
Član broj: 15156 Poruke: 366 *.yu Via: [es] mailing liste
|
Ne! Ne na promenu stanja, vec na promenu ivice (sa +5V na 0V) za pin
RB0. Za promenu stanja (sa +5V na 0V ali istovremeno i sa 0V na +5V)
koriste se pinovi RB4 do RB7.
Pretpostavljam da za detekciju infracrvenog koda koristite poolovanje,
odnosno povremeno testiranje odgovarajuceg pina za detekciju
odgovarajuce promene (kako kazete "Kada se dekodiranje vrsi bez
prekida") ili pak interapte po promeni stanja na RB4 do RB7 pinovima.
U slucaju da je u pitanju detekcija interaptima na RB4 do RB7 pinova,
normalno je da ne mozete dobiti nikakve komande, jer su u interapt
rutini vec zabranjeni novi interapti (automatskim resetovanjem
GIE) sve do retfie instrukcije koja ce opet automatski setovati GIE.
U vezi toga nije mi najjasniji Vas opis "Kada krenem da obradjujem
prekidnu rutinu disejblujem sve prekide".
Samim tim, interapti iz interapt rutine nisu moguci (tacnije jesu uz
nasilno resetovanje GIE unutar interapt rutine, ali onda se mora uzeti
u obzir i nivo steka).
Ukoliko pak za detekciju koristite poolovanje, ne vidim razloga zbog
kojih bi uopste vrsili isto to poolovanje iz interapt rutine. Sama
interapt rutina uglavnom se pravi tako da traje sto krace i da njeno
izvrsavanje ne ometa (u vecoj meri) glavni program. Ukoliko je ovo
situacija, moguce da imate problema sa registrima za detekciju IC
koda, a koji se koriste i u glavnom programu i u interapt rutini. Da
ne bi dolazilo do njihove kolizije, potrebno ih je snimiti (kao
snimanje W i STATUS registra na pocetku interapta). Drugi problem
mogao bi biti preveliki broj potprograma, sto moze prepuniti stek
(niste naveli sa kojom familijom PIC radite).
Na primer, ukoliko imate PIC16 seriju (sa 8 nivoa steka), i u glavnom
programu ste pozvali jedan potprogram, iz njega drugi, pa iz njega
treci, pa cetvrti i peti, i onda odete u interapt rutinu (to je vec
sesti nivo) i iz nje pozovete jedan potprogram (sedmi nivo) pa jos
jedan (osmi) i jos jedan (prvi - prebrisana adresa povratka),
ocigledno je da se nikada necete moci izvuci iz interapta. Da bi ovo
proverili mozete simulirati program u MPLAB SIM-u i koristiti View
- Hardvare Stack opciju.
Da bi najbezbolnije detektovali do cega se u stvari radi, najbolje
kopirajte kompletnu dekodersku rutinu u interapt rutinu preko Copy
Paste ali sa sopstvenim posebnim registrima.
|