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:
uich beginnt eigentlich mit 1, in dem Fall ist und bleibt das allerdings 0.Code:For uich = 1 to 6 Locate Zeile(uich) , Spalte(uich) : LCD uich LEISTUNGSANZEIGE ' MACRO Leistung TEMPERATURANZEIGE ' MACRO Temperatur DREHZAHLANZEIGE ' MACRO Drehzahl Next uich
es liegt an meiner Drehzahlüberwachung:
der Interrupthandler
die Aktivierung:Code:FANISR: incr FANSIG Return
es ist immer nur 1 Int aktiv.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
zu beginn der Anzeigeroutine steht: Disable Interrupts
zum Ende Enable Interrupts.
werden da alle Enabled? also auch die die nicht enabled waren?







Zitieren
Lesezeichen