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!2.eu.feeder.erj
    e.net!feeder.erje.net!feeds.phibee-telecom.net!newsreader4.netcologne.de!news.n
    etcologne.de!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.ams4!peer.am
    4.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-02
    .news.neostrada.pl!unt-spo-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>
    <5f4535af$0$536$65785112@news.neostrada.pl>
    <5f453f5f$0$554$65785112@news.neostrada.pl>
    From: Atlantis <m...@w...pl>
    Date: Tue, 25 Aug 2020 20:36:41 +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: <5f453f5f$0$554$65785112@news.neostrada.pl>
    Content-Type: text/plain; charset=utf-8
    Content-Language: pl
    Content-Transfer-Encoding: 8bit
    Lines: 126
    Message-ID: <5f455a39$0$551$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 83.27.20.46
    X-Trace: 1598380601 unt-rea-a-02.news.neostrada.pl 551 83.27.20.46:35436
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Bytes: 4386
    X-Received-Body-CRC: 3057669977
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:756592
    [ ukryj nagłówki ]

    On 25.08.2020 18:42, J.F. wrote:

    > Mowilem - wpisz w stos jakies znane wartosci i sprawdzaj ile ich sie
    > ostalo.

    Na razie wstrzymałem się z tym testem, bo jego przeprowadzenie jest
    trochę uciążliwe ma tak antycznej platformie, gdy nie ma się dostępu do
    sprzętowego debuggera i nie można tak po prostu ustawić pułapki i
    podejrzeć zawartości pamięci.
    Na chwilę obecną obserwacje zdają się wskazywać właśnie na problem ze
    stosem...


    > Sprzetowy chyba tez uzywa.

    Tak, oczywiście. Miałem na myśli to, że używa go w ograniczonym
    zakresie. Bodajże m.in. wartości zwracane przez funkcje są odkładane na
    tym stosie. I to chyba tylko wtedy, gdy są one za duże, żeby dało się je
    przekazać przez rejestry.


    > Ale Ty stosu sprzetowego potrzebujesz ... chyba

    Wydaje mi się, że sam w części kodu napisanej w asemblerze użyłem
    instrukcji PHA i PLA tylko kilka razy. Na pewno występuj one w części
    odpowiadającej za wykonanie przerwania (zrzucenie na stos i przywrócenie
    kontekstu) oraz w jednej z procedur opóźniających. Widzę, że w kodzie
    generowanym przez kompilator też czasem się pojawiają, gdy np. chwilowo
    trzeba zwolnić rejestr albo akumulator.


    > Ten jest chyba dobry - bo juz nie wołasz key_update().

    Tak, to jest aktualna wersja kodu, w której wywaliłem wywołania tej
    funkcji. Jednak to właśnie ten projekt buł problematyczny. Drugi, pomimo
    wywołań kay_update() zawsze działał całkowicie poprawnie.


    > A mozesz wrzucic assembler do funkcji key_update ?
    > Moze ma tam troche wewnetrznych zmiennych tymczasowych.

    Kompiluje się do następującego kodu asemblerowego:

    ; ----------------------------------------------------
    -----------
    ; void __near__ key_update (__near__ struct key *)
    ; ----------------------------------------------------
    -----------

    .segment "CODE"

    .proc _key_update: near

    .segment "BSS"

    L001E:
    .res 1,$00

    .segment "CODE"

    jsr pushax
    lda $6600
    jsr pusha0
    ldy #$03
    jsr ldaxysp
    sta ptr1
    stx ptr1+1
    lda (ptr1)
    jsr tosanda0
    jsr bnega
    sta L001E
    lda L001E
    jsr pusha0
    ldy #$03
    jsr ldaxysp
    sta ptr1
    stx ptr1+1
    ldy #$01
    lda (ptr1),y
    jsr tosicmp0
    beq L0023
    lda L001E
    beq L0026
    jsr pushw0sp
    jsr _millis
    ldy #$02
    jsr staspidx
    bra L002F
    L0026: jsr _millis
    jsr pushax
    ldy #$03
    jsr ldaxysp
    sta ptr1
    stx ptr1+1
    ldy #$02
    lda (ptr1),y
    jsr tossuba0
    cmp #$03
    bcc L002F
    jsr ldax0sp
    ldy #$03
    sta ptr1
    stx ptr1+1
    lda (ptr1),y
    iny
    ora (ptr1),y
    beq L002F
    jsr ldax0sp
    ldy #$04
    jsr ldaxidx
    jsr callax
    L002F: jsr ldax0sp
    sta ptr1
    stx ptr1+1
    lda L001E
    ldy #$01
    sta (ptr1),y
    L0023: jmp incsp2

    .endproc



    > No i wolasz z niej te key_func, prepare_disp, update_disp jak sie domyslam.

    A tak, faktycznie. Te funkcje są wywoływane. Funkcja key_func przez
    wskaźnik na funkcję zapisany w strukturze, a z niej jeszcze po kolei
    prepare_disp i update_disp.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 28.08.20 11:03 J.F.

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: