Hallo Freunde !
ich brauche für ein AVR Alarm-Projekt eine Zeitschleife von 3 min, welche ich mir so gedacht habe:
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.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
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
Lesezeichen