Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 3.790 pregleda

Najnovija ↓

AVR atmega8 tajmeri 15.01.2015. u 21:19 · pre 143 meseca #1
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.
Potpis
https://www.youtube.com/watch?v=CGvGdOjnTIA
Re: AVR atmega8 tajmeri 17.01.2015. u 17:25 · pre 143 meseca #4
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
Potpis
History, in general, only informs us what bad government is.
Thomas Jefferson
Sviđa mi se1
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme