Skocz do zawartości

atlantis86

Użytkownicy
  • Zawartość

    73
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    7

atlantis86 wygrał w ostatnim dniu 20 lipca

atlantis86 ma najbardziej lubianą zawartość!

Reputacja

130 Mistrz

O atlantis86

  • Ranga
    4/10
  • Urodziny 11.01.1986

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Kraków
  • Języki programowania
    C/C++, Python, ASM
  • Zainteresowania
    Amatorska elektronika, programowanie, historia techniki

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Ciekawostką był też 68008, stosowany m.in. w komputerze Sinclair QL. Ten miał ośmiobitową szynę danych, przez co łatwiej można było zastosować w nim standardowe pamięci, projektowane w myślą o systemach ośmiobitowych. Pewnie to od niego zacznę swoją zabawę z 68k.
  2. Mnie ten Monster 6502 trochę ciekawi, odkąd po raz pierwszy usłyszałem o tym projekcie. Nie powiem - chciałbym go mieć jako "gadżet". Przy czym pewnie koszt zamówienia płytki o tym rozmiarze wyszedłby astronomiczny, nawet w Chinach. Tranzystory i LEDY-y drogie nie są, ale przy tej ilości też uzbierałaby się zauważalna kwota... To jednak poszukiwany obiekt kolekcjonerski, a jego ceny na aukcjach są dość wysokie. Trochę bałbym się z nim eksperymentować. No i złożony na tym system będzie dość mocno ubogi... Zanim zabiorę się za budowanie własnego procesora, pewnie będę jeszcze kontynuował eksperymenty z polskim MCY7880. Potem chciałbym złożyć coś na 68k, tylko do tego czasu muszę popracować nad umiejętnościami programowania CPLD.
  3. To też mi chodzi po głowie, chociaż pewnie pójdę po linii najmniejszego oporu. Czyli 74181 i mikrokod. Nie mam zamiaru budować CPU z pojedynczych tranzystorów. Chociaż z grupą znajomych pracujemy nad projektem tranzystorowego zegara cyfrowego. Niestety obecnie projekt wisi w próżni.
  4. Wgrywanie programu do RAM-u przez UART nie jest wcale zadaniem trywialnym. Tak czy inaczej będziesz potrzebował jakiejś stałej pamięci (np. EPROM lub EEPROM), w której będziesz trzymał podstawowe podprogramy obsługujące transmisję szeregową, wektory przerwań, a także bootloader odpowiedzialny za ładowanie programu. Myślałem, żeby zrobić coś podobnego w jednym ze swoich projektów, tylko zamiast do RAM-u, ładować program do pamięci EEPROM. Mógłbym w ten sposób programować urządzenie w sposób przypominajacy Arduino. Jednak do tej pory nie chciało mi się za to zabrać i "męczę się" z kasownikiem i programatorem EPROM-ów. O budowaniu komputera do retrogamingu raczej zapomnij. Wszystko rozbija się o grafikę i dźwięk. Niemal wszystkie popularne komputery korzystały ze specjalnych chipów (np. słynne SID i VIC w Commodore). Nie były one dostępne w handlu. Obecnie można je czasem kupić na aukcjach - demontowane z uszkodzonych egzemplarzy, za cenę zbliżoną do używanego C64. Na dobrą sprawę pewne dałoby się je odtworzyć w jakimś FPGA, ale tutaj pojawia się pytanie o sens takiego przedsięwzięcia, skoro można w ten sposób odtworzyć cały komputer. Prościej wygląda sytuacja z układem ULA z ZX Spectrum - jego dało się odtworzyć za pomocą dużej ilości układów logicznych, powinien się też zmieścić w lepszym układzie CPLD. Zapewne są już gdzieś dostępne odpowiednie projekty. Na twoim miejscu budując komputer do grania w klasyki, celowałbym właśnie w Spectrum. Tyle tylko, że nie masz się co oszukiwać, że będzie to rozwiązaniem prostszym i tańszym niż zakup używanego "gumiaka". Bo nie będzie. Jeśli chcesz się bawić w technikę mikroprocesorową, to tutaj sens mają właściwie tyko zastosowania sentymentalno-dydaktyczne (CA-80), ewentualnie wzbogacone o sens praktyczny. W przypadku moich projektów mamy do czynienia z tą drugą sytuacją - próbuję budować na starych procesorach rzeczy, które o wiele prościej i szybciej mógłbym uruchomić na Atmedze. Ale tu chodzi o frajdę.
  5. Z erratami w PIC32 różnie bywa. W przypadku większości używanych przeze mnie układów nie było jakichś większych problemów. To znaczy nie natknąłem się na problemy, które musiałbym jakoś ręcznie obchodzić. Nie miałem też sytuacji, kiedy coś nie działało i po zerknięciu do erraty okazało się, że to wina błędu. Biblioteki od Microchipa zwykle zresztą uwzględniają znane błędy i potrafią je obchodzić. Są pewne problematyczne układy, na przykład niektóre pierwsze MCU z rodziny PIC32MZ (z grubsza można by je uznać za odpowiednik STM32F4) miały naprawdę szokujące niedociągnięcia. Pamiętam na przykład, że w jednym z nich nie działał oscylator w połączeniu z zewnętrznym kwarcem. Jedynym możliwym rozwiązaniem było stosowanie zewnętrznego generatora... Instrukcje Nop były ponoć dodawane w kompilatorze xc8. Natomiast xc32 ma w wersji darmowej zablokowane stopnie optymalizacji powyżej O1. W amatorskich warunkach nie ma to wielkiego znaczenia jak dla mnie. Kiedyś słyszałem, że można sobie skompilować kompilator pozbawiony tych ograniczeń, jednak nigdy się to nie bawiłem.
  6. Odczyt jest tak samo prosty jak zapis. Mikroprocesory generują specjalne wygnały, które pozwalają sterować operacjami odczytu i zapisu. W przypadku szyny intela są to sygnały !WR i !RD. Mikroprocesory z rodzin 6502 i 6800 co prawda nie generują ich bezpośrednio, ale można je w prosty sposób uzyskać za pomocą kilku bramek. Jest to wskazane, to większość powszechnie dostępnych pamięci EPROM i RAM została zaprojektowana z myślą o pracy na magistrali Intela. Jeśli chodzi o odczyt z/zapis do portu, to masz do wyboru dwie opcje: Wykorzystanie trójstanowego bufora zatrzaskowego, np. 74373 lub 74573. Możesz na nich zbudować zarówno port wyjściowy, jak i wejściowy. Tylko niestety, wyboru dokonujesz na etapie projektowania elektroniki i rozwiązanie działa tylko w jedną stronę, to znaczy nie będziesz w stanie odczytać wartości wpisanej wcześniej do portu wyjściowego. Musisz ją sobie trzymać w jakiejś pomocniczej zmiennej. Wykorzystanie specjalizowanego portu GPIO (np. 8255), który konfiguruje się podobnie do portów ze współczesnych mikrokontrolerów. W przypadku 6502 układy IO zajmują tą samą przestrzeń adresową, co pamięć. Systemy wzorowane na 8080/8085 (np. Z80 albo rodzina x86) miały osobną (mniejszą) przestrzeń adresową dla układów IO. Wyglądało to w ten sposób, że procesor posiadał dodatkowe linie !WR i !RD, ktore aktywowały się przy odczycie z/zapisie do peryferiów. W przypadku Z80 była to chyba jedna dodatkowa linia, którą trzeba było przepuścić przez dodatkową logikę aby stwierdzić, z czym procesor chce się w danej chwili dogadać.
  7. Myślę, że takie wykorzystanie 6510 trochę mija się z celem. Pamiętaj, że to mikroprocesor, a nie mikrokontroler. Żeby zrobić z nim cokolwiek, i tak musisz stworzyć szynę systemową, do której będzie podpięta przynajmniej jakaś pamięć stała z programem. Żeby korzystanie z tego miało jakikolwiek sens, trzeba dać jeszcze RAM - bez niego nie zaimplementujemy stosu i możemy zapomnieć o podprogramach czy przerwaniach. A skoro już mamy szynę systemową, to możemy do niej podpiąć różne inne rzeczy - GPIO, porty szeregowe, wyświetlacz na HD44780 (do 6502 podpina się go bardzo wygodnie, w przeciwieństwie do układów z szyną Intela). Myślę, że najbliższym, sensownym sposobem realizacji twojego pomysłu byłoby wykorzystanie jakiegoś układu z rodziny 8051. One miał już trochę wbudowanej pamięci RAM, a niektóre z nich (m.in. seria AT89 od Atmela) dysponowała także pamięcią flash. Zewnętrze pamięci można (ale nie trzeba) było podpiąć do szyny. No i portów było trochę więcej, był też wbudowany UART. Elektronika jest tak naprawdę bardzo prosta. Gdy już się zrozumie o co w tym chodzi, jest to bardzo logiczne. Wszystko podpinamy do tej samej szyny systemowej i umieszczamy w przestrzeni adresowej mikroprocesora. Za aktywowanie poszczególnych układów odpowiada dekoder adresów, który trzeba sobie zbudować z układów logicznych. W jednym z przyszłych projektów spróbuję chyba wykorzystać układ GAL - taki odległy przodek współczesnych CPLD i FPGA. Można sobie na nim zaimplementować jakąś prostą logikę, sterującą pracą systemu mikroprocesorowego. Zabawa ze starymi procesorami pozwala lepiej zrozumieć jak taki AVR działa. Masz tam te same bloki funkcyjne, tylko zamiast po prostu skonfigurować licznik, musisz go fizycznie podpiąć do szyny - bo jest on osobnym scalakiem.
  8. Z tego co pamiętam MOS6510 był produkowany specjalnie z myślą o Commodore 64. Układ został zaprojektowany po tym, gdy producent komputerów wykupił fabrykę mikroprocesorów. Od standardowego 6502 różnił się właściwie tylko obecnością portu I/O, którego kilka linii było wyprowadzonych na zewnątrz. Służyło to do przełączania portów, można było dzięki temu zrezygnować z kilku zewnętrznych scalaków. Pewnie da się je jeszcze kupić, zdemontowane z uszkodzonych komputerów. Jednak każdy projekt można równie dobrze zrealizować na 6502, który jest znacznie łatwiej dostępny, nawet w wersji CMOS. Jeśli nie chcesz kupować w Chinach, to na eBay'u można znaleźć kilku sprzedawców z róznych krajów Europy, którzy handlują tymi scalakami. Oczywiście cena jest odpowiednio wyższa.
  9. Ja swój egzemplarz AY-3-8500 kupiłem parę lat temu na olx. Z tego co widzę można te scalaki bez większego problemu kupić na Aliexpress, za niewielkie pieniądze. Kiedyś zresztą zamówiłem z Chin kilka sztuk, ale jeszcze ich nie przetestowałem. Jest dla mnie wielką tajemnicą skąd Chińczycy biorą duże ilości układów retro. Kiedyś natknąłem się na aukcje, na których masowo sprzedawano MOS6502. Zamówiłem je z ciekawości, bo wychodziło mniej niż dolar za sztukę. Spodziewałem się, że nie będą działały. Zbudowałem jednak płytkę testową, przygotowałem testowy program na EPROM-ie i... Niespodzianka! Każdy scalak zadziałał prawidłowo. Można by iść w stronę teorii spiskowej, że oni wkładają tam jakieś współczesne mikrokontrolery, emulujące stary krzem, ale: Marny byłby to interes, sprzedawać je potem za mniej niż dolara. Układy faktycznie wyglądają na stare. Postarzanie ich tylko zwiększałoby koszt tej wątpliwej inwestycji. Innym razem na eBay'u kupiłem od chińskiego sprzedawcy układy 65C02 (ten sam procesor w wersji CMOS). I tutaj faktycznie się naciąłem. To znaczy układ działał, ale na pewno był standardową wersją w wersji NMOS - wskazywał na to pobór prądu i brak obsługi kilku dodatkowych rozkazów. Moja robocza hipoteza jest następująca: Do Chin musiał kiedyś trafić ogromny transport złomu elektronicznego, ale tamtejsi przedsiębiorcy zauważyli, że mogą zarobić, odsprzedając Europejczykom i Amerykanom co ciekawsze części. Niewykluczone zresztą, że nie są to oryginalne MOS6502, ale jakieś klony robione przez firmy trzecie. Tyle tylko nie wiem, czy 6502 był w ten sposób kopiowany na taką samą skalę, jak np. 8080. Dla mnie to i tak nie jest tak istotne - ważne, że układ działa. Dla mnie to jednak dość istotny aspekt tego hobby i chętnie do niego wracam. Po prostu będąc dzieciakiem, w połowie lat dziewięćdziesiątych zainteresowałem się amatorską elektroniką. Składałem wtedy proste radia i wzmacniacze, ale konstrukcje na Z80 i 8051 były poza moim zasięgiem - zwyczajnie brakowało wiedzy, umiejętności i narzędzi. Teraz to wszystko kosztuje grosze. Jedno i drugie. To znaczy komputery jeszcze nie dorobiły się układów wizyjnych, ale pewnie kiedyś wrócę do tego projektu. Zrobiłem też kilka kontrolerów na 65C02 i na nich planuję w przyszłości zrobić coś bardziej konkretnego: mówiący zegar LED z chipem do syntezy mowy z lat osiemdziesiątych, jakiegoś jeżdżącego robota i coś w rodzaju stacji pogodowej. Niektóre z moich projektów retro były publikowane w tym dziale. Wystarczy przejść kilka stron wstecz.
  10. Mam słabość do starych układów scalonych. Zbudowałem już kilka konstrukcji na starych procesorach (MOS6502, Z80, 8051, polski MCY7880), leży też u mnie trochę ciekawy, zabytkowych układów cyfrowych, które czekają na swój moment, gdy będę miał trochę więcej czasu. Wiele rzeczy można zaemulować na mikrokontrolerze. Tylko po co, skoro można skorzystać z oryginalnego krzemu sprzed trzydziestu lat? To tylko chinch. Budowa modulatora nie miałaby w tej chwili sensu, bo i tak nie mam już w domu tak starego telewizora, który nie dysponowałby wejściem kompozytowym albo scart. Jeśli już, to raczej idę w drugą stronę - dodając wyjście wideo do starego sprzętu. W kolejce czeka chociażby konsola Rabmo (podróbka Atari 2600, hit polskich bazarów na początku lat dziewięćdziesiątych).
  11. Opisywana płytka stanowi projekt siostrzany dla innego modułu, opisanego na forum. Powstawały one niemalże równolegle, stąd pewna liczba podobieństw między nimi. O ile 32-bitowe mikrokontrolery Microchipa są dość rzadko wykorzystywane w amatorskich projektach, to 16-bitowych PIC24 nie spotyka się w nich prawie wcale. Ja jednak zainteresowałem się nimi z konkretnego powodu - w oparciu o nie powstała rodzina dsPIC, przeznaczona do zastosowań związanych z cyfrowym przetwarzaniem sygnałów. PIC24 potraktowałem jako wstęp, który pozwoli mi kiedyś zapoznać się z tą rodziną. Zamiast kupować płytkę prototypową, postanowiłem zbudować własną. Wykorzystałem przy tym układ PIC24FJ256DA210. Nie miałem ku temu jakiegoś konkretnego powodu, po prostu kiedyś nabyłem kilka sztuk przy okazji zakupów w jakimś sklepie internetowym. Od tego momentu leżały w szufladzie, czekając na lepsze czasy. Z karty katalogowej wynika, że układ ten posiada peryferia wspomagające tworzenie interfejsów graficznych, ta funkcjonalność szczególnie mnie jednak nie interesowała. Skupiłem się więc na tym, z czego korzystam najczęściej. Na płytce znajdziemy sterownik Ethernetu (ENC28J60), 2MB pamieci SPI-flash (SST25), złącze karty microSD oraz gniazdo USB do podłączenia pendrive'a. Znalazło się także miejsce dla kilku LED-ów SMD, a na złączach wyprowadziłem większość pinów. Podobnie jak w moich poprzednich płytkach czerwone piny służą do podłączenia programatora, a na zielonych znajdziemy UART. Do czego służy w takim razie złącze niebieskie? Już tłumaczę. Płytka powstała nie tylko w celach dydaktycznych - gdy już spełni tę rolę, otrzyma nowe zadanie. Zostanie wykorzystana do stworzenia radia Internetowego/odtwarzacza plików multimedialnych. Do niebieskiego złącza zostanie podłączony popularny dekoder MP3/DAC na układzie VS10xx. Tak samo jak w przypadku większości moich projektów, płytka jest dwustronna. Wykonałem ją za pomocą metody termotransferu i trawienia w B327. Cynowanie stopem Lichtenberga. Pojedyncze elementy musiały zostać wlutowane za pomocą hot aira - chodzi tutaj głównie o rezonatory kwarcowe SMD.
  12. Mikrokontrolery z rodziny PIC32 należą do moich ulubionych układów. Większość konstruktorów już jakiś czas temu zdążyła się przerzucić na ARM-y (zwłaszcza rodzinę STM32), ja jednak z jakiegoś powodu ciągle lubię korzystać z produktów firmy Microchip. Niestety, o ile tanie płytki z STM-ami można bez problemu kupić za grosze, o tyle sytuacja w przypadku PIC-ów wygląda gorzej. Czasem pojawiają się zestawy deweloperskie, jednak ich cena jest dość wysoka. Dlatego właśnie preferuję samodzielne wykonywanie takich "pomocy dydaktycznych". Jakiś czas temu prezentowałem na forum projekt mojej płytki prototypowej z układem PIC32MX270F256B. To całkiem fajny, mały mikrokontroler, w sam raz nadający się do pierwszych eksperymentów albo pierwszych projektów. Ma jednak pewną wadę - relatywne małą liczbę wyprowadzeń. Z tego powodu po podłączeniu paru peryferiów na płytce zostało mi tylko kilka wolnych pinów, które mogłem wyprowadzić na złączę. Znalazł się wśród nich interfejs I2C oraz jedno przerwanie zewnętrze, więc teoretycznie istniała możliwość rozbudowy, jednak było to pewnym ograniczeniem. Jakiś czas temu pomyślałem więc o skonstruowaniu nowszej płytki, wyposażonej w nieco bardziej zaawansowany układ. Na warsztat wziąłem PIC32MX44F512H. Posiada on znacznie więcej pinów i pieryferiów, a także dwa razy więcej pamięci flash. Dzięki temu na płytce bez większego problemu mogłem zamontować więcej "dodatków". Posiada ona interfejs Ethernet, zbudowany w oparciu o popularny układ ENC28J60. Na tej samej magistrali SPI znajduje się także 2MB pamięć flash (SST25) oraz złącze karty microSD. Dostępne jest także złącze USB, umożliwiające podpięcie pendrive'a. Płytka posiada także trzy diody LED, cztery przyciski oraz sygnalizator akustyczny. Na dwóch złączach udało mi się wyprowadzić łącznie 24 piny GPIO, mam więc swobodny dostęp do właściwie wszystkich funkcji MCU. Czerwona złącze widoczne na zdjęciach to interfejs programatora, na zielonym jest natomiast wyprowadzony UART. Dwustronna płytka została wykonana metodą termotransferu, na tzw. "kopertę". Po raz kolejny mogę więc stwierdzić, że kompletną bzdurą jest stwierdzenie, że metoda ta nie nadaje się do wykonywania bardziej skomplikowanych obwodów drukowanych, z dużą liczną cienkich ścieżek, biegnących z niewielkich odstępach od siebie. Na płytce znajduje się sporo miniaturowych elementów SMD, w rozmiarze 0402. Cynowanie wykonane za pomocą stopu Lichtenberga.
  13. Wydaje mi się, że nie możemy się do końca zrozumieć. To, że w przypadku WS2812 występują dodatkowe stany, służące do kontrolowania transmisji nie ma wielkiego znaczenia. Podstawowe znaczenie ma to, co mamy na wejściu. Zobacz inny przykład - antyczny format LaserDisk. Tam też informacja była kodowana za pomocą długości impulsu, odczytywanego z płyty za pomocą światła laserowego. tyle tylko, że była to informacja analogowa, kodowana poprzez PWM. Przynajmniej tak to wyglądało w przypadku kanału wideo, bo audio mogło być już kodowane w PCM, teraz już nie pamiętam i nie chce mi się sprawdzać. I oczywiście na upartego można by skwantyfikować poszczególne długości impulsów, ponadawać wartości liczbowe i twierdzić, że był to system cyfrowy. Tylko po co, skoro urządzenia działało na analogowej zasadzie? To jest właśnie problem technologii stojących na pograniczu.Mają cechy jednego i drugiego rozwiązania i przez to trudno je sklasyfikować. W przypadku alfabetu Morse'a jest to jednak moim zdaniem trochę zbyt daleko idąca analogia. On był tworzony jako alfabet. Jasne, reprezentacja jest jak najbardziej poprawna. Tyle tylko, że to jest już moim zdaniem retroaktywną "digitalizacją" systemu, który w swojej naturze był mocno analogowy, przywodził na myśl alfabet. Znaki systemu Hella też można przedstawić w formie map bitowych co nie oznacza, że urządzenie było cyfrowe. W przypadku systemu Baudota analogia jest o tyle zasadna, że tam nawet mieliśmy mechaniczne odpowiedniki współczesnych układów logicznych: multipleksery, konwertery równoległo-szeregowe czy rejestry.
  14. Eee.... Nie.... Znaków alfabetu Morse'a nijak nie da się przedstawić jako liczb zapisanych w kodzie binarnym. Nie w ten sposób, żeby ten zapis przekładał się na przebiegi elektryczne na linii. Poza tym w przypadku Morse'a linia może przybierać następujące stany: - Nic się nie dzieje - brak przepływu prądu - Kropka (krótki impuls) - Kreska (impuls trzy razy dłuższy od kropki) - Przerwa impulsami wchodzącymi w skład znaku - Dłuższa przerwa pomiędzy słowami - OIDP oryginalna wersja alfabetu Morse'a posługiwała się jeszcze specjalnym "długą kreską", używaną do zakodowania któregoś znaku. Oczywiście, że w tym wypadku to jest transmisja cyfrowa. Dlatego, że w tym wypadu długość impulsu koduje zera i jedynki podawane na wejściu. To jest rzecz wtórna, medium transmisyjne. W przypadku Morse'a struktura danych jest inna, to nie jest strumień danych cyfrowych, tylko specyficzny alfabet, który zamiast znaków kreślonych atramentem na papierze wykorzystuje sekwencje impulsów elektrycznych o różnej długości.
  15. Oczywiście. Tyle tylko, że telegraf Morse'a nie był transmisją binarną i trudno się w nim doszukiwać przodka współczesnej łączności cyfrowej. Widziałem już, że niektórzy autorzy próbowali to robić na siłę, ze względu na to, że linia może przyjmować dwa stany. Jednak jest to mocno naciąganą interpretacją, bo impulsy nie kodują sekwencji kodów dwójkowych. Informacja jest tak naprawdę zakodowana w długościach impulsów i przerw między nimi. Telegraf Baudot był pierwszym, który w pełni zasługiwał na miano "cyfrowego". Poza tym Morse też nie był pierwszy. On był pierwszym, któremu udało się odnieść sukces rynkowy i ustanowić globalny standard. Parę lat wcześniej Cooke i Wheatstone uruchomili w Wielkiej Brytanii swój własny system telegraficzny, który całkiem nieźle sprawdzał się na kolei. A rozmaite eksperymentalne konstrukcje powstawały nawet i na trzydzieści lat przed Morsem, nie nadawały się jednak do praktycznego zastosowania.
×
×
  • Utwórz nowe...