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

[Rozwiązano] Nieprawidłowa praca timera0 w AT89c2051-24PU z kwarcem 11,0592 MHz/12MHz w Bascom

TT5 28 Lis 2020 11:27 510 2
REKLAMA
  • #1 19074638
    TT5
    Poziom 10  
    Witam
    Z nudy czy też z unikania zgromadzeń, siedząc w domu wpadłem na pomysł aby zbudować timer kuchenny (minutnik). Kod źródłowy zaczerpnąłem z Elektrody.
    Problem polega na tym,że:
    Timer późni się 15 sek. na 5 min. (przy kwarcu 11,0592 MHz (2x33pF))
    i śpieszy 5 sek na 5 min (przy kwarcu 12MHz (2 x 39pF))

    Kod w bascom. Ustawienie wartości początkowej dla Timera0 nie działa i nie mam możliwości skorygowania dokładności upływania czasu.
    W symulatorze bascom8051 w rejestrach ustawiana jest poprawna wartość a w zaprogramowanym procesorze nie ma 'regulacji'.
    Dodam,że procesorki kupiłem zza oceanu.
    Zmiana wartości kondensatorów przy kwarcu nie wiele daje. Testowane na kwarcu 12,000 MHz i 11,0592 MHz. Wiem,że dokładnoścć sekundowa w minutniku nie jest tak ważna ale chciałem dociec gdzie jest problem i przy okazji uzupełnić swoją wiedzę o timerach w µP.
    Procesorek AT89c2051-24PU. Nie mam dużej możliwości dodawania kodu bo program w kompilacji już zajmuje prawie 2048kB, hmmm.

    Kod w załączniku.

    Dodano po 3 [minuty]:

    minutn..zip Download (2.81 kB)
  • REKLAMA
  • #2 19074661
    TT5
    Poziom 10  
    Przy kwarcu 12MHz dźwiek minutnika z buzera jest bardzo niskotonowy, parametry polecenia sound też nie regulują częstotliwości, przy 11,59200MHz jest oki.

    Dodano po 1 [minuty]:

    Proszę o sugestie/pomoc...

    Dodano po 4 [godziny] 38 [minuty]:

    Konfiguracja timer0:
    TT5 napisał:
    Config Timer0 = Timer , Gate = Internal , Mode = 2
    Load Timer0 , 39150
    Enable Timer0
    Enable Interrupts
    Reset Odliczanie
    On Timer0 Timer0_int


    Dalej w programie (dla kwarcu 11 059 200 Hz):
    TT5 napisał:
    Timer0_int: 'mechanizm odliczania sekund

    Incr Temp
    If Temp = 15 Then
    Flag = 1
    Decr Sekundy 'uplywaja sekundy
    Temp = 0
    If Sekundy = 255 Then
    Sekundy = 59
    Beep 'co minute..beep
    Decr Minuty 'upluwaja minuty
    If Minuty = 255 Then
    Minuty = 0
    End If
    End If
    End If


    Dodano po 2 [minuty]:

    Load Timer0 , 39150 <- ten wpis nie reguluje czasu,
    również ten nie reguluje:
    Counter0 = 39150

    (...)
  • #3 19081701
    TT5
    Poziom 10  
    Widzę, że nieodpowiednie forum wybrałem. Przepraszam.
    Temat zamykam.

    Dodano po 4 [minuty]:

    Napisałem kod pod wyświetlacze led 7segment. Timer minutnika pracuje w mode=2 późni się 500ms / 1 h .
    Również µP z TME, nie chciał pracować poprawnie pod tamtym programem z wyświetlanie LCD i ciekawymi opcjami. Czyli kod coś nie bardzo.

    Moderowany przez Marek_Skalski:

    Kolego, wybrałeś zabytkowy mikrokontroler o zanikomej ilości pamięci programu, wbraleś zabytkowy język programowania i zamiast umieścić program w jawnej formie, to dołączyłeś plik w formacie wymagającym użycia zabytkowych narzędzi. W takiej sytuacji szansa na pomoc jest bardzo mała. Temat został założony w niewłaściwej sekcji, dlatego przesunąłem.

REKLAMA