logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega16][gcc] dziwny problem z zegarem systemowym

szyymex 28 Sie 2009 17:54 942 4
REKLAMA
  • #1 6954282
    szyymex
    Poziom 2  
    Napisałem w gcc mały programik odmierzający czas, ale z jakiegoś powodu gdy zmieniam częstotliwość zegara w pliku Makefile mój program odmierza czas zawsze tak samo.

    
    void Inicjalizacja(void)
    {
    
    	TCCR0 =0x05; // clock source/1024 for T0 /0101
    
    	TIMSK = _BV(TOIE0);
    
           TCNT0 = 0
    }	
    
    
    ISR (TIMER0_OVF_vect)
    
    {	
    
    
    tr2++;
    
    if (tr2>=14)
    {
    tr2=0;
    
    
    
    									lcdxy(1,13);
    								   // write_char(((tr3%10000)%1000)/100+48);
    									write_char((((tr3%10000)%1000)%100)/10+48);
    									write_char((((tr3%10000)%1000)%100)%10+48);
    									
    									tr3++;
    									if (tr3==60)
    									tr3=0;
    									
    }
    
    }
    

    wiem na pewno ze po zmianie w pliku makefile wartość w okładzie F_CPU ulega zmianie ponieważ wyświetlam jego wartość na początku programu. ale nie zależnie czy jest to 2 mhz czy 8 mhz przerwania generująsie w tych samych odstępach czasowych.

    z góry dziękuję za wyjaśnienie im tej kwestii
    pozdrawiam
  • REKLAMA
  • #2 6954309
    snow
    Poziom 31  
    Odpowiedź brzmi: fusebits
  • REKLAMA
  • #3 6954372
    szelus
    Poziom 34  
    Dodam jeszcze, że F_CPU nie zmienia wcale częstotliwości zegara procesora. Wprost przeciwnie, jest to stała, która służy do poinformowania procedur bilioteki avr-libc (np. z serii delay) o tym, jaka jest częstotliwość zegara.
  • REKLAMA
  • #4 6954406
    szyymex
    Poziom 2  
    to w takim razie co ja mam zrobić żeby w F_CPU znalazła się wartość fatyczna częstotliwości zegara a nie to co ja wpisze w makefile?
  • #5 6954456
    ZbeeGin
    Poziom 39  
    szyymex napisał:
    to w takim razie co ja mam zrobić żeby w F_CPU znalazła się wartość fatyczna częstotliwości zegara a nie to co ja wpisze w makefile?

    Przeczytać przyklejone tematy o fusebitach i ich ustawianiu.
REKLAMA