Hallo Leute,
ich baue eine Uhr die Relativ genau gehen soll.
Mit dem Sourcecode ist eine Sekunde leider 16 Sekunden lang ;-(
Was mache ich falsch?
Benutze einen ATINY2313-20PU mit 16 Mhz extern Quarz.
Danke für die hilfe
Hier der Sourcecode:
Kann das vielleicht sein das ich im Makefile AT90S2313 benutzte für den ATTINY2313? Weil man im MFile [WinAVR] keinen ATTINY2313 auswählen kann.Code:#include <main.h> #include <lcd.c> uint8_t second=0; uint8_t secled=0; uint8_t minute=0; uint8_t hour=0; SIGNAL (SIG_OVERFLOW1) { second ++; if(second == 60) { second = 0; minute ++; }; if(minute == 60) { minute = 0; hour ++; }; if(hour == 24) { hour = 0; }; }; //Hauptprogramm int main (void) { DDRD = 0x00; /* alle Pins von Port D als Eingang */ PORTD = 0xff; /* interne Pull-Ups an allen Port-Pins aktivieren */ //Initzialisierung des LCD - Displays LCD_Init(); LCD_Print(1,0,"Clock"); OCR1AL = 0x09; OCR1AH = 0x3d; TCNT1L = 0xf7; TCNT1H = 0xc2; TCCR1B |= (1<<CS10)|(1<<CS12); //1024 TIMSK |= (1 << TOIE1); sei(); unsigned char count; //Hauptprogramm läuft ständig in einer schleife while (1) { /* if ( !(PIND & (1<<PIND4)) ) { count++; { if ( !(PIND & (1<<PIND5)) ) { count--; { */ LCD_Print(0,1,"Time: %i:%i:%i",hour,minute,second); } return (1); };![]()







Zitieren

Lesezeichen