Hallo,
hab mir neulich einen Atmel Atmega32 gekauft, um mal einen Einblick in
die Welt der µCs zu bekommen. Als ISP nutze ich Usbprog. Allerdings
hänge ich jetzt an einem seltsamen Problem, dass ich bei besten Willen
und viel nachdenken nich erklären kann.
Die Beschaltung:
LEDG an D6
LEDR an D7
Taster an A7
Funktion sollte klar sein: immer eine LED an, je nach dem ob der Taster
gedrückt ist.
1 | #include <avr/io.h>
|
2 | #define LEDG_OUTPUT() DDRD|=~(1<<6)
|
3 | #define LEDR_OUTPUT() DDRD|=~(1<<7)
|
4 | #define LEDG_ON() PORTD&=~(1<<6)
|
5 | #define LEDG_OFF() PORTD|=~(1<<6)
|
6 | #define LEDR_ON() PORTD&=~(1<<7)
|
7 | #define LEDR_OFF() PORTD|=~(1<<7)
|
8 |
|
9 | int main(void) {
|
10 | LEDG_OUTPUT();
|
11 | LEDR_OUTPUT();
|
12 | while (1) {
|
13 | if ((PINA & (1 << PINA7))) {
|
14 | LEDG_ON();
|
15 | LEDR_OFF();
|
16 | } else {
|
17 | LEDG_OFF();
|
18 | LEDR_ON();
|
19 | }
|
20 | }
|
21 | }
|
Das Ergebnis ist allerdings, dass die rote LED alles richtig macht, die
grüne jedoch immer an ist, und in dem Fall wo sie eiglt aus sein sollte,
noch Heller wird (nicht viel).
Steh ich da jetzt einfach programmiertechnisch total auf dem Schlauch
oder was geht da ab?
Gruß slashbrain