Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

AVR atmega8 tajmeri

[es] :: Elektronika :: Mikrokontroleri :: AVR atmega8 tajmeri

[ Pregleda: 2160 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nekicneko99
Programer - ucenik
ETS Mihajlo Pupin
Novi Sad Srbija

Član broj: 323579
Poruke: 108
*.dynamic.sbb.rs.



Profil

icon AVR atmega8 tajmeri15.01.2015. u 20:19 - pre 69 meseci
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.
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: AVR atmega8 tajmeri15.01.2015. u 20:44 - pre 69 meseci
Koristi preskaler kako bi snizio frekfenciju.
 
Odgovor na temu

nekicneko99
Programer - ucenik
ETS Mihajlo Pupin
Novi Sad Srbija

Član broj: 323579
Poruke: 108
*.dynamic.sbb.rs.



Profil

icon Re: AVR atmega8 tajmeri17.01.2015. u 13:05 - pre 69 meseci
Znaci samo rezultat (N) podelim sa preskalerom?
A ostalo je dobro?

Pokusacu kasnije pa cu javiti, mozda imam gresaka i kod registara.
 
Odgovor na temu

basicD
Beograd

Član broj: 47449
Poruke: 70
*.dynamic.sbb.rs.



+26 Profil

icon Re: AVR atmega8 tajmeri17.01.2015. u 16:25 - pre 69 meseci
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
History, in general, only informs us what bad government is.
Thomas Jefferson
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: AVR atmega8 tajmeri

[ Pregleda: 2160 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.