Gegeben war ein Touchscreen, per I2C angesteuert und diverse Sensoren/Aktoren. Ausgabe per I2C dauerte bis zu 500ms, solange wurden in der Hauptschleife keine Tasten,... abgefragt. Oft wurden Tastendrücke "verschluckt"
Lösung:
weiterer Vorteil: I2C-Bus wird nur definiert in Hauptschleife bedient, kein Stören von I2C-Kommunikation durch "Zwischenrufe" aus Interrupts heraus
(Projekt dahinter ist eine Wintergartensteuerung.)
Quelltext-Beispiel:
Dim Scheduler_flag As Integer
Const Secupdate = 0
Const Valueupdate = 1
Const Debugupdate = 2
Const Doclearscr = 3
Const Backtocalling = 4
Const Task5 = 5
Const Prevdisplay = 6
Const Nextdisplay = 7
Const Showalert = 15
Do
' - - - - - - - - - - - - - - - - - - - - -
If Scheduler_flag.doclearscr = True Then
Scheduler_flag.doclearscr = False
Call Glcd_clear ' Ausgabe löschen
End If
' - - - - - - - - - - - - - - - - - - - - -
If Scheduler_flag.valueupdate = True Then
Scheduler_flag.valueupdate = False
Call Updatedatedisplay(1)
End If
' usw.....
SecTic: ' von Timer (Uhrzeit) ausgelöst:
pushall
' div. andere Aktionen
Scheduler_flag.valueupdate = True ' Ausgabe updaten
popall
return
Powered by websitebaker, (c) by C. Lotze, based on a design by Chio Maisriml Nutzung der Texte oder Bilder - auch teilweise - nur nach Rücksprache, siehe Impressum!