Felix schrieb:
> Deshalb muss es am Code liegen... aber der scheint soweit richtig oder
> nicht?
Nicht unbedingt.
Meistens werden Taster so angeschlossen, dass sie im nicht gedrückten
Zustand eine 1 am Portpin liefern und wenn der Taster gedrückt wird eine
0.
Der Grund dafür ist ganz einfach der, dass man dann ein externes Bauteil
einspart - einen ansonsten notwendigen Pulldown Widerstand.
So aber kann man den im AVR eingebauten Pullup Widerstand benutzen.
Nur
Dazu müsste der auch eingeschaltet werden ...
... was er jetzt aber nicht ist, und die Abfrage ....
1 | if((PINC & (1 << PC1))){
|
... würde dann genau anders herum lautet (weil ein gedrückter Taster
dann ja eine 0 liefert).
Daher die Frage wie er tatsächlich angeschlossen ist. Hat dein Assistent
die übliche Anbindung vorgenommen oder hat er sich eine Extrawurst
gebraten?
Passieren kann allerdings nicht viel, wenn wir einfach mal annehmen dass
dein Assisten den Taster so an den AVR angeschlossen hat, wie das die
ganze restliche Welt auch macht und wir einfach mal auf Verdacht das
Programm ändern
1 | DDRA |= (1 << PA0);
|
2 | DDRC &= ~(1 << PC1);
|
3 | PORTC |= (1 << PC1); // Pullup ein
|
4 |
|
5 | while(1)
|
6 | {
|
7 | if( ! (PINC & (1 << PC1))){ // Taster gedrückt - Bit nicht gesetzt
|
8 | PORTA |= (1 << PA0);
|
9 | //tracking();
|
10 | _delay_ms(250);
|
11 | PORTA &= ~(1 << PA0);
|
12 | _delay_ms(250);
|
13 | }
|
14 | }
|