Hi,
500mS, bzw 1000mS sind definitiv zu viel,
Du rufst die Funktion _delay_loop_2() aus der delay_basic.h auf.
Dazu steht als Kommentar oben drüber:
"...,at a CPU speed of 1 MHz, delays of up to about 262.1
milliseconds can be achieved."
Bei 3,6864 MHz sind das entsprechend weniger, also:
262.1 / 3,6864 = 71 mS !
Mehr geht nicht mit diesen Funktionen.
Ich hab mal genauso dagesessen und mich gewundert mit der _delay_ms()
aus delay.h.
Was die da so richtig machen mit dem rumgecaste mit Mikrosekunden und 'ner extra "wait.h"
durchblicke ich auch nicht.
Ich würde die wait.h weglassen, dafür die util/delay.h includen.
Dann mußt Du die F_CPU 3686400ul im makefile angeben und schreibst statt wait_ms(500)
folgendes:
Code:
uint8_t n; //das kommt vor dem while (1) {
for (n=0; n<10; n++)
_delay_ms(50); //Unterstrich bei _delay nicht vergessen.
Wenn Du's eifach haben willst, setze nur wait_ms(50) und
laß das 10x durch 'ne Schleife laufen.
p.s.
die Fuses sind doch hoffentlich richtig gesetzt?
Lesezeichen