PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sind ALLE Interrupts wieder ON nach Enable Interrupts?



sBronco
18.07.2011, 18:00
Ich bastell grade an einer 6 Kanal Lüftersteuerung, benutze dafür einen Mega128.
Mit dem Timer2 erzeuge ich eine 10ms Basiszeit via Interrupt,
dann benutze ich noch Int0-Int3 und Int6 + Int7 für die Drehzahlüberwachung.
Da habe ich jetzt verschiedene Methoden ausprobiert zB. 100ms warten >> Impulse umrechnen oder 600ms warten > Impulse * 50 = Drehzahl.
Das funktioniert auch prächtig, eine Zeitlang, so eine knappe Minute ungefähr, danach funktioniert immer noch alles, nur die For-Next Schleife,
in der meine Temp/Leistungs/Drehzahl- Anzeige aktuallisiert wird, bleibt bei 0, obwohl die lautet:

For uich = 1 to 6
Locate Zeile(uich) , Spalte(uich) : LCD uich
LEISTUNGSANZEIGE ' MACRO Leistung
TEMPERATURANZEIGE ' MACRO Temperatur
DREHZAHLANZEIGE ' MACRO Drehzahl
Next uich

uich beginnt eigentlich mit 1, in dem Fall ist und bleibt das allerdings 0.

es liegt an meiner Drehzahlüberwachung:
der Interrupthandler

FANISR:
incr FANSIG
Return

die Aktivierung:

Select Case fanchannel
Case 1:
cFan = 0
Enable Int3
Case 2:
'Enable Int2
cFan = 0
Case 3:
'Enable Int1
cFan = 0
Case 4:
'Enable Int0
cFan = 0
Case 5:
'Enable Int7
cFan = 0
Case 6:
'Enable Int6
cFan = 0
End Select
FANSIG = 0
es ist immer nur 1 Int aktiv.

zu beginn der Anzeigeroutine steht: Disable Interrupts
zum Ende Enable Interrupts.

werden da alle Enabled? also auch die die nicht enabled waren?

PicNick
19.07.2011, 07:51
Nein. Für Interrupts gibt es die individuellen Flags UND den generellen Flag
wenn letzterer enabled ist, gilt wieder die indiviuelle Einstellung.
( wäre auch sonst ein desaster)

sBronco
19.07.2011, 14:58
Ja, so hab ichs mir jetzt aus der Bascom Hilfe auch zusammengereimt, war mir halt nicht sicher.

Ich habe jetzt versuchsweise ohne Disable Interrupts sondern mit Start/Stop gearbeitet, selbes Ergebnis, nach geraumer Zeit flippt das Teil aus, und zählt nicht mehr hoch, aber nur dieser ganz Spezielle Teil, alles andere arbeitet normal weiter.