Hallo Leute,
ich wollte mit dem Asuro ... Also AtMega8 mit dem Timer0 einen genauen Sekunden takt erzeugen ... doch irgendwie ist es nicht eine Sekunde.
Kann mir einer sagen was falsch ist? Ist das LED togglen der LEDs in dem Overflow zu langsam? Wir der deshalb Overflow von den LEDs gestört?
Und irgendwie erkennt er nicht das ich das Zeichen "t" mit Hyper terminal schicke.
Danke für die Hilfe.
Code:
Code:
#include <string.h>
#include "asuro.h"
unsigned char sec_count=0;
char toggle=0;
//Clock variablen
unsigned char ss=0;
unsigned char mm=0;
unsigned char hh=0;
SIGNAL(TIMER0_OVF_vect)
{
sec_count++;
if(sec_count==250)
{
ss++;
if(ss==60)
{
mm++;
ss=0;
if(mm == 60)
{
hh++;
mm=0;
if(hh==24)
{
hh=0;
}
}
}
sec_count=0;
if(toggle == 0)
{
toggle=1;
BackLED(ON,OFF);
}
else
{
toggle=0;
BackLED(OFF,ON);
}
}
TCNT2=131;
}
void init_clock()
{
TCCR0 |= (1 << CS02);
TIMSK |= (1 << TOIE0);
TCNT2 = 131;
}
void setTime(unsigned char s_hh, unsigned char s_mm, unsigned char s_ss )
{
hh = s_hh;
mm = s_mm;
ss = s_ss;
}
int main(void)
{
unsigned char data;
char time_string[40]= {"Time: "};
char tmp[5];
init_clock();
Init();
StatusLED(OFF);
SerWrite("\n\r Asuro Clock V1 \n\r",20);
while(1)
{
SerRead(&data,4,1);
//if( memcmp(&data,"time",4) == 0 )
if(data =='t')
{
strcat(time_string,itoa(hh,tmp,10));
strcat(time_string,":");
strcat(time_string,itoa(mm,tmp,10));
strcat(time_string,":");
strcat(time_string,itoa(ss,tmp,10));
strcat(time_string,"\r\n>");
SerWrite(time_string,20);
}
}
return 0;
}
Lesezeichen