eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Pamięć nadpisuje stos (choć powinno być mnóstwo miejsca)
Ilość wypowiedzi w tym wątku: 14

  • 11. Data: 2020-09-30 18:19:31
    Temat: Re: Pamięć nadpisuje stos (choć powinno być mnóstwo miejsca)
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:5f749a85$0$544$6...@n...neostrada.
    pl...
    >Ok. Wygląda na to, że udało mi się namierzyć źródło problemu.
    >Kod obsługujący przerwanie wywoływał funkcję. która zawierała
    >polecenia
    >rozkazy SEI/CLI (zabezpieczenie przed uszkodzeniem zawartości
    >zmiennej
    >przez przerwanie). Jednak w przypadku 6502 użycie tych rozkazów w
    >trakcie obsługi może spowodować wystąpienie kolejnego przerwania, a w
    >efekcie nadpisanie stosu sprzętowego i niestabilne działanie.

    Jesli dobrze rozumiem - to niechcacy odblokowalo przerwania w
    procedurze obslugi przerwania?
    I sie przerwania nakladaly, i stos rosl ?

    To by tlumaczylo zachowanie, ale ... obsluga przerwania powinna byc
    krotka, i szansa zlapania drugiego przerwania niewielka, a przeciez
    dwa jeszcze nie powinny wywrocic programu.
    Musialo sie to czesciej zdarzac, czyli obsluga przerwania za dluga,
    i/lub przerwania czeste.

    No chyba, ze krytyczne bylo samo przerwanie obslugi i niekontrolowana
    zmiana uzywanych tam zmiennych.

    Pamiec mi juz zawodzi - ta flaga nie jest w statusie 6502 ?
    Moze da sie zamiast CLI przywrocic poprzedni stan flagi ...

    J.


  • 12. Data: 2020-09-30 20:00:27
    Temat: Re: Pamięć nadpisuje stos (choć powinno być mnóstwo miejsca)
    Od: a...@h...invalid (Arnold Ziffel)

    J.F. <j...@p...onet.pl> wrote:

    > Jesli dobrze rozumiem - to niechcacy odblokowalo przerwania w
    > procedurze obslugi przerwania?
    > I sie przerwania nakladaly, i stos rosl ?

    Pewnie tak, stos wywołań rósł, stos używany przez kompilator na zmienne
    lokalne funkcji obsługi przerwań też rósł...

    > To by tlumaczylo zachowanie, ale ... obsluga przerwania powinna byc
    > krotka, i szansa zlapania drugiego przerwania niewielka, a przeciez
    > dwa jeszcze nie powinny wywrocic programu.

    Jeśli tam jest jedno przerwanie do wszystkiego, to może nie może być tak
    bardzo krótka, a i przerwanie często się pojawia (np. od timera?).

    > Musialo sie to czesciej zdarzac, czyli obsluga przerwania za dluga,
    > i/lub przerwania czeste.

    Może ta obsługa klawiatury jest w przerwaniu. Do tej pory się wyrabiało,
    ale doszło trochę cykli i przestało.

    > No chyba, ze krytyczne bylo samo przerwanie obslugi i niekontrolowana
    > zmiana uzywanych tam zmiennych.

    Tzn. ISR nie było wielobieżne (reentrant)? Tak też może być...

    --
    Starsza pani szła w kierunku peronu. Jej serce łkało. Nie chciała
    wyjeżdżać. Tu mieszkała jej córka, jej wnuk. Nie wiedziała, kiedy znów
    tu przyjedzie. Obok niej szła jej córka, trzymając ją pod rękę. Też była
    smutna. Maleńki wnuczek mocno trzymał babcię za nogi. Też nie chciał,
    żeby wyjeżdżała.
    A wokół tej grupy, objuczony ciężkimi tobołami, radośnie skakał zięć.


  • 13. Data: 2020-09-30 22:09:21
    Temat: Re: Pamięć nadpisuje stos (choć powinno być mnóstwo miejsca)
    Od: Atlantis <m...@w...pl>

    On 30.09.2020 20:00, Arnold Ziffel wrote:

    > Pewnie tak, stos wywołań rósł, stos używany przez kompilator na zmienne
    > lokalne funkcji obsługi przerwań też rósł...

    Zapewne tak właśnie było. Konkretnie winę za przyrost programowego stosu
    musiała ponosić t sama wywoływana funkcja, w której znalazły się
    polecenia SEI/CLI.
    Wygląda na to, że wprowadzenie tej jednej zmiany usunęło problem.
    Urządzenie chodzi już przez pół dnia i nie widzę żadnych przejawów
    niestabilnego działania. Nie było fałszywych wciśnięć przycisków i nie
    zresetowało się ani razu. ;)


    > Jeśli tam jest jedno przerwanie do wszystkiego, to może nie może być tak
    > bardzo krótka, a i przerwanie często się pojawia (np. od timera?).

    Tak, tm jest jedno przerwanie od wszystkiego, bo system nie posiada
    żadnego kontrolera priorytetów przerwań. W tym jednym przerwaniu trzeba
    odpytać po kolei wszystkie urządzenia. W chwili obecnej korzystają z
    tego trzy urządzenia: RTC (raz na sekundę), timer (co 20 ms) i UART
    (kiedy przyjdzie nowy znak).


  • 14. Data: 2020-10-01 03:08:58
    Temat: Re: Pamięć nadpisuje stos (choć powinno być mnóstwo miejsca)
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:5f74e5f1$0$17357$6...@n...neostrad
    a.pl...
    On 30.09.2020 20:00, Arnold Ziffel wrote:
    >> Pewnie tak, stos wywołań rósł, stos używany przez kompilator na
    >> zmienne
    >> lokalne funkcji obsługi przerwań też rósł...

    >Zapewne tak właśnie było. Konkretnie winę za przyrost programowego
    >stosu
    >musiała ponosić t sama wywoływana funkcja, w której znalazły się
    >polecenia SEI/CLI.

    >> Jeśli tam jest jedno przerwanie do wszystkiego, to może nie może
    >> być tak
    > bardzo krótka, a i przerwanie często się pojawia (np. od timera?).

    >Tak, tm jest jedno przerwanie od wszystkiego, bo system nie posiada
    >żadnego kontrolera priorytetów przerwań. W tym jednym przerwaniu
    >trzeba
    >odpytać po kolei wszystkie urządzenia. W chwili obecnej korzystają z
    >tego trzy urządzenia: RTC (raz na sekundę), timer (co 20 ms) i UART
    >(kiedy przyjdzie nowy znak).

    Trzy przerwania sprzetowe polaczone bramka OR czy tam AND, AND "na
    drucie" ?

    Pomysl czy tam nie bylo sytuacji:
    -jeden z ukladow wysterowuje linie IRQ,
    -w trakcie obslugi, zanim obsluzysz wlasciwy chip, wykonuje sie
    instrukcja CLI,
    -poniewaz linia IRQ jest ciagle aktywna - procesor natychmiast
    wywoluje obsluge przerwania,
    -i tak w kolko, dopoki program obslugi nie dojdzie do wlasciwego chipu
    i nie zgasi przyczyny przerwania, lub chip sam nie zdeaktywuje.

    Tylko to raczej blyskawicznie by wywalalo program, a nie tak raz na
    pewien czas ...

    J.


strony : 1 . [ 2 ]


Szukaj w grupach

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: