[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