eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProblem z Timerami w Atmega64L
Ilość wypowiedzi w tym wątku: 11

  • 1. Data: 2009-02-21 10:50:00
    Temat: Problem z Timerami w Atmega64L
    Od: j...@g...com

    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


  • 2. Data: 2009-02-21 11:01:26
    Temat: Re: Problem z Timerami w Atmega64L
    Od: MoonWolf <m...@p...com>

    j...@g...com denied rebel lies:

    [...]
    > 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
    (::) (::)|stupid horse's problem?
    (:) JID:m...@j...org(:)| http://karakkhaz.prv.pl


  • 3. Data: 2009-02-21 11:06:12
    Temat: Re: Problem z Timerami w Atmega64L
    Od: j...@g...com

    On 21 Lut, 12:01, MoonWolf <m...@p...com> wrote:
    > 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


  • 4. Data: 2009-02-21 11:16:37
    Temat: Re: Problem z Timerami w Atmega64L
    Od: MoonWolf <m...@p...com>

    j...@g...com denied rebel lies:

    >> 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
    (::) (::)|one gun. It's likely that he
    (:) JID:m...@j...org(:)|knows how to use it.


  • 5. Data: 2009-02-21 11:30:17
    Temat: Re: Problem z Timerami w Atmega64L
    Od: PH <s...@w...pl>

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

    sei(); ??

    --
    PH


  • 6. Data: 2009-02-21 11:32:53
    Temat: Re: Problem z Timerami w Atmega64L
    Od: j...@g...com

    On 21 Lut, 12:30, PH <s...@w...pl> wrote:
    > sei(); ??

    SREG |= 0x80 = sei();


  • 7. Data: 2009-02-21 14:48:20
    Temat: Re: Problem z Timerami w Atmega64L
    Od: j...@g...com

    Naprawde nikt nie ma zadnego pomyslu? :S


  • 8. Data: 2009-02-21 19:48:00
    Temat: Re: Problem z Timerami w Atmega64L
    Od: Adam Dybkowski <a...@4...pl>

    j...@g...com pisze:

    > 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.


  • 9. Data: 2009-02-22 14:38:50
    Temat: Re: Problem z Timerami w Atmega64L
    Od: Robert Zemła <m...@g...com>

    On 21 Lut, 11:50, j...@g...com wrote:
    ...
    >
    > 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


  • 10. Data: 2009-02-23 10:26:52
    Temat: Re: Problem z Timerami w Atmega64L
    Od: Tom <T...@n...com>

    j...@g...com wrote:
    > ...
    > 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

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: