Gast
#2243695
Hallo,
ich will eine binäre Uhr mit einem Atmega8 verwirklichen.
Anbei ist mein Codeauszug. Auf meinem STK500 zählen die Sekunden aber
schon viel zu langsam, ich finde aber den Fehler nicht. Kann von euch
jemand den Fehler entdecken?
Gruß
osmaniak
#include <avr/io.h>
#include <avr/interrupt.h>
#include "externe_Variablen.h"
volatile uint8_t sekunden;
int main(void)
{
cli();
DDRC=0xFF;
DDRD=0xFF;
DDRB=0x03;
//Timer initialisieren:
TCCR1A = 0x00;
TCCR1B|= (1<<CS00)|(1<<CS02); //Prescaler 1024, CTC-Mode
OCR1A = 512; //Vergleiswert setzten
TIMSK = (1<<OCIE1A); //OC-Interrupt aktivieren
sekunden=0;
unsigned minuten=0;
unsigned stunden=0;
sei();
//Polling-Loop:
while(1)
{
PORTC = 0xFF-sekunden;
if (sekunden==60)
{
sekunden=0;
minuten++;
//PORTD = minuten;
if(minuten==60)
{
minuten=0;
stunden++;
//PORTC= 0xFFFF - stunden;
if(stunden==24)
{
stunden=0;
}
}
}
}
return 0;
}
ISR(TIMER1_COMPA_vect)
{
sekunden++;
TIFR |= (1 << OCF1A);
}