RTV forum PL | NewsGroups PL

Trudności z konfiguracją timerów i przerwań w ATmega64L przy 1MHz

Problem z Timerami w Atmega64L

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Trudności z konfiguracją timerów i przerwań w ATmega64L przy 1MHz

Guest

Sat Feb 21, 2009 12:45 pm   



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

Guest

Sat Feb 21, 2009 12:45 pm   



On 21 Lut, 12:30, PH <sin...@wp.pl> wrote:
Quote:
sei(); ??

SREG |= 0x80 = sei();

Guest

Sat Feb 21, 2009 12:45 pm   



On 21 Lut, 12:01, MoonWolf <moonw...@polbox.com> wrote:
Quote:
Czasem nie TIMSK2 i TIMSK0 (odpowiednio)?

Nie ma czegos takiego jest TIMSK0 i TIMSK2 jest tylko TIMSK

ktory wyglada tak:

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

PH
Guest

Sat Feb 21, 2009 12:45 pm   



jotixel@gmail.com pisze:
Quote:
Witam, mam problem z poprawnym uruchomieniem timerow na w/w atmedze.
Do tej pory bawilem sie Atmega32 i problemow nie bylo.


sei(); ??

--
PH

MoonWolf
Guest

Sat Feb 21, 2009 12:45 pm   



jotixel@gmail.com denied rebel lies:

Quote:
Czasem nie TIMSK2 i TIMSK0 (odpowiednio)?
Nie ma czegos takiego jest TIMSK0 i TIMSK2 jest tylko TIMSK

Fakt. Spojrzałem na pdfa do 644. Mój błąd.

--
<:> Roger, MoonWolf Out <:>|Beware of the man with only
(:Smile (:Smile|one gun. It's likely that he
(Smile JID:moonwolf@jabberpl.org(Smile|knows how to use it.

MoonWolf
Guest

Sat Feb 21, 2009 12:45 pm   



jotixel@gmail.com denied rebel lies:

[...]
Quote:
TIMSK &= ~(1 << TOIE2);
TIMSK &= ~ (1 << OCIE2);
TIMSK |= (1 << TOIE2);
TIMSK |= (1 << OCIE2);
TIMSK |= (1 << TOIE0);
TIMSK |= (1 << OCIE0);

Czasem nie TIMSK2 i TIMSK0 (odpowiednio)?

--
<:> Roger, MoonWolf Out <:>|Easy, boy. What's this
(:Smile (:Smile|stupid horse's problem?
(Smile JID:moonwolf@jabberpl.org(Smile| http://karakkhaz.prv.pl

Guest

Sat Feb 21, 2009 4:45 pm   



Naprawde nikt nie ma zadnego pomyslu? :S

Adam Dybkowski
Guest

Sat Feb 21, 2009 8:48 pm   



jotixel@gmail.com pisze:

Quote:
Naprawde nikt nie ma zadnego pomyslu? :S

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/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Robert Zemła
Guest

Sun Feb 22, 2009 3:45 pm   



On 21 Lut, 11:50, joti...@gmail.com wrote:
....
Quote:

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

Pozdrawiam, Piotr

1) includujesz plik nagłówkowy od ATmegi32 (iom32.h)
2) W atmedze64 w ASSR niema bitu AS2
więcej błędów nie widzę ;]

pozdrawiam
Robert Zemła

Tom
Guest

Mon Feb 23, 2009 11:26 am   



jotixel@gmail.com wrote:
Quote:
...
Ponizej zamieszczam przykladowy problem, ktory NIE dziala na
Atmedze64L, natomiast bezblednie dziala na Atmedze32:

...
#include <avr/iom32.h

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

Guest

Tue Feb 24, 2009 8:45 pm   



On 23 Lut, 11:26, Tom <T...@nospam.com> wrote:
Quote:
Zrob sobie przysluge i ustawiaj typ procka w makefile (ciah)

Tak tez robie od zawsze :)

Mieliscie racje, powodem byl iom32.h

--
Piotrek

elektroda NewsGroups Forum Index - Elektronika Polska - Trudności z konfiguracją timerów i przerwań w ATmega64L przy 1MHz

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map