Hallo,
zum HIntergrund: Das Programm liest ein RC-Signal und schaltet in Abhängigkeit von der Signallänge bestimmte Port ein oder aus. Soweit funktiuoniert alles wie es sein soll. Allerdings kommt es beim Umschalten am Sender ab und an zur kurzfristigen Aktivierung einer anderen Funktion. Das Einschalten findet auch nciht immer statt und es sind auch nicht immer die gleichen Funktionen davon betroffen.
Das Programm läuft auf einem ATMEga8 mit 1 MHz, Erhöhen der Frequenz hat auch keine Lösung gebracht; genauso wenig wie das Einbauen einer Warteschleife vor dem Einstieg in die Abfrage selbst. Die sieht so aus:
Alles anzeigen
Die gute Frage ist nun, wie sich diese ungewollten Schaltvorgänge verhindern lassen. Mir ist dazu bisher nur eingefallen, zu Lasten der Lesbarkeit des Programms den jeweiligen Schaltzustand binär, also mit PortC = &Bxxxxxxx am Ende auszugeben und zuvor im "select case"-Teil das Bitmuster aufzubauen. Wobei ich mir aber icht sicher bin, ob ich damit die Ursache behebe.
Daher meine Frage: Wäre das ein Erfolg versprechender Weg oder habt ihr noch andere Lösungsvorschläge für mich?
zum HIntergrund: Das Programm liest ein RC-Signal und schaltet in Abhängigkeit von der Signallänge bestimmte Port ein oder aus. Soweit funktiuoniert alles wie es sein soll. Allerdings kommt es beim Umschalten am Sender ab und an zur kurzfristigen Aktivierung einer anderen Funktion. Das Einschalten findet auch nciht immer statt und es sind auch nicht immer die gleichen Funktionen davon betroffen.
Das Programm läuft auf einem ATMEga8 mit 1 MHz, Erhöhen der Frequenz hat auch keine Lösung gebracht; genauso wenig wie das Einbauen einer Warteschleife vor dem Einstieg in die Abfrage selbst. Die sieht so aus:
Quellcode
- select case wPulseSwitch 'port activation
- case wSwitchLow(1) to wSwitchHigh(1) 'Blinker left
- toggle BlinkLeft : BlinkRight = 0
- LightBar = 0
- LowLight = 0 : HighLight = 0 : RearLight = 0
- case wSwitchLow(2) to wSwitchHigh(2) 'Blinker right
- BlinkLeft = 0 : toggle BlinkRight
- LightBar = 0
- LowLight = 0 : HighLight = 0 : RearLight = 0
- case wSwitchLow(3) to wSwitchHigh(3) 'Blinker warn
- toggle BlinkLeft : toggle BlinkRight
- LightBar = 0
- LowLight = 0 : HighLight = 0 : RearLight = 0
- case wSwitchLow(4) to wSwitchHigh(4) 'Light bar
- BlinkLeft = 0 : BlinkRight = 0
- LightBar = 1
- LowLight = 0 : HighLight = 0 : RearLight = 0
- case wSwitchLow(5) to wSwitchHigh(5) 'Low light
- BlinkLeft = 0 : BlinkRight = 0
- LightBar = 0
- LowLight = 1 : HighLight = 0 : RearLight = 1
- case wSwitchLow(6) to wSwitchHigh(6) 'Low light + blinker left
- toggle BlinkLeft : BlinkRight = 0
- LightBar = 0
- LowLight = 1 : HighLight = 0 : RearLight = 1
- case wSwitchLow(7) to wSwitchHigh(7) 'Low light + blinker right
- BlinkLeft = 0 : toggle BlinkRight
- LightBar = 0
- LowLight = 1 : HighLight = 0 : RearLight = 1
- case wSwitchLow(8) to wSwitchHigh(8) 'Low light + blinker warn
- toggle BlinkLeft : toggle BlinkRight
- LightBar = 0
- LowLight = 1 : HighLight = 0 : RearLight = 1
- case wSwitchLow(9) to wSwitchHigh(9) 'Low light + light bar
- BlinkLeft = 0 : BlinkRight = 0
- LightBar = 1
- LowLight = 1 : HighLight = 0 : RearLight = 1
- case wSwitchLow(10) to wSwitchHigh(10) 'High light
- BlinkLeft = 0 : BlinkRight = 0
- LightBar = 0
- LowLight = 0 : HighLight = 1 : RearLight = 1
- case wSwitchLow(11) to wSwitchHigh(11) 'High light + blinker left
- toggle BlinkLeft : BlinkRight = 0
- LightBar = 0
- LowLight = 0 : HighLight = 1 : RearLight = 1
- case wSwitchLow(12) to wSwitchHigh(12) 'High light + blinker right
- BlinkLeft = 0 : toggle BlinkRight
- LightBar = 0
- LowLight = 0 : HighLight = 1 : RearLight = 1
- case wSwitchLow(13) to wSwitchHigh(13) 'High light + blinker warn
- toggle BlinkLeft : toggle BlinkRight
- LightBar = 0
- LowLight = 0 : HighLight = 1 : RearLight = 1
- case wSwitchLow(14) to wSwitchHigh(14) 'High light + light bar
- BlinkLeft = 0 : BlinkRight = 0
- LightBar = 1
- LowLight = 0 : HighLight = 1 : RearLight = 1
- case else
- BlinkLeft = 0 : BlinkRight = 0
- LightBar = 0
- LowLight = 0 : HighLight = 0 : RearLight = 0
- end select
Daher meine Frage: Wäre das ein Erfolg versprechender Weg oder habt ihr noch andere Lösungsvorschläge für mich?
Beste Grüße
Jürgen
Jürgen