Hallo Leute,
habe heute wieder mal ein Problem wo ich nicht weiter komme. Ich habe ein Atmega 328P. Dort habe ich mir ein kleines Programm geschrieben wo eine LED blinken soll. Das macht sie auch, aber das Timing ist falsch. Wenn ich dort 100ms Toogle Time einstelle, blinkt der in 500ms Takt. Bei anderen Wartezeiten ist es ähnlich. Immer so 4-5x länger als geplant.
Dachte mir, ok, ist der Clock falsch eingestellt. Aber steht in den Fuses auf 8MHz. Habe ir auch auf Pin PB0 die Taktfrquenz ausgeben lassen und mitten Oszi nachgemessen. Die Quarzfrequenz passt. Also letzte Idee habe ich mir ein kleines Bascom Programm geschrieben. Da geht alles supi. Also habe ich irgendwo ein Problem im C-Programm. Finde den Fehler aber nicht. Aber vielleicht ihr
Ich programmiere mit AVR Studio 5.Code:#include <avr/io.h> #include <util/delay.h> #ifndef F_CPU #define F_CPU 8000000UL /* Quarz mit 8 Mhz */ #endif int main( void ) { DDRB |= (1<<PB5) | (1<<PB4); //als Ausgang PORTB |= 0b00100000; //setzte von PB5 und PB4 nicht while(1) // Endlosschleife { PORTB ^= (1<<PB5) | (1<<PB4); // Toggle PB0 z.B. angeschlossene LED _delay_ms(100); // warten... } return 0; }
Thx for help
Filzlaus
Lesezeichen