Hi,
in der delay.h wird überprüft, ob F_CPU bereits definiert wurde. Falls nicht, wird das Makro mit einem Standartwert (1MHz) vorbelegt. Die spätere Definition von Dir hat dann keine Auswirkungen mehr auf die delay-Funktion.
Du musst also F_CPU definieren, bevor Du die delay.h. einbindest.
Übrigens liegt die delay.h nicht mehr im Pfd avr, sondern im Pfad util.
Richtig wäre also:
Code:
#define F_CPU 16000000
#include <avr/io.h>
#include <util/delay.h>
PS: Du solltest die warnings, die der Compiler ausspuckt, beachten.
Da hätte nämlich folgendes gestanden:
Code:
C:/WinAVR/avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
In file included from C:/WinAVR/avr/include/avr/delay.h:37,
from ../main.c:3:
C:/WinAVR/avr/include/util/delay.h:136:3: warning: #warning "F_CPU not defined for <util/delay.h>"
../main.c:5:1: warning: "F_CPU" redefined
C:/WinAVR/avr/include/util/delay.h:137:1: warning: this is the location of the previous definition
Gruß,
askazo
Lesezeichen