Hallo zusammen
Ich habe ein problem, daran beteiligt ist folgender Code:
1 | #include <avr/io.h>
|
2 | #define F_CPU 8000000
|
3 | #include <util/delay.h>
|
4 |
|
5 | int main(void)
|
6 | {
|
7 |
|
8 | DDRC=0xFF;
|
9 | DDRD=0xFF;
|
10 | DDRB=0xFF;
|
11 |
|
12 | /*
|
13 | PORTD = PORTD & (0<<PD5); //Reset
|
14 | PORTD = PORTD & (0<<PD4); //Sleep
|
15 |
|
16 | PORTD = PORTD | (1<<PD5); //Reset
|
17 | PORTD = PORTD | (1<<PD4); //Sleep
|
18 | */
|
19 |
|
20 | PORTD = PORTD | (1<<2); //Dir
|
21 | PORTB = PORTB | (1 << PB4);
|
22 |
|
23 | /*
|
24 | while(1)
|
25 | {
|
26 | PORTD = PORTD & (0<<PD3); //Step
|
27 | _delay_ms(1);
|
28 | PORTD = PORTD | (1<<PD3); //Step
|
29 | _delay_ms(1);
|
30 | }
|
31 | */
|
32 | }
|
Wenn ich wie hier dargestellt den Inhalt der while-Schleife
auskommentiere, dann wird der Pin 2 an PORTD wie "befohlen" auf 5 Volt
gesetzt.
Wenn ich aber die while-Schleife nicht auskommentiere (also auch auf den
uC übertrage) dann wird der PORTD.2 nicht gesetzt (bzw. wahrscheinlich
nur ganz kurz und dann wieder zurück auf 0).
Wer kann mir erklären, wie das kommt? Ich setze in meiner Schleife ja
nur PD3 und mache gar nichts mit PD2?!
Ich habe:
-Zwei verschiedene Controller probiert
-JTAG auf den uC's deaktiviert (ich brauche später u.A. auch den PORTC)
-den internen Oszi auf 8MHz gestellt
Liebe Grüsse
Lisa