Skocz do zawartości

atlantis86

Użytkownicy
  • Zawartość

    79
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    8

atlantis86 wygrał w ostatnim dniu 10 maja

atlantis86 ma najbardziej lubianą zawartość!

Reputacja

148 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. Jakiś czas temu pisałem o moich eksperymentach z procesorami retro: wyprodukowanym w Polsce MCY7880 oraz kultowym 6502. Ostatnio wpadło mi do rąk kilka sztuk innego starego, ośmiobitowego mikroprocesora - MC6802. Jest to nieco udoskonalona wersja układu 6800 Motoroli. Od swojego poprzednika różni się ona właściwie tylko posiadaniem niewielkiej ilości (128 bajtów) wbudowanej pamięci RAM oraz oraz układem taktującym. Szczególnie ta druga cecha jest sporym udogodnieniem, bo oryginalny 6800 musiał współpracować z osobnym układem, generującym wielofazowy sygnał taktujący. Do 6802 wystarczy podłączyć zwykły rezonator albo oscylator kwarcowy. Procesory mogły skończyć jako kolejny element mojej "kolekcji" zabytkowych części elektronicznych, w pewnym momencie zaczął mi jednak chodzić po głowie pomysł zbudowania w oparciu o nie jakiegoś urządzenia i odpalenia fragmentu choćby najprostszego kodu. Niedługo potem zaczął powstawać prosty "zestaw deweloperski", mający służyć do zabawy z procesorami z lat osiemdziesiątych. Zaprojektowanie podstawowej płytki nie było na szczęście szczególnie trudnym zadaniem i nie musiałem robić tego od postaw - procesory Motoroli pracowały na podobnej Magistrali i posiadają podobny układ wyprowadzeń do układu MOS6502, który wykorzystałem w jednym ze swoich wcześniejszych projektów. Nie są one ze sobą kompatybilne, więc konieczne było wprowadzenie pewnych modyfikacji, szczególnie w układzie zegara i dekodera adresów. Na płytce poza procesorem znajduje się 64kB pamięci RAM, 16kB pamięci EPROM oraz prosty port wyjściowy, za pomocą którego można migać dwiema diodami LED. Sygnały magistrali systemowej, wolne wyjścia dekodera adresów oraz linie portu zostały wprowadzone na złącze IDC, do którego można podpiąć kolejne moduły, pełniące funkcję podobną do arduinowych shieldów. Na chwilę obecną zaprojektowałem jedną taką płytkę, która zawiera: Port szeregowy (MOS6551) Potrójny timer/licznik (MC6840) Zegar czasu rzeczywistego (M6242) Interfejs pecetowej klawiatury AT (8242) Port GPIO (8255) Chyba najtrudniejszym zadaniem nie było tak naprawdę zbudowanie części sprzętowej, ale zdobycie narzędzi pozwalających napisać soft na tę "platformę". Niestety, o ile mi wiadomo nie istnieje żaden kompilator języka C dla rodziny 6800 (w przypadku MOS6502 można korzystać z CC65). Byłem więc skazany na posługiwanie się asemblerem. Jednak i tutaj pojawiły się pewnej problemy - na Githubie znalazłem kod starego asemblera, który dawał się skompilować w gcc. Było to jednak wyjątkowo ograniczone narzędzie, które nie radziło sobie z bardziej złożonymi tabelami czy zbyt długimi komentarzami. Na szczęście trochę później wpadłem na fenomenalny SB-Aseembler i wszystko poszło z górki. Na chwilę obecną układ nie ma żadnych zastosowań praktycznych. Przeprowadziłem za jego pomocą trochę eksperymentów, pomigałem diodami i uruchomiłem wszystkie ze wspomnianych wcześniej peryferiów. Jeśli uda mi się namierzyć odpowiedni interpreter BASIC-a. być może uda mi się z tego zbudować ośmiobitowy komputer w stylu lat osiemdziesiątych. Konieczne będzie tylko dodanie sterownika ekranu i jakiejś pamięci masowej. Ponieważ płytkę podstawową złożyłem w trzech egzemplarzach nie wykluczam, że nadmiarowe w przyszłości wykorzystam do stworzenia jakiegoś urządzenia "embedded", np. robota albo stacji pogodowej.
  2. "Blink" jest chyba najpopularniejszym projektem odpalanym na wszelakich systemach wbudowanych. Kawałek kodu migającego jedną lub większą liczbą diod LED pozwala na szybkie przetestowania sprzętu i narzędzi służących do pracy z kodem. Większość płytek w stylu Arduino jest dostarczana z jakąś wersją "Blinka" w pamięci. Bawiąc się starymi systemami mikroprocesorowymi już parę razy testowałem projekty na wczesnym etapie rozwoju w bardzo podobny sposób - podpinając diodę do jakiegoś portu wyjściowego i uruchamiając kawałek kodu, który cyklicznie zapisuje odpowiednią wartość pod przypisany mu fragment pamięci. Tak właśnie wpadł mi do głowy pomysł na jeden z najbardziej bezsensownych "weekendowych" projektów, jakie do tej pory opracowałem. Mianowicie zacząłem się zastanawiać, czy nie dałbym rady przeportować "Blinka" na starego, dobrego Pegasusa. Przecież złącze kartridza tej konsoli ma wyprowadzoną kompletną magistralę systemową. Wystarczy tylko podpiąć do niej pamięć EPROM, port wyjściowy na układzie 74LS573 oraz prosty dekoder adresów, pozwalający na rozróżnienie jednego od drugiego. Projekt dwustronnej płytki powstał w jakieś dwie godziny. Następnego dnia ją wytrawiłem, wywierciłem otwory i zabrałem się za montaż. Lutowanie podstawek pod układy DIP nie należy do najprzyjemniejszych czynności na płytce bez metalizacji otworów. Normalnie pewnie zamówiłbym wykonanie paru takich PCB w chińskiej fabryce, jednakże z uwagi na pandemię i opóźnienia w wysyłce nie chciało mi się czekać. Początkowo użyłem zwykłych podstawek, ale te okazały się być wyjątkowo kłopotliwe w montażu - trudno było dotrzeć z grotem i cyną do wszystkich pól lutowniczych po stronie. Potem więc zmieniłem koncepcję i zastosowałem precyzyjne listwy pinowe. Kod odpowiedzialny za naprzemienne miganie diodami napisałem w asemblerze procesora 6502. Mając trochę więcej wolnego czasu dodam zapewne trochę więcej funkcji, m.in. możliwość "pauzowania" oraz zmiany częstotliwości migania z poziomu pada. Podejrzewam, że to nie będzie mój ostatni projekt w klimatach "pegasusowych", mam już w głowie kilka kolejnych pomysłów.
  3. Przed ponad rokiem opisywałem jeden ze swoich projektów, którego celem było stworzenie czegoś przypominającego Arduino za pomocą układów scalonych retro. Powstały wtedy dwie płytki - jedna główna, zawierająca większość logiki, druga będąca czymś w rodzaju shielda z wyświetlaczem hd44780 i kilkoma przyciskami. Układ w takiej formie był tylko ciekawostką, pozbawioną praktycznego zastosowania - jedyne co robił, to wyświetlał trochę tekstu i migał diodami. Jakiś czas temu powróciłem jednak do starego pomysłu i zacząłem projektować trzecią płytkę, która dodała bardziej konkretną funkcjonalność. Postanowiłem przenieść na tę niecodzienną platformę jeden z moich starych projektów, a mianowicie sieciowy licznik Geigera (i nie tylko) o nazwie EtherGeiger. Zrobienie licznika Giegera na współczesnym mikrokontrolerze nie jest taki trudne - wszystkie niezbędne podzespoły są już obecne w układzie. Wystarczy tylko dodać przetwornicę wytwarzającą wysokie napięcie dla rurki STS-5 oraz wzmacniacz operacyjny, kierujący odebrane impulsy na wejście licznika. W przypadku techniki retro nic nie jest takie proste. Procesor 6502 nie posiada żadnych zintegrowanych peryferiów - należy je dodać do projektu w formie osobnych układów scalonych, omijając przy tym paru pułapek. Najprościej było z interfejsem UART, który zrealizowałem na popularnym układzie MOS6551, używanym kiedyś powszechnie w komputerach ośmiobitowych. Port szeregowy obecnie wykorzystuję do debugowania, ale docelowo zostanie on wykorzystany do komunikacji poprzez magistralę RS485. Najważniejszy element - licznik - został zaimplementowany za pomocą układu Motorola MC6840. Pojedynczy scalak zawiera tak naprawdę trzy liczniki. Jeden z nich zlicza impulsy z licznika Geigera, drugi pełni funkcję podobną do arduinowej funkcji millis(), trzeci generuje przebiegi o częstotliwości akustycznej, które można wykorzystać do stworzenia prostej sygnalizacji dźwiękowej. W układzie umieszczony został również zegar czasu rzeczywistego z podtrzymywaniem bateryjnym, zrealizowany na układzie M6242, wykorzystywanym kiedyś w kartach rozszerzeń do Amigi. Ostatnim układem jest równoległy port wejścia/wyjścia 8255. Część jego pinów wyprowadziłem na złącze DIN, dzięki czemu w przyszłości będę mógł wygodnie podpiąć inne czujniki, np. temperatury. Pozostałe są dostępne przez dwurzędowe złącze goldpin na płytce. Dodatkowo układ został wyposażony w złącze karty CF. Jest to trochę eksperymentalna funkcja - jeśli wystarczy mi zasobów, spróbuję skompilować bibliotekę FatFS i dopisać kod logujący odczyty w pliku. Jeśli nie. będę musiał popracować nad bardziej oszczędnym systemem plików. Kod został napisany w C i skompilowany za pomocą CC65. Czy urządzenie tego rodzaju tworzy się prościej, niż za pomocą współczesnych platform? Zdecydowanie nie. Takie podejście ma co prawda swoje zalety - fajna jest np. możliwość podpięcia urządzeń do magistrali systemowej i odwoływanie się do nich przez adres w pamięci. Niemniej jest tutaj też całe mnóstwo pułapek, bo np. jakiś układ życzy sobie, aby pewne adresy odczytywać w określonej sekwencji, czego kompilator nie jest świadom i potem trzeba potem poprawiać po nim kod asemblerowy. Muszę jednak przyznać, że tworzenie takich konstrukcji jest całkiem niezłą frajdą, można się też dzięki temu dowiedzieć jak układy mikroprocesorowe działają na nieco niższym poziomie, np. co tak naprawdę dzieje się w momencie uruchomienia programu albo wywołania przerwania. Na poniższych zdjęciach jest widoczny cały układ, w tym także obok współczesnego "brata", zrealizowanego na mikrokontrolerze PIC32.
  4. 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.
  5. 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.
  6. 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.
  7. 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ę.
  8. 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.
  9. 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ć.
  10. 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.
  11. 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.
  12. 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.
  13. 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).
  14. 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.
  15. 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.
×
×
  • Utwórz nowe...