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
  • Data: 2020-08-25 20:36:41
    Temat: Re: 74HCT245 jako port wejściowy - nie działa, choć powinien
    Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie 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: