MSP430G2553 na płytce stykowej

MSP430 Launchpad ma dwie części: uruchamiany układ i interfejs uruchomienowy. Tu chcemy pokazać że można zrobić własny układ i użyć interfejs uruchomienowy z MSP430 Launchpad do zaprogramowania procesora. Po zaprogramowaniu MSP430 Launchpad można odłączyć i niezależnie używać zaprogramowany układ.

Minimalne potrzebne elementy to procesor, kondensator filtrujący zasilanie (68nF albo większy), opornik (47kOhm) i kondensator (560pF do 1nF) w układzie resetu. Aby móc testować zachowanie procesora dodamy jeszcze czerwoną diodę świecącą i opornik 470Ohm. W porównaniu z uruchamianą częścią MSP430 Launchpad brakuje przycisków i zielonej diody świecącej.

Procesor MSP430G2553 ma 20 wyprowadzeń, numeracja jest w opisie wyprowadzeń MSP430 Launchpad. Na płytce stykowej po osadzeniu procesora musimy dodać kondensator 68nF między nóżkami 1 i 20. Nóżkę 1 łączymy z szyną zasilania płytki stykowej, nóżkę 20 łączymy z szyną masy. Opornik 47kOhm łączymy między nóżkę 16 a zasilanie. Kondesator (560pF do 1nF) łączymy między nóżkę 16 a masę. Opornik 470Ohm prowadzimy od nóżki 2 do wolnego paska płytki stykowej. Pomiędzy tym paskiem a masą włączamy diodę świecącą.

W MSP430 Launchpad musimy rozłączyć zworki między interfejsem uruchomieniowym a częścią z uruchamianym procesorem. Następnie łączymy masę (GND) MSP430 Launchpad z masą płytki stykowej, zasilanie (Vcc) z zasilaniem płytki stykowej, sygnał TEST z nóżką 17 procesora na płytce stykowej, sygnał RST z nóżką 16. Uwaga: sygnały Vcc, TEST i RST łączymy po stronie interfejsu uruchomieniowego.

Teraz możemy podłaczyć MSP430 Launchpad do komputera i np. w środowisku Energia załadować wybrany program.

Teoretycznie tak jak w Arduino można by do procesora załadować tzw. bootloader, tzn. program który po rescie nasłuchuje na porcie szeregowym na program do załadowania (jeśli po ustalonym czasie nie na transmisji bootloader przekazuje sterowanie do starego programu). Procesor MSP430G2553 ma też bootloader zapisany w pamięci ROM, można by próbować go użyć. Wtedy do zaprogramowania procesora wystarczyłby interfejs szeregowy.

Arduino na płytce stykowej

Płytka Arduino ma dwie części. Jedna to to układ uruchamiany, czyli procesor ATMega328P wraz z elementami potrzebnymi do jego pracy: kondensatorem filtrującym zasilanie, opornikiem w układzie resetu, rezonatorem kwarcowym wraz z kondensatorami i diodą świecącą wraz z opornikiem ograniczającym prąd. Druga część to interfejs z USB do portu szeregowego, w Arduino Uno realizowany przez procesor ATMega16U2 (ma on wbudowany interfejs USB). Dodatkowo jest układ zasilania.

Procesor ATMega328P możemy zamontować na płytce stykowej i uzyskać układ zgodny z Arduino Uno. Do programowania potrzebny jest jeszcze interfejs z USB do portu szeregowgo, w tym celu użyjemy odzielny moduł. Ten moduł daje też zasilanie dla płytki stykowej. Układ jest wzorowany na Shrimp, tyle że stosujemy znacznie większy opornik przy diodzie świecącej, nie wkładamy złącza do płytki i używamy nieco inny układ elementów.

Po połączeniu płytki stykowej z modułem interfejsu USB płytka jest zasilana z modułu i możemy ją programować. Fabryczne procesory ATMega328P nie zawierają bootladera, tzn. programu który po resecia procesora sprawdza czy chcemy do procesora podładować nowy program. Bootloader jest niezbędny dla środowiska Arduino. Fabryczny procesor możemy zaprogramować poprzez interfejs SPI używając do tego drugie Arduino z odpowiednim programem. Podczas programowania przez SPI łączymy nóżki MISO, MOSI i SCK układu programującego i programowanego (tzn. łączymy odpowiadające sobie nóżki). Linie SS układu programującego łączymy z resetem układu programowanego. Do programowania można użyć przykładowy program ArduinoISP, ale lepszy wydaje się Atmega_Board_Programmer. Po wpisaniu bootloadera nasz układ możemy już używać tak ja zwykłe Arduino. Uwaga: Przy wpisywaniu bootloadera nóżkę 10 programującego Arduiono łączymy bezpośrednio z nóżką resetu programowanego układu. Podczas normalnego programowania końcówkę DTR interfejsu szeregowego łączymy przez kondensator 0.1uF z nóżką resetu.