Hallo,
arbeite mich gerade in die Welt der Mikrokontroller ein. Obwohl ich das
Tutorial http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial zu
rate gezogen habe, scheine ich noch etwas nicht verstanden zu haben.
Folgendes Verhalten will ich bei meinem Atmega8 programmieren:
Wenn auf PB0 +5V liegen, dann soll auf PB1 +5V ausgegeben werden.
Das entspricht doch der Aussage:
PBO ist als Eingang festzulegen und wenn dieser gleich 1 ist, dann soll
der Ausgang PB1 ebenfalls zu 1 werden.
Ich dachte mir, dass durch folgenden gcc-code zu erreichen:
1 | #include <avr/io.h>
|
2 |
|
3 | int main (void) {
|
4 |
|
5 | DDRB &= ~(1<<PB0); //PBO auf 0 -> als Eingang
|
6 | DDRB |= (1<<PB1); //PB1 auf 1 -> als Ausgang
|
7 |
|
8 | //PB0 und PB1 sicherheitshalber auf 0 zurücksetzen
|
9 | PORTB &= ~(1<<PB0);
|
10 | PORTB &= ~(1<<PB1);
|
11 |
|
12 | if (PINB & (1<<PB0)) { //Wenn PB1 auf 1 steht, dann ist auch die Bedingung 1 (wahr)
|
13 | PORTB |= (1<<PB1); //Ausgang PB1 auf 1 setzen
|
14 | }
|
15 | }
|
Jedoch liefert das Progamm nicht das gewünschte Ergebnis. Eine an PB1
anliegenden Diode leuchtet SOFORT auch wenn das PB0-Beinchen mit nichts
verbunden ist (messe ich daran die Spannung, so zeigt mir mein Voltmeter
1,62V).