Hallo Freunde !
ich brauche für ein AVR Alarm-Projekt eine Zeitschleife von 3 min, welche ich mir so gedacht habe:
Code:
// Zeitbegrenzung 3min 
#ifndef F_CPU
#define F_CPU    12000000 
#endif
#include <util/delay.h>
// vor der Einbindung von delay.h muss F_CPU definiert sein,
// sonst Ausgabe von Fehlermeldung das F_CPU nicht def. ist
#include <avr/io.h>
// Port B1 wird 3min lang getoggelt
int main(void)
{
    DDRB |=(1<<PB1);
    int zeit =0;
    while( zeit < 180)         // nach 180sec = 3min  
                            // ausschalten
    {
        PORTB |= (1<<PB1);  // Ausgang HIGH
        _delay_ms(500);     // 0,5 sec
        PORTB &= ~(1<<PB1); // Ausgang LOW
        _delay_ms(500);     // 0,5 sec
        zeit++;                // 2x 0,5 sec = 1sec
    }
    
    PORTB |= (1<<PB1);      // Ausgang HIGH  = Aus
Wenn ich die Zeit des Blinkens(LED > +5V an PortB.1), bis zur ständigen Ausschaltung des Blinkvorganges, mit einer Stopuhr messe , komme ich nur auf 2min 15sec. es soll mir nicht auf 2..3..5 Sec. ankommen aber ca.45 Sec sind zu viel Abweichung.

Die Fuses sind richtig gesetzt...ext. Quarz entspr. Frequ., kein Vorteiler usw.. Vielleicht mache ich ja einen grundsätzlichen Fehler beim Code, kann mir wer bitte helfen ??

Danke und Gruss

Gerhard