Zegar dla szachistów Nowoczesna platforma dla STM32

Podobne dokumenty
STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

ZL1MSP430 Zestaw startowy dla mikrokontrolerów MSP430F11xx/11xxA ZL1MSP430

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

ZL5ARM. Zestaw uruchomieniowy dla mikrokontrolerów LPC2119/2129 (rdzeń ARM7TMDI-S) Kompatybilność z zestawem MCB2100 firmy Keil

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

dokument DOK wersja 1.0

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

ZL8AVR. Płyta bazowa dla modułów dipavr

Płytka uruchomieniowa XM64

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

MOD STM32 explorem0 z STM32F051C8T6. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

ZL5PIC. Zestaw uruchomieniowy dla mikrokontrolerów PIC16F887

Zestaw Startowy EvB. Więcej informacji na stronie:

STM32 dla początkujących (i nie tylko)

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

MODUŁ UNIWERSALNY UNIV 3

SML3 październik

ARMputer, część 1 AVT 922

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

KAmduino UNO. Rev Źródło:

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

Jednym z najlepszych sposobów poznawania nowego typu mikrokontrolera

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

Programator-debugger JTAG/SWIM dla mikrokontrolerów STM32 i STM8

ARS3 RZC. z torem radiowym z układem CC1101, zegarem RTC, kartą Micro SD dostosowany do mikro kodu ARS3 Rxx. dokument DOK wersja 1.

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Płytka uruchomieniowa XM32

ZL10PLD. Moduł dippld z układem XC3S200

ZL3ST7. Zestaw uruchomieniowy dla mikrokontrolerów

DOKUMENTACJA PROJEKTU

ZL11ARM. Uniwersalna płytka bazowa dla modułów diparm

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

MultiTool instrukcja użytkownika 2010 SFAR

Moduł uruchomieniowy AVR ATMEGA-16 wersja 2

BF30 OCDLINK/USBASP ARM-JTAG/AVR-ISP Programmer-debugger Instrukcja obsługi

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach.

BF20 JTAG dla ARM ów z interfejsem USB Instrukcja obsługi

FREEboard. Zestaw startowy z mikrokontrolerem z rodziny Freescale KINETIS L (Cortex-M0+) i sensorami MEMS 7 DoF

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Kurs programowania mikrokontrolerów ARM z rodziny Cortex-M3

Szkolenia specjalistyczne

ZL11AVR. Zestaw uruchomieniowy z mikrokontrolerem ATtiny2313

2. Architektura mikrokontrolerów PIC16F8x... 13

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

Kod produktu: MP-1W-2480

Kod produktu: MP01611

E-TRONIX Sterownik Uniwersalny SU 1.2

Instrukcja programowania płytek edycji 2014

Programator procesorow AVR do kompilatora BASCOM AVR (zgodny z STK200)

Płytka ewaluacyjna z ATmega16/ATmega32 ARE0021/ARE0024

ZL6PLD zestaw uruchomieniowy dla układów FPGA z rodziny Spartan 3 firmy Xilinx

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

Technika mikroprocesorowa. Konsola do gier

Rys. 1. Schemat ideowy karty przekaźników. AVT 5250 Karta przekaźników z interfejsem Ethernet

Zestaw edukacyjny dla mikrokontrolerów ST62

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT

Moduł wykonawczy z interfejsem Ethernet Sterowanie 8 przekaźnikami i pomiar napięć przez sieć LAN lub WAN

KA-NUCLEO-F411CE. Płytka rozwojowa z mikrokontrolerem STM32F411CE

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Moduł prototypowy.. Leon Instruments. wersja 1.0

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

1.2. Architektura rdzenia ARM Cortex-M3...16

Kod produktu: MP01611-ZK

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

AsLinkEx instrukcja obsługi

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Uniwersalny zestaw uruchomieniowy ZL4PIC

Podobny zestaw ewaluacyjny dla mikrokontrolerów

Politechnika Białostocka

TECHNIKA MIKROPROCESOROWA II

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

SYSTEMY CZASU RZECZYWISTEGO (SCR)

Wstęp Architektura... 13

Murasaki Zou むらさきぞう v1.1 Opis programowania modułu LPC2368/LPC1768 z wykorzystaniem ISP

Programator mikrokontrolerów PIC współpracujący z programem MPLAB AVT 5100

Zgrana para - NerO i CleO

Transkrypt:

Zegar dla szachistów Nowoczesna platforma dla STM32 Dodatkowe materiały na CD W listach do redakcji EP Czytelnicy domagają się zamieszczania większej ilości artykułów, które pomogłyby im się rozwijać. Publikując ten projekt postaraliśmy się wyjść naprzeciw tym oczekiwaniom. Nowoczesny mikrokontroler STM32, jego otoczenie oraz duży, czytelny wyświetlacz graficzny tworzą urządzenie, na bazie którego można wykonać wiele różnych projektów. Można powiedzieć, że implementacja zegara szachowego na bazie niniejszego projektu, to tylko przykład zastosowania, ponieważ możliwości mikrokontrolera znacznie przekraczają wymagania takiej aplikacji. Rekomendacje: osoby zainteresowane budową niedrogiej, uniwersalnej platformy sprzętowej dla STM32. AVT 5199 PODSTAWOWE PARAMETRY W ofercie AVT: AVT 5199A płytka drukowana Doskonały układ bazowy do projektów z STM32 Płytka dwustronna o wymiarach 172 115 mm Mikrokontroler STM32F103R z zegarem 72 MHz Zasilanie 9...12 VDC Wyświetlacz grafi czny 240 128 pikseli Złącze RS232, wbudowany buzzer, złącze JTAG Interfejsy dostępne na złączu szpilkowym (w tym USB, drugi RS232, interfejs kart SD i microsd, SPI) PROJEKTY POKREWNE wymienione artykuły są w całości dostępne na CD Tytuł artykułu Nr EP/EdW Kit Zegar szachowy EP 2/2005 AVT-378 Cortex-M3 znaczy nowoczesne Procesory z rodziny STM32 cieszą się coraz większą popularnością. Nic w tym dziwnego, skoro wewnątrz procesora jest bardzo dużo nowoczesnych i dojrzałych rozwiązań. Moim zdaniem jednym z najważniejszych jest bez wątpienia możliwość sprzętowego zagnieżdżania przerwań o różnych priorytetach. Można powiedzieć, że opracowanie NVIC (Nested Vector Interrupt Controller) przez inżynierów z firmy ARM jest naprawdę przełomem w porównaniu do np. starej już architektury ARM9. System przerwań w tym procesorze działa bardzo sprawnie i bez wątpienia to główna jego zaleta. Jeśli chodzi o peryferia, to 5 portów UART, CAN, USB oraz szereg timerów to już chyba standard. W projekcie nie będziemy zagłębiać się w nic skomplikowanego. Cały projekt bazuje na obsłudze portów procesora, pętli głównej oraz jednego przerwania wywoływanego co 1 ms, a służącego do odmierzania czasów w programie. Wszyscy projektanci z pewnością zauważą, że poznanie takiej konfiguracji procesora to swoisty Hello word w świecie programowania systemów wbudowanych. Napisany i skompilowany program to dopie- 36 ELEKTRONIKA PRAKTYCZNA 9/2009

Zegar dla szachistów rys. 1. Schemat ideowy zegara ELEKTRONIKA PRAKTYCZNA 9/2009 37

Na CD karty katalogowe i noty aplikacyjne elementów oznaczonych na Wykazie Elementów kolorem czerwonym WykAZ elementów rezystory R3, R27: O V R6: 100 kv R1, R7, R9, R10, R30...R40: 10 kv R2: 1 kv R8: 1 MV R5, R41: 22 kv R28: 50 V POT2: 10 kv (potencjometr montażowy) kondensatory C1...C24, C30...C39: 100 nf (MKSE) C27, C28: 10 nf (MKSE) C16, C17, C21, C33: 10 pf C26: 10 mf/25 V C22, C29: 1 mf/25 V C10, C12: 220 mf/25 V C9, C15: 47 mf Półprzewodniki U1: STM32D103R (TQFP64) U4: LD33CV U7: 7805 U19: ST3232 T1: BC337 Inne X1: rezonator 8 MHz X2: rezonator 32768 Hz BT1: podstawka baterii CR2032 G5: gniazdo zasilania JTAG: wtyk IDC20 do druku J20: złącze do druku DSUB9/F BUZ1: buzzer 5 V RESET: przycisk do druku Listwy goldpin ro połowa sukcesu trzeba jeszcze zaprogramować procesor. Wgrywanie oprogramowania (ISP In system Programming) Mogę zaryzykować twierdzenie, że sposobów zapisu programu wewnątrz mikrokontrolera jest tak wiele, że praktycznie programista ograniczony jest tylko własną wyobraźnią. Każdy może napisać własny program, który wgra właściwy program aplikacyjny używając do tego celu dowolnego interfejsu procesora. No tak, ale pojawia się pytanie: jak wgrać pierwotny program czyli tzw. bootloader? Dotychczas jedyną możliwością było zastosowanie interfejsu JTAG. Firma STM poszła o krok dalej i dała możliwość wgrania bootloadera również za pomocą interfejsu UART. Jest to bardzo wygodne w przypadkach, w których budowane jest urządzenie, dla którego krytyczna jest ilość wyprowadzeń i nie można poświęcić kilku pinów procesora do podłączenia JTAG. Gdy stosowany jest UART, to do wgrania wystarczą dwie nóżki procesora, które podczas normalnego użytkowania urządzenia mogą pełnić rolę interfejsu RS232. Ta metoda ma jednak pewne ograniczenie. Bootloader może być wgrywany tylko za pomocą USART1 (doprowadzenia PA8 i PA9). Zostało to ustalone przez producenta i zapisane w firmware procesora. Dlatego też nie można go uszkodzić ani wykasować i jest on równie niezawodny, co złącze JTAG. Żeby procesor uruchomił bootloader należy na do- prowadzenie BOOT0 podać napięcie 3,3 V, a BOOT1 zewrzeć do masy. W takiej konfiguracji, po zresetowaniu procesor skoczy do adresu, pod którym umieszczony jest bootloder. Aby wgrać program pierwotny należy zewrzeć zworę JP6 podłączoną do BOOT0 procesora. Następnie przylutować krótki odcinek przewodu z jednej strony do masy, a z drugiej do nóżki 22 złącza wyświetlacza (jest ono podłączone do BOOT1). Po tym można włączyć zasilanie mikrokontrolera. Powinien uruchomić się wewnętrzny bootlader. Następnie łączymy płytkę z interfejsem RS232 komputera PC i uruchamiamy program o nazwie FLASH LOADER. Można go pobrać ze strony firmy ST lub skopiować z płyty CD_EP09/2009B. Kolejną, nieco bardziej złożoną metodą jest wgranie programu pierwotnego za pomocą JTAG. Na płytce PCB przewidziano miejsce na wtyk IDC20 służący do podłączenia JTAG-a. Zajmuje ono aż 5 doprowadzeń procesora. Wybór programatora z interfejsem JTAG pozostawiono użytkownikowi, ponieważ prawie każde środowisko programistyczne wspiera jakiś własny programator i często oferowane jest wraz z nim. Zastosowanie takiego kompletu jest zwykle bardzo wygodne, ponieważ możliwe staje się nie tylko wgrywanie programów, ale również debugowanie programu. Można również rozważyć zastosowanie złącza SWD (Serial Wire Debug). Jest to nowoczesny sposób na debugowanie procesora, wymagający minimalnej liczby połązeń. Do pracy potrzebuje tylko dwóch sygnałów zegara oraz dwukierunkowego złącza danych. Niestety, to rozwiązanie dostępne jest na razie tylko z płatnymi środowiskami, takimi jak R-Link sprzedawany przez Raisonance oraz J-LINK sprzedawany przez IAR Systems. Najprostszy, niemalże darmowy Wiggler nie ma możliwości dwuprzewodowej komunikacji z rdzeniem Cortex-M3. Jeśli już zdecydowaliśmy się na sposób wgrania programu, to nadszedł czas wyboru odpowiedniego programu pierwotnego lub całkowitej rezygnacji z IAP na rzecz pracy z zastosowaniem programatora JTAG. Wgrywanie oprogramowania (IAP In Application Programming) Oprogramowanie może wgrywać i uruchamiać inne oprogramowanie... Skądś to znamy, nieprawdaż? Brzmi to jak zapowiedź pisanie wirusa. Ta możliwość jest bez wątpienia bardzo ciekawa, ale warto się zastanowić nad ograniczeniami. Zaczniemy od organizacji pamięci w procesorze STM32. STM32 ma architekturę 32-bitową. Wielkość przestrzeni adresowej to 4 GB. To naprawdę dużo zważywszy, że cała pamięć RAM i FLASH to niewiele ponad 0,5 MB. Procesor STM32 po włączeniu zasalania wykonuje instrukcje spod adresu 0x8000000. Ten unikalny adres to początek pamięci FLASH. Pod tym adresem powinien być zapisany program, bo od tego miejsca rozpocznie się jego wykonanie. Jeśli w programie procesor napotka instrukcję skoku, to skacze do podanego adresu i zaczyna wykonywać kolejne instrukcje. Wszyscy zapewne znamy tą elementarną zasadę działania procesora. Pozwoliłem sobie ją przypomnieć, ponieważ jest ona potrzebna do zrozumienia jak działa IAP. Pamięć flash w procesorze STM32 zorganizowana jest w postaci strony o wielkości 1 kb lub 2 kb, zależnie od wersji. Procesor pozwala na swobodną jej obsługę. Można skasować całą stronę, a następnie zaprogramować ją. Po zakończeniu zapisu pamięci należy wykonać rozkaz skoku do obszaru wgrywanego i procesor zaczyna wykonywać wgrany kod programu. Tak naprawdę to powinno wystarczyć do zrozumienia zasady działania bootloadera. Trzeba tylko uważać aby nie uszkodzić własnej aplikacji. Firma STM udostępnia bootloader, który wgrywa program za pomocą interfejsu USART1. Program jest bardzo dobrze udokumentowany i ma kompletne źródła. Bazując na przykładzie można program rozbudować lub napisać własny. Kolejnym krokiem jest wybór odpowiedniego środowiska programistycznego. Środowisko programistyczne (IDE Integrated Development Environment) W poprzednim rozdziale opisaliśmy wszystkie możliwości wgrania kodu wynikowego. Teraz czas na stworzenie programu. Do tego celu potrzebujemy kompilator, edytor tekstu oraz sterowniki do obsługi programatora. Wszystkie te elementy (kompilator, edytor tekstu oraz obsługa programatora), dostarczone są jako środowisko programistyczne. Przystosowanie każdego środowiska pod nową platformę sprzętową jest zadaniem trudnym i nie warto tego robić samemu. W tym miejscu przydaje się wsparcie producenta danego pakietu. Moim zdaniem do najlepszych IDE przeznaczonych dla STM32 należą pakiety programów następujący producentów: RIDE7 firmy Risonance. RVMDK firmy Keil. EWARM firmy IAR Systems. HITOP firmy Hitex. Wszystkie wymienione środowiska są wspierane przez biblioteki dostarczane przez firmę STM. Każdy przykładowy projekt ma oprócz kodu źródłowego również pliki konfiguracyjne dla tych środowisk. Każdy przykład jest od razu gotowy do kompilacji. Takie przykłady są bardzo pomocne, szczególnie jeśli w projekcie niewystarczająca jest sama zmiana kodu. Często w projektach obsługi np. kontrolerów pamięci, konieczna jest również odpowiednia modyfikacja plików linkera. Przy wyborze innych środowisk jesteśmy 38 ELEKTRONIKA PRAKTYCZNA 9/2009

Zegar dla szachistów skazani na samodzielne, żmudne konfigurowanie środowiska programistycznego. Wybór odpowiedniego środowiska pozostawiam Czytelnikowi. Jestem pewien, że istnieje jeszcze wiele innych środowisk, które mogą współpracować z procesorami STM32. Powyższy projekt został napisany w udostępnianym przez firmę Raisonance darmowym środowisku RIDE7. Płacimy dopiero wtedy jeśli chcemy używać debugera. Do obsługi popularnego Wigglera służy program HJTAG. Platforma sprzętowa (PCB) Projekt Zegar dla szachistów został wykonany w oparciu o mikrokontroler STM32F103R i może posłużyć jako zestaw startowy do dowolnych projektów wykorzystujących wyświetlacz graficzny oraz interfejs RS232. Na płytce dostępne są również doprowadzenia (J4) interfejsów SPI, SDIO, ADC oraz DAC. Na szczególną uwagę zasługuje interfejs SDIO, który umożliwia podłączenie kart microsd w trybie 4 przewodowym. Wszyscy na pewno docenią również bardzo wygodny dostęp do przetworników A/C oraz C/A. Wszystkie te cechy czynią projekt uniwersalnym zestawem startowym, który bardzo łatwo dostosować do własnych potrzeb. Zasilanie Płytka zasilana jest napięciem stałym o wartości 9...12 V. Do jego podłączenia służy gniazdo G5. Przed podłączeniem należy sprawdzić czy polaryzacja napięcia z zasilaczu jest prawidłowa. Stabilizator U7 dostarcza napięcie zasilające 5 V, natomiast U4 3,3 V. Kondensatory C18...C20 oraz C26... C29, są zalecane przez STM. Ich zadaniem jest filtrowanie napięcia podawanego na układ zasalania procesora. Otoczenie procesora Procesor do pracy potrzebuje rezonatora kwarcowego. Na płytce zastosowano kwarc o częstotliwości 8 MHz, który pracuje w układzie generatora częstotliwości odniesienia dla pętli PLL. Rdzeń mikrokontrolera taktowany jest sygnałem o częstotliwości 72 MHz. Płytkę wyposażono w przycisk zerowania RESET. Układ zerowania jest sprzęgnięty ze złączem JTAG, który dzięki temu może wyzerować procesor programowo. Na płytce zamontowano też gniazdo baterii litowej CR2032. Służy ona do podtrzymania pracy wewnętrznego zegara. Wspomniana wcześniej zworka JP6 służy do zmiany metody uruchamiania układu i jest potrzebna do uruchomienia wewnętrznego bootloadera. Klawiatura W układzie można zastosować dowolną klawiaturę, którą podłączamy pod złącze J3. Stosowanie układu filtrowania zakłóceń nie jest konieczne, chociaż upraszcza programową obsługę klawiatury. Buzzer Układ buzzera jest podłączany za pomocą zwory J2 do portu PA4. Zwora była praktyczna ze względu na założenie wyprowadzenia kompletu sygnałów interfejsu SPI podłączonego do złącza J4. Wyświetlacz W układzie zastosowano monochromatyczny wyświetlacz graficzny o rozdzielczości 240 128 pikseli. Wyświetlacz ma kontroler Toshiba T6964C. Interfejs wyświetlacza wymaga przesyłania 8 bitów danych, WR, RD, CE (można podłączyć na stałe) oraz C/D (informuje on kontroler o tym, czy przesyłane są dane instrukcja). Stan doprowadzenia 22 wyświetlacza steruje wielkością czcionki generowaną przez wewnętrzny generator znaków. Do wyboru jest czcionka 8 8 lub 8 6 pikseli. Kontroler wyświetlacza LCD może być zerowany na dwa sposoby: przez procesor (J1: 1 2) lub za pomocą układu RC zbudowanego z C22-R41 (J1: 2 3). Potencjometr POT3 służy do regulacji kontrastu. W przypadku wyświetlacza użytego w projekcie podanie na V0 napięcia o wartości około 14 V pozwalało na czyste wyświetlanie znaków. Napięcie ujemne zostało podłączone do generatora napięcia ujemnego znajdującego się na wyświetlaczu i podzielne za pomocą potencjometru POT3. Złącze wyświetlacza jest dostosowane tylko do jednego ze standardów wyprowadzeń wyświetlaczy. Niestety, w przypadku wyświetlaczy graficznych istnieją duże różnice w sposobach wyprowadzenia sygnałów, więc przed zakupem warto sprawdzić, czy dany LCD ma wyprowadzenia kompatybilne z płytką. Interfejsy komunikacyjne Układ ma złącze J4, na którym dostępne są interfejsy procesora. Oprócz tego do złącza doprowadzone są również napięcia 3,3 V oraz 5 V, które można wykorzystać do zasilania układów dołączanych z zewnątrz. 2 RS232 Układ ma złącze J20 zgodne z RS232 (tylko sygnały RxD, TxD). Za jego pomocą można go podłączyć do komputera PC wyposażonego port szeregowy. Interfejs RS232 jest podłączony wewnętrznie do doprowadzeń PA8 oraz PA9 i może służyć do zaprogramowania wewnętrznego bootloadera ISP lub bootlodera IAP. Oba dostępne są na stronie internetowej firmy ST. Do doprowadzeń 1 i 2 złącza J4 podłączono drugi interfejs szeregowy. Jego napięcia są zgodne ze standardem RS232. USB Procesor ma jedno złącze USB. Jego sygnały podano na doprowadzenia 3 i 4 złącza J4. Do doprowadzeń 16 i 17 podłączono, odpowiednio, napięcie zasilające oraz masę SDIO Interfejs SDIO służy do obsługi kart SD, które podłączone do niego pracują szybciej i pewniej niż przy współpracy poprzez SPI. Oprócz kart SD możliwe jest także stosowanie kart microsd, które nie zawsze mają tryb SPI. SPI Interfejs SPI jest bardzo dobrze znanym interfejsem szeregowym. Można go użyć do współpracy z różnymi układami zewnętrznymi. R E K L A M A ELEKTRONIKA PRAKTYCZNA 9/2009 39

Rys. 2. Rozmieszczenie elementów na płytce zegara ADC oraz DAC Wszystkich, którzy potrzebują wygodnego sposobu na sprzęgnięcie procesora z układami analogowymi, z pewnością ucieszy bardzo wygodny dostęp do interfejsów ADC oraz DAC. Montaż i uruchomienie Schemat ideowy zegara umieszczono na rys. 1, natomiast montażowy na rys. 2. Na rys. 3 umieszczono schemat przykładowej klawiatury. Montaż układu nie powinien sprawić problemów. Płytkę PCB zaprojektowano specjalnie z myślą o montażu przez osoby nieposiadające specjalistycznego sprzętu. Wystarczą zwykła lutownica i obcinaczki do drutu. Jedynym problemem może być przylutowanie samego procesora, który dostarczany jest w obudowie TQFP64. Uruchomienie rozpoczynamy od wgrania programu aplikacyjnego umieszczonego na płycie CD_EP9/2009B. Skompilowany program znajduje się w pliku Zegar.hex lub Zegar.bin. Program można wgrać za pomocą programatora JTAG lub interfejsu RS232. Opis tej czynności podano wcześniej. Poprawnie zmontowany zegar działa natychmiast po załączeniu zasilania. Rys. 3. Schemat ideowy klawiatury Program Program napisano w języku C za pomocą środowiska RIDE7 firmy Raisonance. Do pamięci mikrokontrolera wgrano go za pomocą programatora Wiggler. Do obsługi programatora służy darmowy program HJTAG. Program wyświetla dwa zegary, które podają czasy dla poszczególnych graczy. Po naciśnięciu Menu program umożliwia dokonanie wyboru jednego z trzech trybów gry (całkowity, pojedynczy oraz tryb Fishera). Możemy również ustawić imiona graczy oraz czasy rozgrywek. Program pamięta parametry po wyłączeniu zasilania. Menu jest proste i przejrzyste, podobnie jak wyświetlane komunikaty. Obsługa urządzenia nie powinna nastręczać żadnych trudności. Niestety, z własnego doświadczenia wiem, że prawie żaden układ nie działał od razu po załączeniu zasilania. Nie należy się tym zniechęcać. Czasami od celu ważniejsze jest to, przez co się przechodzi, a rozwiązując problemy nabywa się wiedzy i doświadczeń. Nagrodą będzie uruchomienie płytki z dużym, czytelnym wyświetlaczem, z klawiaturą oraz powiadomieniem dźwiękowym. Korzystając z tej platformy można napisać wiele własnych programów użytkowych. Jarosław Ośka, jaroslaw.oska@gmail.com nixie.ep.com.pl 40 ELEKTRONIKA PRAKTYCZNA 9/2009