[ nekicneko99 @ 15.01.2015. 20:19 ] @
Imam problem sa racunanjem podataka za tajmer, kao i registrima.

Preba na napravim timer interrupt na svakih 10ms (Compare Match A). U pitanju je tajmer 1 (16bit).
Clok je kvarc f=11,0592 MHz.

Do sada mi nesto ne ide. Evo sta sam uradio:
Code:

T = 1/f = 0,00000009
N = 0.01 / 0,00000009 = 111111,111111111 =>  0x1B207


Rezultat je 20bit, a tajmer 16bit. Ne znam gde gresim, molim vas za pomoc, hitno mi je.
[ HeYoo @ 15.01.2015. 20:44 ] @
Koristi preskaler kako bi snizio frekfenciju.
[ nekicneko99 @ 17.01.2015. 13:05 ] @
Znaci samo rezultat (N) podelim sa preskalerom?
A ostalo je dobro?

Pokusacu kasnije pa cu javiti, mozda imam gresaka i kod registara.
[ basicD @ 17.01.2015. 16:25 ] @
Code:

#include <avr/io.h>
#include <avr/interrupt.h>

int main(void){

    TCCR1B |= (1 << WGM12)|(1 << CS11)|(1 << CS10); // prescaler na 64(CS11,CS10) i CTC mode(WGM12)
  
    TCCR1A |= (1 << COM1A0); // Ovo je za OC1A pin u toggle modu vidi u datasheet-u za druge modove
  
    TCNT1 = 0;

    OCR1A = 1727; // compare vrednost
  

     DDRB |= (1 << 1); // output mode na pin-u PB1 - OC1A pin na atmega328p vidi da li je isto za Atmega8
  
  
    while(1){} 
}



Fcpu / prescaler(64) / OCR1A( 1727 + 1) = broj Tick-ova
11059200Hz / 64 / 1728 = 100 tickova tj. 1000 / 100 = 10 ms po jednom interrupt-u

Ovo su registri za atmega328 vidi da li je isto za Atmega8