Gast
#784463
Hallo, folgenden Code habe ich aus mc.net übernommen. Ich kann nur ein dauerleuchten der LED erzeugen, sie sollte aber blinken. Wo ist mein Fehler??? Ich habe ihn nach 7h immer noch nicht gefunden. Verzweifelung! Ich bin dabei C und MC zu lernen, und hänge jetzt echt fest. Ich habe einen atmel 32 mit 7.328Mhz Danke für eure Hilfe!!! #include <avr/io.h> #ifndef F_CPU /* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert (z.B. durch Übergabe als Parameter zum Compiler innerhalb des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die "nachträgliche" Definition hinweist */ #warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert" #define F_CPU 3686400UL /* Quarz mit 3.6864 Mhz */ #endif #include <util/delay.h> /* in älteren avr-libc Versionen <avr/delay.h> */ /* lange, variable Verzögerungszeit, Einheit in Millisekunden Die maximale Zeit pro Funktionsaufruf ist begrenzt auf 262.14 ms / F_CPU in MHz (im Beispiel: 262.1 / 3.6864 = max. 71 ms) Daher wird die kleine Warteschleife mehrfach aufgerufen, um auf eine längere Wartezeit zu kommen. Die zusätzliche Prüfung der Schleifenbedingung lässt die Wartezeit geringfügig ungenau werden (macht hier vielleicht 2-3ms aus). */ void long_delay(uint16_t ms) { for(; ms>0; ms--) _delay_ms(1); } int main( void ) { DDRB = ( 1 << PB0 ); // PB0 an PORTB als Ausgang setzen while( 1 ) { // Endlosschleife PORTB ^= ( 1 << PB0 ); // Toggle PB0 z.B. angeschlossene LED long_delay(1000); // Eine Sekunde warten... } return 0; }