Liste der Anhänge anzeigen (Anzahl: 1)
Ich häng' da einen Code rein von einem Timer, der alle mS einmal tickert. Das ist ingesamt ein etwas komplexeres Projekt, aber das mit dem Timer kann man schon erkennen.
Die Werte sind für 8 MHZ, ist ja nicht soweit weg von deinen 7372800Hz
h-file
Code:
#ifndef __BACK_DEF
#define __BACK_DEF 1
#define F_CPU 8000000
#define USART_BAUD_RATE 9600
#define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16l)-1)
#define TIME0_c_MS_PRE 3 // prescale
#define TIME0_c_MS_CNT 131 // preload
......
Code:
// ---------------------------------------------------
// TIME Interrupt
// ---------------------------------------------------
SIGNAL (SIG_OVERFLOW0)
{
TCNT0 = TIME0_c_MS_CNT;
sTime0.wCurr--;
if (!sTime0.wCurr)
{
sTime0.wCurr = sTime0.wCount;
sTime0.bFlag |= TIME0_M_TICK;
}
}
// ---------------------------------------------------
TIME_DEF* TimeInit(unsigned short Count)
{
sTime0.bFlag = 0;
sTime0.wCount = Count;
sTime0.wCurr = Count;
TCCR0 = TIME0_c_MS_PRE;
TCNT0 = TIME0_c_MS_CNT;
TIMSK |= (1 << TOIE0);
return((TIME_DEF*)&sTime0);
}
Ich attache auch noch ein XLS-Sheet zum ausrechnen der diversen Werte.
Is für internen Gebrauch, also ein bißchen mitdenken mußt du schon, wie es zu bedienen ist.
Es zeigt dir die möglichen alternativen an.
EDIT: seh auch schon, wo dein Fehler liegt: du mußt in der Signal routine den Preload-Wert nachladen