Problem z Timerami w Atmega64L

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Witam, mam problem z poprawnym uruchomieniem timerow na w/w atmedze.
Do tej pory bawilem sie Atmega32 i problemow nie bylo.

Problem tkwi w tym, ze nie dzialaja mi przerwania od timerow.
Dodatkowo wydaje mi sie (jedynie z obserwacji), ze zmiana
preskalerow tez nie wplywa na szybkosc zliczania...
Porownywanie z wzorcami porownania z OCR(x) tez...

Timery poprostu licza sobie od 0 do 255 i automatycznie zeruja sie.
i tak w nieskonczonosc, zawsze z ta sama predkoscia.

Atmega64L taktowana wewnetrznym generatorem RC 1MHz
Zasilanie 3.3V

Ponizej zamieszczam przykladowy problem, ktory NIE dziala na
Atmedze64L, natomiast bezblednie dziala na Atmedze32:

#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/iom32.h>

volatile unsigned int interrupts2 = 0;
volatile unsigned int interrupts0 = 0;

void io_init(void)
{
    DDRG &= ~(1 << PG3);   // Wejscie TOSC2 - 32kHz
    DDRG &= ~(1 << PG4);   // Wejscie TOSC1

    DDRD &= ~(1 << PD2);   // Wejscie RxD
    DDRD |= (1 << PD3);      // Wyjscie TxD
}

ISR(SIG_OVERFLOW2)
{
    interrupts2++;
    TCNT2 = 0;
}

ISR(SIG_OVERFLOW0)
{
    interrupts0++;
    TCNT0 = 0;
}

int main(void)
{

  io_init();
  uart_init();

  TIMSK &= ~(1 << TOIE2);
  TIMSK &= ~ (1 << OCIE2);
  ASSR  |=  (1 << AS2);
  TCCR2 |=  (1 << CS22);
  TCCR2 |=  (1 << CS20);

  while(ASSR&0x07);

  TIMSK |=  (1  << TOIE2);
  TIMSK |=  (1 << OCIE2);
  OCR2 = 0x99;


  TIMSK |=  (1 << TOIE0);
  TIMSK |=  (1 << OCIE0);
  TCCR0 &= ~(1 << WGM00);
  TCCR0 &= ~(1 << WGM01);
  TCCR0 |=  (1 << CS02);
  TCCR0 &= ~(1 << CS01);
  TCCR0 &= ~(1 << CS00);

  SREG |= 0x80;

  while(1)
  {

  }

  return 0;
}

Rezultat wyrzucam sobie na konsole COM za pomoca uarta
Zmienne interrupts0 i interrupts2 sa ciagle rowne zero...

Prosze o jakies wskazowki, bo juz mi rece opadaja :(

Pozdrawiam, Piotr

Re: Problem z Timerami w Atmega64L
snipped-for-privacy@gmail.com denied rebel lies:

[...]
Quoted text here. Click to load it

Czasem nie TIMSK2 i TIMSK0 (odpowiednio)?

--
<:>    Roger, MoonWolf Out   <:>|Easy, boy.  What's this
(::)                        (::)|stupid horse's problem?
We've slightly trimmed the long signature. Click to see the full one.
Re: Problem z Timerami w Atmega64L
Quoted text here. Click to load it

Nie ma czegos takiego jest TIMSK0 i TIMSK2 jest tylko TIMSK

ktory wyglada tak:

OCIE2 - TOIE2 - TICIE1 - OCIE1A - OCIE1B - TOIE1 - OCIE0 - TOIE0

Re: Problem z Timerami w Atmega64L
snipped-for-privacy@gmail.com denied rebel lies:

Quoted text here. Click to load it

Fakt. Spojrza┼éem na pdfa do 644. M├│j b┼é─ůd.

--
<:>    Roger, MoonWolf Out   <:>|Beware of the man with only
(::)                        (::)|one gun. It's likely that he
We've slightly trimmed the long signature. Click to see the full one.
Re: Problem z Timerami w Atmega64L
snipped-for-privacy@gmail.com pisze:
Quoted text here. Click to load it

sei(); ??

--
PH

Re: Problem z Timerami w Atmega64L
Quoted text here. Click to load it

SREG |= 0x80  = sei();

Re: Problem z Timerami w Atmega64L
Naprawde nikt nie ma zadnego pomyslu? :S

Re: Problem z Timerami w Atmega64L
snipped-for-privacy@gmail.com pisze:

Quoted text here. Click to load it

Spr─é┼ébuj prze─╣┬Ťledzi├ä┬ç kod pod symulatorem AVR Studio. Postaw pu─╣┬éapki w
przerwaniach. Jeżeli zadziała - odpal emulację na żywym układzie (przez
JTAG).

--
Adam Dybkowski
        http://dybkowski.net /

We've slightly trimmed the long signature. Click to see the full one.
Re: Problem z Timerami w Atmega64L
...
Quoted text here. Click to load it

1) includujesz plik nagB3%F3wkowy od ATmegi32 (iom32.h)
2) W atmedze64 w ASSR niema bitu AS2
wiEA%cej bB3%EAdF3%w nie widzEA% ;]

pozdrawiam
Robert ZemB3%a

Re: Problem z Timerami w Atmega64L
Quoted text here. Click to load it

Zrob sobie przysluge i ustawiaj typ procka w makefile, w zrodlach po prostu:

#include <avr/io.h>

Prawdopodobnie kompilujesz na Mega32 i dziwisz sie ze na 64 nie dziala (oprocz
tego moga byc roznice pomiedzy 32 i 64, z glowy nie pamietam).

Tomek

Re: Problem z Timerami w Atmega64L
Quoted text here. Click to load it

Tak tez robie od zawsze :)

Mieliscie racje, powodem byl iom32.h

--
Piotrek

Site Timeline