eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika74HCT245 jako port wejściowy - nie działa, choć powinienRe: 74HCT245 jako port wejściowy - nie działa, choć powinien
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!news.roellig-ltd.de!open-news-network.org!weretis.net!fee
    der8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!
    peer.ams1.xlned.com!news.xlned.com!peer03.ams4!peer.am4.highwinds-media.com!new
    s.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-sp
    o-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    Subject: Re: 74HCT245 jako port wejściowy - nie działa, choć powinien
    Newsgroups: pl.misc.elektronika
    References: <5f3e204e$0$520$65785112@news.neostrada.pl>
    <5f3e6e58$0$517$65785112@news.neostrada.pl>
    From: Atlantis <m...@w...pl>
    Date: Thu, 20 Aug 2020 16:37:51 +0200
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
    Thunderbird/68.11.0
    MIME-Version: 1.0
    In-Reply-To: <5f3e6e58$0$517$65785112@news.neostrada.pl>
    Content-Type: text/plain; charset=utf-8
    Content-Language: pl
    Content-Transfer-Encoding: 8bit
    Lines: 56
    Message-ID: <5f3e8abf$0$520$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 31.0.68.118
    X-Trace: 1597934271 unt-rea-b-01.news.neostrada.pl 520 31.0.68.118:18517
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Bytes: 3866
    X-Received-Body-CRC: 2959577138
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:756465
    [ ukryj nagłówki ]

    On 20.08.2020 14:36, J.F. wrote:

    > Opis by sugerowal, ze te 245 wystawia dane na magistrale w niepożądanym
    > momencie.

    To było moje pierwsze skojarzenie. Chociaż dziwne jest to, że program
    nie tylko rejestruje samoczynne (fałszywe) naciśnięcia klawiszy, ale też
    prawidłowo reaguje na te prawdziwe.
    Przypomniałem sobie też, że kiedyś już testowałem działanie tego portu,
    co jakiś czas sprawdzając w pętli, czy po wciśnięciu przycisków zmieni
    się wartość odczytywana z portu - zmieniała się, a program działał
    stabilnie i nie wieszał się. Czyli wyglądałoby na to, że to jednak nie
    sam odczyt z portu jest czynnością destrukcyjną z punktu widzenia
    stabilności programu.

    Moim drugim pomysłem była funkcja zajmująca się debouncingiem. Tylko jak
    już pisałem, ta działa prawidłowo w innym urządzeniu opartym na tej
    samej architekturze.

    Funkcja sprawdzania przycisku wygląda następująco:



    > Ale ... powod moze byc tez zupelnie inny.
    > Chocby czysto softwareowy - jakis blad w funkcjach przyciskow, zla
    > obsluga przerwania itp.

    O tym też myślałem, jednak nie pasuje mi żadna z potencjalnych przyczyn,
    które brałem pod uwagę. Przerwania nie są wykorzystywane do obsługi
    przycisków. Wszystkie inne funkcjonalności oparte na przerwaniach (UART
    RX, timer, RTC) działają prawidłowo.
    Myślałem o potencjalnym nadpisaniu stosu, ale:
    - Niewielki sprzętowy stos 6502 jest wykorzystywany przez kompilator
    CC65 (to z niego korzystam, niewielkie fragmenty kodu pisząc w asemblerze).
    - Do większości operacji wykorzystywany jest programowy stos, który
    zaczyna pisać w górnej części pamięci RAM, idąc w dół.
    - Układ posiada 8 kB pamięci RAM, co jest stosunkowo dużą wielkością jak
    na tego typu konstrukcję.
    - Do tej pory nie korzystam ze zbyt dużej liczby zmiennych i jest raczej
    mało prawdopodobne, żeby stos zaczął nadpisywać pamięć.
    - Zwłaszcza, że staram się ostrożnie gospodarować stosem. Nie tworzę
    zbyt dużych ilości zmiennych statycznych wewnątrz funkcji (jeśli to
    możliwe wykorzystując statyczne zmienne globalne, dzielone między
    funkcjami), nie przekazuję zbyt dużej ilości parametrów (zamiast tego
    posługuję się np. wskaźnikami na strukturę albo zmiennymi globalnymi
    ustawianymi przed wywołaniem funkcji). Staram się też unikać
    zagnieżdżonych wywołań funkcji i rekurencji.



    > I jak zwykle - daj wolniejszy zegar, jak przejdzie ... moze cos nie
    > wyrabia szybkosciowo.

    Zegar już teraz jest wolny - jedynie 1 MHz. Właśnie z uwagi na duże
    moduły połączone taśmą ze złączami IDC. To raczej sporo poniżej
    możliwości WDC65C02 oraz wymagań współczesnych układów HCT...

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

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: