eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaMC6840 - pomiar długości impulsu › MC6840 - pomiar długości impulsu
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!news.mixmin.net!aioe
    .org!peer03.ams4!peer.am4.highwinds-media.com!news.highwinds-media.com!newsfeed
    .neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.
    neostrada.pl.POSTED!not-for-mail
    Newsgroups: pl.misc.elektronika
    X-Mozilla-News-Host: news://news.tpi.pl:119
    From: Atlantis <m...@w...pl>
    Subject: MC6840 - pomiar długości impulsu
    Date: Mon, 19 Oct 2020 18:25:31 +0200
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
    Thunderbird/78.3.1
    MIME-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Language: pl
    Content-Transfer-Encoding: 8bit
    Lines: 31
    Message-ID: <5f8dbdfb$0$550$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.27.143.103
    X-Trace: 1603124731 unt-rea-a-02.news.neostrada.pl 550 83.27.143.103:55180
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Bytes: 2380
    X-Received-Body-CRC: 3501407872
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:758052
    [ ukryj nagłówki ]

    W paru projektach "retro" wykorzystywałem już stary timer Motoroli
    MC6840, do pomiaru czasu między zdarzeniami. Teraz chciałbym wykorzystać
    go do pomiaru długości impulsu, w celu dekodowania sygnału DCF77.
    Platforma na której będzie to chodziło jest oparta na równie antycznej
    architekturze 6502.

    Dokumentacja timera tutaj:
    http://pdf.datasheetcatalog.com/datasheet/motorola/M
    C6840.pdf

    Chciałem tylko upewnić się, że dobrze rozumiem zasadę działania układu w
    tym trybie.

    1) Konfiguruję TIMER1 zgodnie z tabelką na dole strony 8. Czwarta opcja
    (110) - przerwanie jest wywoływane, gdy czas trwania impulsu niskiego na
    GATE1 będzie krótszy niż "Time Out".
    2) Ładuję do licznika wartość 0xFFFF.
    3) Licznik zaczyn odliczać, gdy na GATE1 pojawi się stan niski. W moim
    przypadku zlicza 25 ms impulsy z innego licznika, podawane na wejście
    C1. Z każdym impulsem jego wartość jest dekrementowana.
    4) Jeśli na GATE1 ponownie pojawi się wartość wysoka przed wyzerowaniem
    timera, zostanie wywołane przerwanie.
    5) W przerwaniu odczytuję wartość TIMERA pamiętając, żeby zamienić bajty
    miejscami (6502 jest little endian, rodzina układów Motoroli jest big
    endian).
    6) Żeby uzyskać liczbę zliczonych impulsów odejmuję odczytaną wartość od
    0xFFFF.
    7) Ponownie ładuję do timera 0xFFFF, bo w przeciwnym razie następnym
    razem zacząłby liczyć tam, gdzie skończył. Nie jest przeładowywany
    automatycznie, mam rację?

    Moje założenia są prawidłowe, czy gdzieś popełniłem błąd?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: