Hallo,
ich habe ein Problem mit dem Einlesen von einem Eingang an meinem Atmel.
Es ist so, dass der Eingang (pin0) über ein Relais nach VCC verbunden
ist.
Meine Erwartung war nun, dass ich in der Schleife des Hauptprogramms
einfach den Pin abfragen kann und nun mitbekomme wenn das Relais
angezogen hat und dann per Seriell einen Buchstaben ausgebe.
Leider gibt es nun mit dem folgenden Code unentwegt den Buchstaben aus.
Stoppen kann ich es indem ich das Relais anziehen lasse. Hatte schon
versucht die Negation umzudrehen also statt
folgendes
Leider auch ohne Erfolg.
Kann mir jemand sagen woran es liegt?
Ich habe einmal beide IF-Statemens in den Code eingefügt mit denen ich
es schon probiert habe. Als ich es getestet habe war immer nur ein
Statement zur Zeit drin.
1 | DDRA = 0xFE; //Alles an PortA als Ausgang nur Pin 0 als Eingang
|
2 | DDRA &= ~(1<<PA0); //Noch einmal explizit für pin 0
|
3 | PORTA = 0x00; //Pullup an Pin 0 ausschalten und alle Ausgänge auf 0 setzen
|
4 |
|
5 | //Code der in der Main-Schleife steht:
|
6 | if (!(PINA & 0x01 )) // <--War mir hier nicht sicher, tun aber beide das selbe oder?
|
7 | if (!(PINA & (1<<PINA0))) // <------------|
|
8 | {
|
9 | hwuart_putc('k');
|
10 | }
|