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:
Code:
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
Code:
FANISR:
incr FANSIG
Return
die Aktivierung:
Code:
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?
Lesezeichen