eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Płytka z MOS6502 niestabilna do czasu dotknięcia masy
Ilość wypowiedzi w tym wątku: 20

  • 11. Data: 2018-08-12 21:43:37
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Atlantis <m...@w...pl>

    On 12.08.2018 21:19, Sebastian Biały wrote:

    > Która była ładowana z czego?

    Pętla opóźniająca była osobnym podprogramem, który był wywoływany po
    każdym zmianie stanu diody. Wewnątrz tego podprogramu znajdowały się
    właściwie tylko dwie pętle, jedna zagnieżdżona w drugiej. Pierwsza
    operowała na rejestrze X, druga na Y. Każdy z nich był inicjowany
    wartością 0xFF i po każdym przejściu zmniejszany o jeden.


    > Ponadto jednak w tego typu projekcie wykluczyłbym najpierw hardware.
    > 6502 można solidnie przetaktować przez zniekształcony sygnał zegarowy,
    > wtedy częśc funkcjonalności nie działa a takim małym programie czasem
    > nie widać że np. się sam resetuje. Jak wygląda generator zegara?

    To była moja pierwsza myśl. Na oscyloskopie wszystko wygląda ok. To
    znaczy sygnał zegarowy bezpośrednio na wyjściu generatora SG51P jest
    minimalnie "postrzępiony" na górze, jednak po przejściu przez dzienlnik
    na 74HCT74 robi się z tego całkiem ładny sygnał, niemalże kwadrat z
    lekko zaokrąglonymi krawędziami.


    > Niezainicjowania zmienna/rejestr, błąd w sofcie. Mozliwe, choć watpliwe
    > że wina asemblera/kompilatora. Czego używasz?
    >
    > Pokaż źródła jednego i drugiego. Jeszcze coś pamiętam z asm 6502.

    Przy większych projektach używam cc65, ale tutaj posłużyłem się prostym
    webowym narzędziem asm80.com.

    Pierwszy program - ten, z któ(C)ym były problemy:

    CTRL EQU $0BC00

    .ORG $0C000
    CLD
    LDX #$FF
    TXS

    LOOP:
    LDA #$04
    STA CTRL

    JSR DELAY

    LDA #$80
    STA CTRL

    JSR DELAY

    JMP LOOP

    DELAY:
    LDX $FF
    DELAY_LOOP1:
    LDY $FF
    DELAY_LOOP2:
    NOP
    DEY
    BNE DELAY_LOOP2
    DEX
    BNE DELAY_LOOP1
    RTS

    .ORG $FFFE
    DW $0C000


    Drugi program - ten, który teraz zdaje się działać prawidłowo:

    TRL EQU $0BC00

    .ORG $C000
    INIT:
    LDX #$FF
    TXS
    LDA #$80
    STA CTRL
    LDA #$01
    STA DIODE
    LDA #$FF
    STA TIMER
    LDA #$FF
    STA TIMER+1
    LOOP:
    JSR HANDLE_TIMER
    JMP LOOP


    HANDLE_TIMER:
    DEC TIMER
    BNE HT_RET
    LDA #$FF
    STA TIMER
    DEC TIMER+1
    BNE HT_RET
    LDA #$FF
    STA TIMER+1
    ; tutaj wykonujemy nasz kod
    LDA DIODE
    BEQ SET_DIODE
    LDA #$04
    STA CTRL
    LDA #$00
    STA DIODE
    JMP HT_RET
    SET_DIODE:
    LDA #$80
    STA CTRL
    LDA #$01
    STA DIODE
    HT_RET:
    RTS


    IRQ:
    RTI

    NMI:
    RTI

    .ORG $0200
    TIMER: DS 2
    DIODE: DS 1

    .ORG $FFFA
    DW NMI
    DW INIT
    DW IRQ


  • 12. Data: 2018-08-12 21:51:24
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Atlantis <m...@w...pl>

    I jeszcze jedno, czy hipotetycznie powodem (lub jednym z powodów) takiej
    niestabilności może być fakt zasilania tego z 5V stabilizowanego
    zasilacza impulsowego?


  • 13. Data: 2018-08-12 22:04:23
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Sebastian Biały <h...@p...onet.pl>

    On 8/12/2018 9:51 PM, Atlantis wrote:
    > I jeszcze jedno, czy hipotetycznie powodem (lub jednym z powodów) takiej
    > niestabilności może być fakt zasilania tego z 5V stabilizowanego
    > zasilacza impulsowego?

    Jak chiński to może. Dodaj solidny elektrolit, najlepiej mały i duzy na
    zasilaniu.


  • 14. Data: 2018-08-12 22:12:41
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Sebastian Biały <h...@p...onet.pl>

    On 8/12/2018 9:43 PM, Atlantis wrote:
    > To była moja pierwsza myśl. Na oscyloskopie wszystko wygląda ok. To
    > znaczy sygnał zegarowy bezpośrednio na wyjściu generatora SG51P jest
    > minimalnie "postrzępiony" na górze, jednak po przejściu przez dzienlnik
    > na 74HCT74 robi się z tego całkiem ładny sygnał, niemalże kwadrat z
    > lekko zaokrąglonymi krawędziami.

    A co wychodzi na outpucie F1 i F2? Nie obciążyles przypadkiem za bardzo
    jednego z nich? F2 nie może popychac więcej jak 2 bramek TTL jak pamiętam.

    > Pierwszy program - ten, z któ(C)ym były problemy:

    Nie widze jakiś dramatów. Wyłącz jeszcze przerwania SEI.

    Oczywiście po adresem $0100 masz ram na stos :) ? I stronę zerową ?


  • 15. Data: 2018-08-12 22:21:40
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sun, 12 Aug 2018 21:07:36 +0200, Atlantis napisał(a):
    > On 12.08.2018 20:47, Sebastian Biały wrote:
    >> Kasowalem kiedyś epromy słońcem, ale trwało to kilka dni i zazwyczaj
    >> kończyło sie w 50%. Niektórych w ogóle nie dało się skasować.
    >
    > Chodzi mi o to, czy wystawienie EPROM-u na działanie słońca (właśnie
    > przez kilka dni, poprzez położenie go koło okna) może w teorii
    > spowodować niestabilne działania programu?

    Moze

    > A konkretnie działanie
    > niestabilne w ten konkretny sposób, gdy czasem po włączeniu do zasilania
    > program zaczyna zachowywać się dziwnie?

    Ale nie tak, ze raz po wlaczeniu petla dziala dobrze, a innym razem
    nie.

    > Bop nic innego nie przychodzi mi do głowy. Skoro generator sygnału
    > taktującego był ok, a program robił to co powinien (tyko czasem
    > szybciej) to mam wrażenie, że raz na ileś tam włączeń musiało się dziać
    > coś, co sprawiało, że błędnie interpretowana była wartość, którą
    > reinicjowany był rejestr po zakończeniu przebiegu pętli.


    ... hm, a eproma zakleiles ?
    Moze to oswietlenie mu przeszkadzalo i sie zmienialo ?

    J.


  • 16. Data: 2018-08-12 22:23:38
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Atlantis <m...@w...pl>

    On 12.08.2018 22:12, Sebastian Biały wrote:

    > A co wychodzi na outpucie F1 i F2? Nie obciążyles przypadkiem za bardzo
    > jednego z nich? F2 nie może popychac więcej jak 2 bramek TTL jak pamiętam.

    Z tego co pamiętam, sygnały w porządku. F1 jest w ogóle nieużywany w
    moim projekcie. F2 w chwili obecnej jest podłączony do wejścia jednej z
    bramek 74HCT00, będącej elementem układu generującego sygnały RD i WR.
    F2 jest też wyprowadzony na złącze - zgodnie z założeniami ma taktować
    generator baudrate'u dla UART-a.



    >> Pierwszy program - ten, z któ(C)ym były problemy:
    >
    > Nie widze jakiś dramatów. Wyłącz jeszcze przerwania SEI.

    A właśnie... Możliwe, żeby winę za takie zachowanie ponosił brak tej
    instrukcji, jak również brak wektorów wskazujących na (chociażby puste)
    podprogramy obsługujące przerwanie? Coś w momencie podłączenia zasilania
    powodowałoby odczytanie fałszywej informacji o przerwaniu i namieszanie
    w programie?



    > Oczywiście po adresem $0100 masz ram na stos :) ? I stronę zerową ?

    Tak. RAM zaczyna się od 0x0000.


  • 17. Data: 2018-08-12 22:31:02
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Atlantis <m...@w...pl>

    On 12.08.2018 22:04, Sebastian Biały wrote:

    > Jak chiński to może. Dodaj solidny elektrolit, najlepiej mały i duzy na
    > zasilaniu.

    Był 1000uF low-ESR. Podczas eksperymentów wstawiłem mniejszy, 220uF.
    Opisany problem występował w obydwu przypadkach.

    A co do samego CPU - parę tygodni temu przetestowałem go na
    prowizorycznej konstrukcji złożonej na płytce uniwersalnej, z dużą
    ilością kynaru. Wtedy był w stanie odpalić Enhanced BASIC-a i działał
    normalnie. Problemem była jednak wrażliwość tej prowizorki na wstrząsy
    (Zimny lut ukryty pod grubą warstwą kynaru? Uszkodzone gniazdko?) więc
    przeniosłem projekt na normalne PCB, a właściwie zestaw kilka modułów.

    Na razie mam tylko moduł z CPU, pamięciami i podstawową logiką, więc
    BASIC-a jeszcze nie odpalę. Mogłem jedynie użyć LED-ów do debugowania.


  • 18. Data: 2018-08-13 13:43:26
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:5b70974a$0$621$6...@n...neostrada.
    pl...
    On 12.08.2018 22:12, Sebastian Biały wrote:
    >>> Pierwszy program - ten, z któ(C)ym były problemy:
    >> Nie widze jakiś dramatów. Wyłącz jeszcze przerwania SEI.

    >A właśnie... Możliwe, żeby winę za takie zachowanie ponosił brak tej
    >instrukcji, jak również brak wektorów wskazujących na (chociażby
    >puste)
    >podprogramy obsługujące przerwanie? Coś w momencie podłączenia
    >zasilania
    >powodowałoby odczytanie fałszywej informacji o przerwaniu i
    >namieszanie
    >w programie?

    A co z liniami IRQ/ i NMI/ ? O ile pamietam to na stale do + dolaczone
    i nieaktywne.

    Na pewno bezpieczniej bedzie ustawic w obsludze przerwania chocby samo
    RETI.

    Bo teraz, jesli przerwanie sie zglosi, lub odczytasz rozkaz FF z
    pamieci, to program idzie w maliny i robi nie wiadomo co i jak dlugo
    ...

    J.


  • 19. Data: 2018-08-14 12:26:51
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Atlantis <m...@w...pl>

    Swoją drogą, nie chcę zaczynać nowego wątku, więc napiszę tutaj.
    Chciałbym upewnić się co do jednej rzeczy - jak wygląda kwestia
    kompatybilności CMOS-owych wersji 6502 np taki (R65C02P4) z układami
    różnych rodzin logicznych? Zachowują one wsteczną kompatybilność z
    układami TTL? Stosując je mogę stosować takie rodziny jak 74LS czy
    74HCT, czy jednak powinienem użyć układów z serii 74HC albo 40xx?


  • 20. Data: 2018-08-14 14:43:48
    Temat: Re: Płytka z MOS6502 niestabilna do czasu dotknięcia masy
    Od: Atlantis <m...@w...pl>

    Hmm... Już chyba widzę w czym rzecz.
    Problem dotyczył poniższej pętli opóźniającej:

    DELAY:
    LDX $FF
    DELAY_LOOP1:
    LDY $FF
    DELAY_LOOP2:
    NOP
    DEY
    BNE DELAY_LOOP2
    DEX
    BNE DELAY_LOOP1
    RTS

    Na pierwszy rzut oka wszystko w porządku, a jednak popełniłem szkolny
    błąd. W pierwszych dwóch instrukcjach zabrakło znaku "#'. Z tego powodu
    argumentem instrukcji LDX i LDY nie była wartość 0xFF, ale wartość
    odczytywana spod adresu 0x00FF.

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: