[elektro] PIC32 flag probléma
Móczik Gábor
pm_levlista at progzmaster.hu
Sun May 6 13:13:42 CEST 2012
2012.05.04. 13:55 keltezéssel, Balla Zoltán írta:
> Feladó: "F-I"<flaist at gmail.com>
>> Bocs, hogy csak a végén kotyogok bele, de PIC16-, PIC18-nál sem lehet a
>> TXIF-t szoftveresen törölni.
>> Csak akkor lesz nulla, ha a TXREG tele van.
>>
> Ez nyilvánvalóan nem így van a valóságban, máskülönben nem működhetett volna a korábbi procis
> verziója sem!!
> Ha belegondolsz, egyszer kiürül a TXREG, és attól kezdve folyamatos megszakítás keletkezne, mert
> nincs letiltva a megszakítás, és a flag beállt! Már, ha nem lehetne törölni programból... Viszont ez
> nem következik be, mert a bit törlése után(ami állítólag nem törölhető), érdekes módon leáll a
> megszakítás...
Én ugyanebbe a hibába belefutottam kb. 7 évvel ezelőtt talán még PIC16
esetén, ott sem a flag-et kellett törölni, hanem tiltani a megszakítást.
Nekem ott sem működött úgy, ahogy elgondolod, de persze attól lehet
igazad, ha más típusokat használtál mint én.
Az adatlapokban explicite le van írva egyébként, hogy fel kell tölteni a
TXREG-et a megszakítás törléséhez. Hogy egyes típusokban te tudtad a
flag-et külön törölni, mondjuk hogy véletlen bug vagy feature.
Lényeg, hogy nem változtatták meg a működést, a koncepciód alapvetően
rossz, örülj hogy csak most bukott ki.
Jó tanácsként mondom, hogy nézd át a szoftvereidet, mert alapvetően
kétféle megszakítás létezik.
Az egyik esetben a flag beállítódását egy pillanatnyi esemény okozza
(pl. timer overflow, interrupt on change), jelez neked valamit, de
magától elmúlik, csak a flag-et kell törölni.
A másik fajta, amit nem esemény, hanem egy állapot okozza (pl. kiürült a
TX regiszter). Ilyenkor alapvetően nem a flaget kell törölni, hanem az
okot, az állapotot kell megszüntetni.
Az más kérdés, hogy ekkor a flag vagy törlődik automatikusan vagy külön
törölni kell, nem mindig egységes!
Mindig mindent az adatlap/errata alapján. Az a garantált.
More information about the Elektro
mailing list