Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

MaxiMite - minikomputer na mikroprocesorze PIC32

Kubald 25 Nov 2012 20:54 11526 8
  • MaxiMite - minikomputer na mikroprocesorze PIC32

    Zgodnie z tym, co autor projektu – Geoff Graham – umieścił na swojej stronie, jego mini-komputer MaxiMite może być wykorzystany jako:

    MaxiMite - minikomputer na mikroprocesorze PIC32

    Minikomputer
    Wtedy o MaxiMite należy myśleć jak o współczesnej wersji komputerów Tandy TRS-80, Commodore 64 czy jakiegokolwiek innego modelu popularnego kilkanaście lat temu. Do MaxiMite można podłączyć kolorowy monitor VGA, standardową klawiaturę IBM PC i działać! Minikomputer zawiera wbudowany, własny interpreter BASICa i nie potrzebuje żadnego systemu operacyjnego, więc po uruchomieniu można w mgnieniu oka korzystać z właśnie napisanego programu. MaxiMite wyposażony jest też w gniazdo kart SD, na których można zapisywać programy i dane do późniejszego użytku. Z kolei interpreter BASICa jest oparty o rozwiązania Microsoftu, więc jest kompatybilny z większością programów dostępnych w Internecie. A dla początkujących w dziedzinie programowania – łatwa składnia języka BASIC pozwala na proste rozpoczęcie przygody z tworzeniem własnych programów. Interpreter MaxiMite został stworzony w taki sposób, aby stanowił przyjazne środowisko do nauki programowania, a przy tym nie tracił na wydajności i funkcjonalności, aby łatwo – po poznaniu początków programowania – uczynić krok do przodu, w stronę bardziej zaawansowanych rozwiązań.

    Sterownik
    MaxiMite został wyposażony w 20 wejść/wyjść bezpośrednio na płycie głównej i dodatkowe 20, obecne po połączeniu łącznika kompatybilnego z Arduino. Piny I/O minikomputera mogą posłużyć do pomiaru napięcia, określania częstości czy kontroli przycisków, a także mogą sterować zewnętrznymi urządzeniami – zapalaniem świateł, włączaniem przekaźników, pomp itp. A to wszystko kontrolowane z poziomu języka BASIC. Dlatego też MaxiMite może stać się wielokanałowym woltomierzem do pomiaru temperatury, ciśnienia, przyspieszenia czy innych parametrów z wykorzystaniem czujników z analogowym wyjściem. Dzięki temu MaxiMite może zostać przystosowany do pracy jako sterownik procesu przemysłowego, inteligentny alarm przeciwwłamaniowy czy rejestrator temperatury. W dodatku, minikomputer może zostać zaprogramowany do automatycznego wczytywania programu po włączeniu, nawet w przypadku nieobecności klawiatury i monitora – dlatego sprawdzi się jako wydajny sterownik w rozwiązaniach wbudowanych; także wiele tanich, 5- bądź 7-calowych wyświetlaczy VGA dostępnych na serwisach aukcyjnych sprawdzi się jako monitory do MaxiMite. Minikomputer wspiera także szereg protokołów komunikacyjnych (szeregowy, I²C, SPI oraz 1-wire) – czyli tych najpopularniejszych do komunikacji między układami scalonymi. Dzięki temu MaxiMite może stać się – z wykorzystaniem garści elementów zewnętrznych – choćby interfejsem dla rozmaitych urządzeń pomiarowych. A jako że minikomputer jest tani, może także służyć do bardziej prozaicznych rozwiązań – działać jako inteligentny sterownik ładowania czy monitor temperatury w domu. Jest także na tyle wydajny, aby w pełni sterować parametrami w szklarni czy zbierać dane z auta wyścigowego.

    Komputer do gier
    MaxiMite będzie także cieszył się zainteresowaniem użytkowników lubiących tworzyć i grać w gry. Współpraca z kolorowym monitorem jest w tym przypadku bardzo użyteczna, a MaxiMite wyposażono w specjalny, szybki tryb pracy w celu grania. Dodatkowo interpreter minikomputera MMBasic posiada specjalne komendy służące do poruszania obrazami na ekranie, co jest niezbędne w przypadku tworzenia gier. Na poniższym filmie można zobaczyć niewielką grę napisaną i uruchomioną na MaxiMite.





    MaxiMite - minikomputer na mikroprocesorze PIC32

    Główne cechy MaxiMite to:
    • Szybki, 32-bitowy procesor ze 128kB pamięci RAM
    • Wbudowany wydajny interpreter języka BASIC, w pełni wspierający zmienne zmiennoprzecinkowe i tekstowe, długie nazwy zmiennych, tablice wartości zmiennoprzecinkowych lub zmiennych o różnych długościach czy obsługę wejść/wyjść. Bez problemu obsłuży on ponad 1000 linii kodu i jest zdolny do wykonywania ponad 30 000 linijek kodu na sekundę.
    • Wyjście wideo obsługujące 8 kolorów, w standardzie VGA. Maksymalna rozdzielczość to 480x432 px. Tablica znaków zawiera pełen zestaw wielkich i małych znaków zgodny z ASCII. Na monitorze może być wyświetlane 80 znaków w linii w 33 liniach.
    • Tryb przyspieszony do gier, obsługujący rozdzielczość 240x213 px i specjalne komendy języka BASIC.
    • Współpraca z typową klawiaturą PS/2, ze wsparciem klawiatury numerycznej i przycisku CapsLock.
    • Wyjście audio stereo, służące do odtwarzania muzyki w formacie MOD za pomocą wbudowanego syntezatora lub do generowania sygnałów sinusoidalnych o częstości od 1 Hz do 20 kHz.
    • Port USB do łączenia z komputerem PC. MaxiMite wykrywany jest jako wirtualny port COM i emuluje klawiaturę. Także przez USB mogą być wysyłane do komputera PC/odczytywane z niego programy minikomputera.
    • Wsparcie dla kart SD/MMC/SDHC z systemem plików FAT16/FAT32 i o pojemności do 32GB.
    • „Napęd” wbudowany – z wykorzystaniem pamięci flash mikrokontrolera, do zapisu danych poza kartą SD. Oferuje 180KB pamięci.
    • 20 pinów I/O na płycie komputera i dodatkowe 20 pinów I/O po przyłączeniu łącznika kompatybilnego z Arduino.
    • Wsparcie dla protokołów komunikacyjnych: I²C, szeregowy (RS-232), SPI oraz 1-wire.
    • Dwa kanały PWM.
    • Możliwość upgrade’u z poziomu dowolnego komputera PC z portem USB.
    • Możliwość zasilania napięciami z zakresu 7-16 VDC.


    Budowa minikomputera

    MaxiMite - minikomputer na mikroprocesorze PIC32

    MaxiMite powstał w oparciu o jeden procesor (PIC32 od Microchipa), który obsługuje wszystkie peryferia oraz interpreter BASIC. Dodatkowymi układami na płytce komputera są jedynie stabilizatory napięcia oraz zegar z podtrzymaniem bateryjnym. Schemat minikomputera można zobaczyć poniżej.

    W minikomputerze pracuje 32-bitowy procesor PIC o 100 wyprowadzeniach, w obudowie 14x14 mm TQFP. Można użyć dwu typu procesorów: PIC32MX695F512L-80I/PF bądź PIC32MX795F512L-80I/PF. Drugi z układów jest dodatkowo wyposażony w interfejs CAN, który i tak nie znajduje zastosowania w MaxiMite. Obydwa procesory są taktowane zegarem 80MHz, mają 512 kB pamięci flash i 128 kB RAM-u.

    W prawym, górnym rogu schematu widać obwody sterownika VGA. Dla każdego koloru obwód składa się z rezystora i diody, które dopasowują napięcie wyjściowe do poziomu 0,7V i pozwalają dostosować wyjście do impedancji monitora. Dodatkowo, wyprowadzenie 9 służy do wykrywania przejściówki RCA. Sygnał wideo generowany jest przez obwody procesora PIC32 sterowane poprzez interfejs SPI. Procesor wystawia na wyjścia kolejne ramki danych odczytywane z pamięci DMA. Proces ten odbywa się niejako niezależnie od procesora – zadaniem CPU jest zapisanie jedynie danych dotyczących obrazu do pamięci. Technika ta została szerzej opisana w niniejszej książce. Dodatkowo, minikomputer może zostać wyposażony w przejściówkę RCA, jak na schemacie poniżej.

    MaxiMite - minikomputer na mikroprocesorze PIC32

    Z kolei poniższy schemat pokazuje obwód pojedynczego wejścia/wyjścia minikomputera wraz z zabezpieczeniami. Piny I/O podciągnięte są do masy za pomocą rezystora 100 kΩ i wyposażone w szeregowo włączony opór 4,7 kΩ zabezpieczający przed przepływem zbyt dużego prądu.

    MaxiMite - minikomputer na mikroprocesorze PIC32

    Wyjście audio obsługiwane jest programowo przez specjalnie napisany syntezator, a od strony sprzętowej jest to wyjście sygnału PWM z nośną o częstości ok. 100 kHz. Rezystor 1 kΩ i kondensator 47 nF tworzą filtr dolnoprzepustowy usuwający nośną. Wyjście audio może być dostosowane do współpracy ze wzmacniaczem głośnikowym lub z słuchawkami – szczegóły zostały przedstawione na stronie projektu. Dodatkowo, aby wykorzystywać wyjście audio do generowania sygnałów PWM należy zmodyfikować obwód filtru dolnoprzepustowego – odpowiednie wartości elementów dla takiego rozwiązania to 4,7 kΩ oraz 33 nF.

    Zegar został zbudowany w oparciu o układ DS1307 i wyposażony w podtrzymanie bateryjne. W przypadku rezygnacji z zegara czasu rzeczywistego, układ będzie wykorzystywał zegar wbudowany w procesor – zerowany przy każdym jego uruchomieniu.

    Dodatkowymi obwodami są: przycisk służący do wgrywania firmware’u (wtedy MaxiMite rozpoznawany jest przez komputer PC jako urządzenie HID), oscylator kwarcowy (częstotliwość mnożona jest w obwodach procesora do wartości 80 MHz), interfejs USB (połączony bezpośrednio z procesorem, pin 54 służy do wykrywania podłączonego komputera) oraz obwody dla trybu przyspieszonego (uaktywniające stabilizator 1,8V zasilający rdzeń procesora).

    Konstrukcja

    MaxiMite - minikomputer na mikroprocesorze PIC32
    MaxiMite - minikomputer na mikroprocesorze PIC32

    Minikomputer dostępny jest w postaci kitu, ale wszelkie materiały – wzory płytek, spis elementów, oprogramowanie – może zostać ściągnięte ze strony projektu. Wszelkie elementy są łatwo dostępne. Płytka jest dwustronna, a montaż całości nie powinien zająć więcej niż 1-2 godziny; wymaga on umiejętności montażu elementów SMD. Wszelkie pozostałe szczegóły – dotyczące wgrywania firmware’u czy modyfikacji minikomputera – można znaleźć na stronie projektu.

    Źródło (oraz kolejne podstrony).

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    Kubald
    Level 15  
    Offline 
    Has specialization in: spektroskopia exafs/xanes, uc, it
    Kubald wrote 188 posts with rating 105. Live in city Kraków. Been with us since 2004 year.
  • #2
    androot
    VIP Meritorious for electroda.pl
    Commodore 64 był taktowany 1MHz i miał podobne parametry... Nie wspomnę o Amidze, która miała taktowanie 7 lub 14MHz w zależności od modelu i kilkakrotnie większe możliwości.
    Czy z 32bit, taktowanego 80MHz procesora nie da wykrzesać się nic więcej?
  • #3
    Urgon
    Level 38  
    AVE...

    C64 i Amiga miały specjalizowane układy IO poza samym procesorem, i zewnętrzny RAM. Gdyby twórcom tego projektu tak się chciało jak im się nie chciało, to mogliby dorzucić obsługę zewnętrznego RAMu, więcej pinów IO i porządne źródło dźwięku w formie albo jakiegoś SIDa albo układu syntezy FM ze starej karty dźwiękowej, albo nawet w wersji "burżujskiej" jakiegoś małego FPGA realizującego funkcje dźwiękowe...
  • #4
    lechoo
    Level 39  
    Witam, zamiast tworzyć takie zamknięte projekty - czy nie lepiej zbudować sprzętowy emulator któregoś z popularnych dawniej mikrokomputerów 8-bitowych?
  • #5
    piotr_go
    DIY electronics designer
    Też coś podobnego skleciłem, tyle że na Cortexie M4.

    Złącze VGA(8bit kolor), stereo DAC, PS2 do klawiatury, uSD, 2*JOY., USB, port szeregowy.
    MaxiMite - minikomputer na mikroprocesorze PIC32

    MaxiMite - minikomputer na mikroprocesorze PIC32
    Kod gry własny, obrazki z oryginału.

    Załączony filmik z dźwiękiem, trzeba tylko pogłosić.
  • #9
    hansee
    Level 1  
    Powyższy artykul o MaxiMicie pomija jeden bardzo ważny aspekt tego projektu. Ideą było stworzenie prostego kontrolera, który można zaprogramować w BASICu z bardzo elastycznymi portami umożliwiajacymi podłączenie, praktycznie wszystkiego. Bajery w formie koloru i pełnej konsoli pojawily sie później. A to dzięki niesamowitym możliwosciom scalaka będcego sercem projektu. Jeżeli ktoś jest zainteresowany tym projektem, to podstawową wersję można złożyć za 10-15 baksów. Wsad do procka jest dostępny za darmo na źródowej stronie. Potrzebne będą umiejętności lutowania powierzchniowych podzespołów.