Hallo zusammen,
ich habe einen 4fach Drehschalter über ein bisschen Logik an 2 Pins (PA5
und PA6) an einem ATMega32 angeschlossen.
Die Logik brauche ich um von den 4 Ausgängen des Schalters auf 2
Eingänge am ATMega zu kommen. Diese besteht aus NOR Gattern und
funktioniert auch wunderbar.
In main() frage ich den Schalter so ab:
1 | uint8_t temp = (PINA & 0x60) >> 5;
|
Wie gesagt das klappt, alle 4 Zustände können einwandfrei erkannt
werden.
Nun habe ich eine "verbotene" Schalterstellung, sagen wir Stellung 4.
In der Software soll nun eine Fehlermeldung auf LCD ausgegeben werden,
wenn sich der Schalter dieser Stellung befindet.
Wird dann eine erlaubte Stellung gewählt, so soll die Software normal
weiterlaufen.
Ich habe das so "gelöst":
1 | uint8_t temp = (PINA & 0x60) >> 5;
|
2 | if(temp == 3) {
|
3 | lcd_prints("ERROR");
|
4 | while(1) {
|
5 | temp = (PINA & 0x60) >> 5;
|
6 | if(temp != 3)
|
7 | break;
|
8 | }
|
9 | }
|
Das Problem ist nun dass die while(1) Schleife erst verlassen wird wenn
der Schalter auf Stellung 2 gedreht wird.
Das sollte aber schon auf Stellung 3 geschehen.
Sieht jemand den Fehler?
Danke schonmal und Grüße, Alex