Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki
  • #1 19 Sie 2013 11:11
    krzys317t
    Poziom 8  

    Witam!
    Dopiero zaczynam i nie mogę sobie poradzić z poprawnym zliczaniem w przerwaniu pochodzącym od Timera2 w trybie CTC. Chciałem wykorzystać programowe Timery, które są pomysłem Pana Kardasia (korzystam z jego książki) do tego aby jeden z nich tykał co 1sek. Zacząłem, więc tak: 16MHz/1024/125/125 daje teoretycznie "cyknięcie" co sekundę, a u mnie wychodzi w czasie między 2-3sek. Swoją Atmege 16A taktuję kwarcem 16MHz i fuse bity mam na pewno dobrze ustawione, bo gdy wykorzystuję przy inkrementacji zmiennej funkcję _delay_ms(1000) to zmiany w zmniennej następują idelnie po sekundzie. Gdzie robię błąd? Dodam, że na Timerze1 też miałem podobny problem mimo tego, że tyknięcie było realizowane tylko na 16bitowym rejestrze, a w kodzie przerwania była tylko inkrementacja zmiennej sek. Załączam kod [code]

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dodam, że wszelkie zmiany w rejestrze OCR2 nie zmieniają prędkości zliczania. Tu jest błąd, dlatego zlicza w tempie ponad 2 razy wolniejszym. Coś mogłem źle ustawić? Coś mogłem wcześniej przestawić, że nie uC czyta tych wartości w OCRx ?

  • #2 19 Sie 2013 14:59
    mattsk
    Poziom 11  

    'Tak na szybko to zwróciłbym uwage na to że Twoje zmienne Timer1,2,3,4 nie ma wartości początkowych...

  • #3 19 Sie 2013 16:59
    krzys317t
    Poziom 8  

    One właśnie mają wartość początkową. Gdy zmienne są deklarowane jako globalne na początku programu, to z automatu mają wartość równą 0. Sprawdzałem to w AVRstudio. Nawet jeśli coś by było z nimi nie tak, to do Timer3 ładuję wartość 125, więc ma program z czego odliczać. Także to nie to, bo zliczanie działa. Coś jest na 100% z rejestrem OCR, bo gdy ładuję mu wartość 255, czy 5 to przerwanie cały czas zlicza w tym samym tempie, czyli nieco ponad 2s. Czy można go bezwiednie zablokować? Czy może jestem ślepy i czegoś głupiego nie widzę w swoim programie?

  • Pomocny post
    #4 19 Sie 2013 18:50
    zumek
    Poziom 39  

    krzys317t napisał:
    ... Czy może jestem ślepy i czegoś głupiego nie widzę w swoim programie?

    Jesteś :D
    A teraz patrz i myśl.
    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #5 19 Sie 2013 19:06
    krzys317t
    Poziom 8  

    Dzięki zumek :D

    To była ślepota, aż wstyd napisać ile czasu przez to straciłem.

    Problem tkwił w tym, że nie dałem znaku | przed = . to samo trzeba było zrobić w rejestrze TIMSK.

    Temat można zamkknąć

  Szukaj w 4mln produktów
Przeglądaj produkty