logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega8 [BAS] - TIMER0 nie startuje przy konfiguracji preskalera 256

T-play 30 Wrz 2012 20:31 1251 12
  • #1 11364268
    T-play
    Poziom 14  
    Witam.

    Mam problem ze startem TIMER'a

    Program:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Timera1 Używam to generowania PWM, a Timera0 do generowania odcinka czasu (2 ms);

    Problem jest w tym, że procedura "Sekunda" się nie wykonuje.

    Z góry dziękuje za pomoc.
  • #2 11364329
    Konto nie istnieje
    Poziom 1  
  • #3 11364699
    T-play
    Poziom 14  
    Start Timer0 to jest to samo co Enable Timer0.
  • #4 11364748
    Press
    Poziom 24  
    T-play napisał:
    Start Timer0 to jest to samo co Enable Timer0.

    By Zy Du Ra kolego

    Enable TIMER0 Włącza przerwania od TIMER0
    Start TIMER0 powoduje rozpoczecie zliczania impulsów przez ten timer.
  • #5 11364786
    T-play
    Poziom 14  
    No dobra, mój błąd, no ale ktoś powie dlaczego to nie staruje?
  • #6 11364790
    Press
    Poziom 24  
    T-play napisał:
    No dobra, mój błąd, no ale ktoś powie dlaczego to nie staruje?


    No bo nie dodales w programie: START TIMER0
  • #7 11364799
    T-play
    Poziom 14  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    To może mi ktoś wyjaśni, dlaczego w innym projekcie mam taki zapis i timer startuje?
  • #8 11364881
    danthe
    Poziom 30  
    Po prostu daj "start timer0". Prawdopodobnie różne wersje Bascoma, i w jednej "prescale = " powoduje wystartowanie timera, a w innej być może nie.

    Cytat z pliku HELP 1.11.7.7 - "Uwaga! Użycie parametru PRESCALE powoduje automatyczne rozpoczęcie zliczania. "

    Jednak możliwe że w nowszych wersjach kompilatora coś zmieniono.
  • #9 11364913
    T-play
    Poziom 14  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Po EndIF a przed Return dodałem " Lcd "Test"" i okazało się, że timer działa, ale warunek If 2ms = 250 Then okazuje się nieprawdziwy.
  • Pomocny post
    #10 11365030
    kundzios
    Poziom 19  
    Nie wiem jak w nowych wersjach BASCOM'a, ale w starych nigdy nie użyłem Start timer0 i jakoś wszystko działało. Teraz przerzuciłem się na C, bo lepiej się panuje nad wszystkim.
    Przeczytaj dokładnie helpa od twojej wersji i co po czym powinno być.
    Ciężko powiedzieć co się może dziać z BASCOM'em w tej sytuacji, nie widzę błędów (ale dawno nie miałem styczności z tym językiem).
    Zmień warunek z 'If 2ms = 250 Then' na 'If 2ms > 250 Then' możliwe że za szybko przeskakuje, chociaż przy takim dzielniku to mało prawdopodobne, ale sprawdzić zawsze możesz.
  • #11 11365068
    danthe
    Poziom 30  
    Ach, jeszcze jedno, w Bascomie nazwy zmiennych oraz etykiet nie mogą się zaczynać od cyfry (2ms).
  • Pomocny post
    #12 11365307
    SylwekK
    Poziom 32  
    Absolutnie żadne Start Timer0 nie jest tu potrzebne. Wystarczy, że tak będzie skonfigurowane przerwanie:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    ...i unikaj jak ognia "drukowania" czegoś w przerwaniu, bo zemści się to na tobie szybciej niż Ci się wydaje.
  • #13 11397792
    T-play
    Poziom 14  
    Pokombinowałem w kodzie, zastosowałem się do wskazówek i ruszyło, dziękuję za pomoc.
REKLAMA