UART dla 6502

Feb 26, 2023 Last reply: 3 years ago 14 Replies

Cześć.



Chciałem na szybko dodać UART (tylko komuniakcja na terminal), na minimalistyczny system 6502.



Z tego co widze, prawilnie jest dorzucić MC6850. Zamówiłem wersję podstawową, bo tylko taką znalazłem, ale ona jest troche wolna (?), więc zapytam profilaktycznie: słyszał ktoś o jakiś innych implementacjach UART do magistrali 650x/680x? Chciałbym mieć jakąś alternatywę w razie co.



To jednorazowa zabawka i chcę wpiąc tam uart minimalnym nakładem kosztów.



PS. Datasheet jest lekko mętny i nie wiem, czy clock tx/rx musi być jakoś w fazie z magistralą? Po obejrzeniu kilku schematów zawsze jest, ale wydaje mi sie, że to raczej z powodu oszczędności a nie faktycznej potrzeby.


W dniu 26.02.2023 o 21:28, heby pisze:

jeśli to nie musi być koszerne, to możesz podpiąć coś ze stajni Intela np 8250 lub 16450. Niezbędne sygnały RD i WR wytworzysz z sygnału R/W bramkowanego sygnałem Fi2

Dzięki, ale to w 3 kolejności, zapytam najpierw o coś kompatybilne wprost z magistralą 6502 ;)

W swoich projektach korzystałem z MOS6551. Spokojnie wyciągał 9600bps. Szybszych transferów do obsługi terminala w takim systemie chyba nie potrzebujesz, bo i sam procesor nie będzie w stanie zbyt szybko przetwarzać i przekazywać danych.

Nie musi być. W fazie z magistralą musi być linia PH2. Linię XTL1 (pin

6) taktowałem z całkowicie osobnego generatora kwarcowego, z częstotliwością bardziej odpowiednią do taktowania UART-a niż zegar systemowy.

Z tym, że 8250 ma jedną wadę - nie posiada wbudowanego układu do dzielenia sygnału zegarowego. Chcąc mieć możliwość konfigurowania prędkości trzeba posłużyć się np. fragmentem 8253. Łącznie z koniecznością generowania dodatkowych sygnałów to jednak jest już trochę kombinowania. MOS6551 załatwi wszystko znacznie prościej.

niedziela, 26 lutego 2023 o 21:29:02 UTC+1 heby napisał(a):

MOS6522 był np. w maintoshach i w c64 chyba. Tylko jak tak czytam to bardziej parallel to serial, a nie uart. Ale modem do tego podłączali.

Bardziej chodzi mi o szybkośc magistrali. Mam około 1.6MHz na Fi i widze, że słabsze wersje nie wyrobią się. Ale może się mylę.

Dzięki.

tu masz przykład z 16C550CN (modyfikacja breadboard compurera Bena Eatera)

formatting link
c.

Dzięki, ale to do innej magistrali. Jak nie znajdę (lub zamówione 6850 nie zadziała), to dopiero będę robił druciarstwo.

ah, rozumiem że musi być koszernie :P

A tak na marginesie to nawet Atari nie uzywało specjalizowanych UARTów. W swoim 4-portowym RS232 ATARI 850, używali 6507 i dwa 6532 (RIOT), w którym bitbang-owali port równoległy Jest też w nim 128 bajtów RAMu. co może być wystarczające dla małego systemu.

c.

SIO jest mało podobne do UART szczerze mówiąc. Oczywiscie da się zmusić RS232 do gadania z SIO (patrz SIO2PC) ale to juz typowy bitbang.

Taka ciekawostka - Atari SIO zostało zaprojektowane przez tego samego człowieka (Joseph Decuir) , który potem maczał palce w Amigach, standardzie USB, Bluetooth, GSM i innych ciekawych urządzeniach.

c.

formatting link

POKEY zajmuje się konwersją szeregowo/równoległą dla typowej transmisji UART oraz zgłaszanime przerwań transmisji. Trudno nazywać to bitbangiem.

Akurat 8-bit Atari i Commodore Amiga mają z sobą bardzo wiele wspólnego pod względem koncepcji. Podobnie jak Commodore 64 i Atari ST...

Pisałem o bitbangu po stronie PC w przypadku SIO2PC

Po stronie PC też nie ma bitbangu. Protokół szeregowy jest wprost kompatybilny algorytmicznie z tym używanym w Atari. Najtańsza przelotka SIO2PC zawiera w środku MAX232 do konwersji poziomów napięć do COM.

Byś może masz na myśli systemy turbo do stacji dysków, kiedy UART w POKEY był pomijany i dane przesyłane różnymi metodami wymagającymi ręcznym machaniem bitami. Ale to hackerstwo. Standardowy proto komunikacji w Atari to zwykły UART w dodaku prawie całkowicie obrabiany sprzętowo.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required