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:


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);
};
Kann das vielleicht sein das ich im Makefile AT90S2313 benutzte für den ATTINY2313? Weil man im MFile [WinAVR] keinen ATTINY2313 auswählen kann.