Hallo, INFOS: Ich programmiere gerade einen ATMEGA8a. Ich nutze AStudio6.2, einen AVRISP mkII und ein selbstgebautes evaluations-Board aus diesem -> (https://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment) Artikel. Die Ein- und Ausgänge habe ich wie im Folgeartikel (https://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen) beschaltet. PROGRAMM:
1 | #include <avr/io.h> |
2 | |
3 | int main (void) { |
4 | |
5 | DDRB = 0xFF; |
6 | PORTB = 0xFF; |
7 | |
8 | DDRD = 0x00; |
9 | PORTD = 0x00; |
10 | |
11 | |
12 | while(1) { |
13 | |
14 | if (PIND&(1<<PIND0)) |
15 | PORTB &= ~(1<<PINB0); |
16 | else PORTB |= (1<<PINB0); |
17 | |
18 | if (PIND&(1<<PIND1)) |
19 | PORTB &= ~(1<<PINB1); |
20 | else PORTB |= (1<<PINB1); |
21 | |
22 | if (PIND&(1<<PIND2)) |
23 | PORTB &= ~(1<<PINB2); |
24 | else PORTB |= (1<<PINB2); |
25 | |
26 | if (PIND&(1<<PIND3)) |
27 | PORTB &= ~(1<<PINB3); |
28 | else PORTB |= (1<<PINB3); |
29 | |
30 | }
|
31 | |
32 | return 0; |
33 | }
|
PROBLEM: Ich geh davon aus, dass nun bei geöffnetem Taster alle LED´s aus sind und bei geschlossenem Taster an. Dies ist jedoch nur an PD0 der Fall. Alle anderen Taster sind invertiert. TROUBLESHOOTING: Ich habe die Beschaltung von Tastern und LEDs auf Verpolung kontrolliert. Negativ. Auch die Spannungsversorgung vom AVR ist korrekt. Ich habe die Paarung PD0->PB0 und PD1->PB1 zu PD0->PB1 und PD1->PB0 getauscht. Nun war PB0 invertiert und PB1 nicht. Damit denke ich das Problem auf der Eingangsseite (PORTD) identifiziert zu haben. Ich bitte um Rat. Auch über Vorschlägen bezüglich einer eleganteren Programmierung würde ich mich freuen. Gruß Stefan