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.
Lesezeichen