Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Odliczanie dokładnego czasu w Bascomie

vienio79 03 Lis 2012 20:02 1938 13
  • #1 03 Lis 2012 20:02
    vienio79
    Poziom 10  

    Witam poszukuje porady jeżeli chodzi o Bascoma pisze programik który ma mieć funkcje odliczania czasu dokładnego(chodzi mi typowo o sekundy) jak musiałaby wyglądać procedura timera dla odliczenia np 20 sekund.
    kwarc 160000 hz

    Z góry dziękuje

    0 13
  • #2 03 Lis 2012 20:34
    xury
    Poziom 38  

    Użyj trybu CTC. Odpowiednie ustawienie timera da niemal "sprzętową" sekundę. Dokładność zależy wtedy tylko od jakości kwarcu.

    0
  • #3 03 Lis 2012 20:36
    piotrva
    Moderator na urlopie...

    160000 Hz? Raczej 16000000 Hz
    Jeśli masz procesor który obsługuje Timer2 w trybie asynchronicznym możesz podpiąć do niego kwarc zegarkowy 32768 Hz i odmierzać czas dokładniej, gdyż typowe kwarce typu 16000000Hz mają zwykle małą dokładność i trzeba robić doświadczalnie korekty, bo się rozjeżdżają.

    0
  • #4 03 Lis 2012 21:03
    vienio79
    Poziom 10  

    procesor atmega 32 całe to odliczanie czasu w sumie nie będzie widoczne w programie ale bardzo ważne więc chodzi mi bardzie o prostotę kodu


    Proszę poprawić swoje posty - regulamin p3.1.13 .
    [zumek]

    0
  • #6 04 Lis 2012 01:01
    xury
    Poziom 38  

    Ja uczyłem się na poniższym kodzie:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #8 08 Lis 2012 11:41
    zumek
    Poziom 39  

    xury napisał:
    Ja uczyłem się na poniższym kodzie:

    W tym kodzie jest mały błąd, a mianowicie wartość wpisana do rejestru OCR1A, powinna wynosić:
    crystal/prescaler-1

    0
  • #9 09 Lis 2012 16:34
    Procesor32
    Poziom 12  

    xury napisał:
    Ja uczyłem się na poniższym kodzie:

    Czy, jako początkujący wiedziałeś co to jest TCCR1A, TCCR1B, OCR1AH, OCR1AL i inne niezrozumiałe dla laika rzeczy ?

    Są to rejestry atmegi, dostępne w instrukcji PDF do niej.
    Więc po co karmisz nowicjusza takim przykładem ?

    Jestem pewien, że autor wątku nie ma bladego pojęcia o rejestrach atmegi.

    Mogłeś juz podać jakikolwiek przykład z internetu, ale w czystym Baskomie.

    Znalazłem to http://www.edw.com.pl/forum/viewtopic.php?t=9...t=timer1&sid=afafc2af4b3bc1b066096aad8cbf7b56

    Dodano po 3 [godziny] 43 [minuty]:

    Potrzebny Nam czas wyliczymy ze wzoru :

    Częstotliwość oscylatora = 16 Mh
    Prescaler = 256
    ________________________________________________________

    Częstotliwość oscylatora (Hz) : Przepełnienie = Prescale
    16.000.000 : 62500 = 256

    1 : Częstotliwość (KHz) * Prescaler
    1 : 16.000 * 256 = 0,016 ms

    Jeden przebieg zegara = 0,016 ms

    Przepełnienie * Jeden przebieg zegara = 1000ms

    62500 * 0,016 = 1000 ms

    1000 ms = 1 sekunda

    ________________________________________________________


    Nie wiem, czy mogę podać koledze przykład.
    W regulaminie nie pisze, że nie można, więc podam.

    0
  • #10 09 Lis 2012 17:37
    Procesor32
    Poziom 12  

    zumek napisał:
    crystal/prescaler-1

    W jakim celu odejmujesz od 62500 1 ?
    Chodzi Ci o jeden przebieg zegara ?

    0
  • #11 09 Lis 2012 22:16
    zumek
    Poziom 39  

    Procesor32 napisał:
    ...Chodzi Ci o jeden przebieg zegara ?

    Nie, chodzi o jeden "takt" przeskalera i wynika to z takiej a nie innej budowy timerów. Sprawdź w dokumentacji, a w szczególności, przyjrzyj się wzorom, w których występują rejestry OCR.

    0
  • #12 10 Lis 2012 09:28
    Procesor32
    Poziom 12  

    Czy masz na myśli ten wzór ?

    Odliczanie dokładnego czasu w Bascomie

    Nie mogę znaleźć rozwiązania tego problemu.

    0
  • #13 10 Lis 2012 09:54
    zumek
    Poziom 39  

    Procesor32 napisał:
    Czy masz na myśli ten wzór ?

    Odliczanie dokładnego czasu w Bascomie

    Między innymi.

    Procesor32 napisał:


    Nie mogę znaleźć rozwiązania tego problemu.


    Sprawa jest prosta :)

    Zastanów się, w którym takcie zegara systemowego następuje porównanie licznika z rejestrem OCRn, jeżeli użyjemy trybu CTC z preskalerem np.256 , a do rejestru OCRn wpiszemy np. wartość 1 .

    PS
    Dodaję jeszcze do przemyślenia, diagram z dokumentacji ATMega8.
    Odliczanie dokładnego czasu w Bascomie

    0
  • #14 15 Lis 2012 20:33
    vienio79
    Poziom 10  

    Dzięki kolego Procesor32 mój problem z odliczaniem czasu został rozwiązany po małej modyfikacji kodu źródłowego, który otrzymałem od Ciebie.

    0