Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[8515][bascom]timer0 - prykład, nie mogę znaleźć działająceg

19 Sie 2008 16:15 1083 10
  • #1 19 Sie 2008 16:15
    Usunięty
  • #2 19 Sie 2008 17:29
    ZbeeGin
    Poziom 38  

    W taki sposób nie powinno się tego robić - a pisze o tym w helpie. Definiujesz zmienną FAZA i ją zmieniasz w przerwaniu - co przerwanie +1. Na podstawie stanu tej zmiennej wywołujesz kolejne fazy światła. Na końcu wstawiasz RETURN.
    Teraz tylko w pierwszej fazie program powróci z przerwania i włączy je ponownie. Ponadto dlaczego wszyscy się upierają, że przerwania, czy odwołania przez GOSUB się deklaruje jako SUB? Bezsens.

  • #3 19 Sie 2008 18:03
    Usunięty
  • #4 19 Sie 2008 21:30
    ZbeeGin
    Poziom 38  

    A jaki zegar taktujący? 1MHz z wewnętrznego generatora? Bez tego możemy sobie liczyć banany na wierzbie.

  • #5 19 Sie 2008 21:53
    Utul
    Poziom 13  

    Witam
    No pozbycie się tego podprogramu Zlicz raczej się nie uda jak chcesz mieć Przerwanie dokładnie co 1000 µs.
    Dokładnie popieram ZbeeGin'a mógłbyś podać jak jest taktowany procek

    Pozdro

  • #6 19 Sie 2008 22:23
    Usunięty
  • #7 19 Sie 2008 22:41
    Utul
    Poziom 13  

    Można wpisać np coś takiego

    Code:

    Config Timer1 = Timer , Prescale = 64   

    A na początku Zlicz

    Code:

    Timer1 = Timer1 + 3044

    to daje dość dokładny "obraz" 1s, zależy od kwarcu

    Przepraszam Ty masz Timer0, ale na Timer1 wygląda to tak

  • #8 19 Sie 2008 23:04
    ZbeeGin
    Poziom 38  

    I właśnie trzeba użyć licznika TIMER1 bo Timer0 nie wystarczy do tego zadania.

  • #9 19 Sie 2008 23:13
    Utul
    Poziom 13  

    No ZbeeGin na pewno wiesz że też można.

    Pozdro

  • #10 20 Sie 2008 04:43
    Usunięty
  • #11 20 Sie 2008 08:12
    ZbeeGin
    Poziom 38  

    Utul napisał:
    No ZbeeGin na pewno wiesz że też można.

    Kolega chce bez dodatków, zatem nie mozna. Przy taktowaniu 8MHz i preskalerze 1024 licznik zliczy max 32,7680ms. A to o wiele za mało by mieć 1000ms. Nawet z domyślnym taktowaniem 1MHz, czas 1s jest nieosiągalny dla licznika Timer0.

    Cytat:
    zastanawia mnie czemu Timer1 = Timer1 + 3044, a nie Timer1 = 3044?

    Bo zanim przerwanie się wykona i dojdzie do przeładowania licznika, to licznik może już naliczyć czas - 1-2 impulsy przy takim ustawieniu. Dlatego trzeba uwzględnić poprawkę.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME