-         
Ergebnis 1 bis 3 von 3

Thema: Genauen Sekunden Takt

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.12.2004
    Beiträge
    77

    Genauen Sekunden Takt

    Anzeige

    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;
    }

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    23.05.2006
    Beiträge
    62
    Wenn du den Timer0 verwendest, solltest du auch den Reload-Wert in den Timer0 laden und nicht in den Timer2!.

    >>>>>> TCNT2 = 131;

    Gruß,Ronny10

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.12.2004
    Beiträge
    77
    stimmt!! habs übersehen. Danke!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •