Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Multimetr FlukeMultimetr Fluke
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 11169 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.


    Link


    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
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Kubald
    Level 15  
    Offline 
    Has specialization in: spektroskopia exafs/xanes, uc, it
    Kubald wrote 188 posts with rating 83, helped 0 times. Live in city Kraków. Been with us since 2004 year.
  • Multimetr FlukeMultimetr Fluke
  • #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?
  • Multimetr FlukeMultimetr Fluke
  • #3
    Urgon
    Level 37  
    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.