Politechnika Wrocławska Wydział Elektroniki Instrukcja użytkownika Interfejs MON08 Moduł z mikrokontrolerem MC68HC908GR4 Sebastian Dorobek 10 czerwca 2010
Spis treści 1 Wprowadzenie 3 1.1 Parametry urządzenia........................... 4 1.2 Opis wyprowadzeń złącz.......................... 5 1.3 Schematy blokowe.............................. 7 1.4 Konfiguracja zworek interfejsu MON08................. 8 2 Montaż i uruchomienie modułów 10 2.1 Uwagi do montażu modułu z mikrokontrolerem MC68HC908GR4... 10 2.2 Uwagi do montażu interfejsu MON08................... 11 2.3 Uruchomienie modułów........................... 11 2.4 Podstawowa aplikacja w środowisku CodeWarrior/ProcessorExpert.. 12 2.5 Konfiguracja połączenia z interfejsem MON08 w środowisku CodeWarrior/ProcessorExpert............................ 17 2.6 Przykładowa aplikacja w środowisku CodeWarrior/ProcessorExpert.. 18 A Zdjęcia modułów po montażu 23 A.1 Moduł mikrokontrolera MC68HC908GR4................. 23 A.2 Moduł interfejsu MON08.......................... 24 B Schematy układu elektronicznego 25 B.1 Moduł mikrokontrolera MC68HC908GR4................. 25 B.2 Moduł interfejsu MON08.......................... 28 C Wykazy elementów 31 C.1 Moduł mikrokontrolera MC68HC908GR4................. 31 C.2 Moduł interfejsu MON08.......................... 32 1
Spis rysunków 1 Schemat blokowy mikrokontrolera MC68HC908GR4........... 4 2 Kolejność wyprowadzeń złącza modułu z mikrokontrolerem....... 7 3 Schemat blokowy modułu z mikrokontrolerem MC68HC908GR4..... 7 4 Schemat blokowy interfejsu MON08.................... 8 5 Widok interfejsu MON08 z konfiguracją zworek dla MC68HC908GR4. 8 6 Widok interfejsu MON08 z oznaczeniem zworek............. 9 7 Zaciskanie złącza - zamiana przewodów.................. 10 8 Montaż kwarcu od strony BOTTOM płytki drukowanej......... 11 9 Kreator - Device and Connection...................... 12 10 Kreator - Project Parameters........................ 12 11 Kreator - Add Additional Files....................... 13 12 Kreator - ProcessorExpert.......................... 13 13 Kreator - C/C++ Options.......................... 14 14 Kreator - PC Lint.............................. 14 15 Wybór wersji mikrokontrolera........................ 15 16 Ustawienie parametrów mikrokontrolera.................. 15 17 Dodanie komponentu ExtInt........................ 16 18 Konfiguracja komponentu ExtInt...................... 16 19 Konfiguracja czasu włączenia/wyłączenia zasilania............ 17 20 Zalecana konfiguracja portu szeregowego.................. 18 21 Dodanie komponentu bitio.......................... 19 22 Konfiguracja komponentu bitio - PTD4.................. 19 23 Konfiguracja komponentu bitio - PTD5.................. 20 24 Dodanie metody NegVal........................... 20 25 Dodanie komponentu TimerInt....................... 21 26 Konfiguracja komponentu TimerInt..................... 21 27 Dodanie komponentu PWM......................... 22 28 Konfiguracja komponentu PWM...................... 22 29 Zdjęcie modułu z mikrokontrolerem MC68HC908GR4 - warstwa TOP.. 23 30 Zdjęcie modułu z mikrokontrolerem MC68HC908GR4 - warstwa BOT- TOM..................................... 23 31 Zdjęcie interfejsu MON08.......................... 24 32 Schemat ideowy modułu z mikrokontrolerem MC68HC908GR4..... 25 33 Widok płytki drukowanej modułu z mikrokontrolerem MC68HC908GR4 - warstwa TOP................................ 26 34 Widok płytki drukowanej modułu z mikrokontrolerem MC68HC908GR4 - warstwa BOTTOM............................. 26 35 Schemat montażowy modułu z mikrokontrolerem MC68HC908GR4 - warstwa TOP................................. 27 36 Schemat montażowy modułu z mikrokontrolerem MC68HC908GR4 - warstwa BOTTOM.............................. 27 37 Schemat ideowy interfejsu MON08..................... 28 38 Widok płytki drukowanej interfejsu MON08 - warstwa TOP....... 29 39 Widok płytki drukowanej interfejsu MON08 - warstwa BOTTOM.... 29 40 Schemat montażowy płytki drukowanej interfejsu MON08 - warstwa TOP. 30 2
1 Wprowadzenie Zaprojektowany interfejs MON08 służy do debugowania mikrokontrolerów HC08 firmy Freescale z wykorzystaniem trybu monitor mode. Wykorzystany tryb pozwala na zatrzymywanie normalnego procesu wykonywania programu oraz przejęcie kontroli nad mikrokontrolerem[4]. Użytkownik może bezpośrednio kontrolować kroki wykonywania programu, odczytywać i zapisywać dane do rejestrów oraz pamięci, debugować kod programu, a także programować pamięć FLASH mikrokontrolera. Interfejs współpracuje ze środowiskiem CodeWarrior firmy Freescale. Moduł z mikrokontrolerem MC68HC908GR4 zawiera wymagane elementy do prawidłowej pracy mikrokontrolera, a także pozwala na wykorzystanie interfejsu MON08 do debugowania oraz programowania pamięci wewnętrznej FLASH mikrokontrolera. Najważniejsze cechy użytego mikrokontrolera MC68HC908GR4[5]: ˆ wewnętrzna pamięć FLASH o rozmiarze 4kB, ˆ 385B wewnętrznej pamięci RAM, ˆ moduł interfejsu szeregowego SPI, ˆ moduł komunikacji szeregowej SCI, ˆ moduł przerwań klawiatury KBI, ˆ moduł generowania przerwań okresowych TBM, ˆ trzy kanały timerów - dwa moduły TIM, ˆ sześciokanałowy, ośmiobitowy przetwornik analogowo-cyfrowy, ˆ układ generowania sygnału zegarowego z pętlą PLL. 3
Schemat blokowy mikrokontrolera MC68HC908GR4 1 [5] Rysunek 1: Schemat blokowy mikrokontrolera MC68HC908GR4. 1.1 Parametry urządzenia Parametry interfejsu MON08[2][3]: ˆ wartość napięcia zasilania interfejsu: +5V (port USB) ˆ wartość napięcia wyjściowego dla mikrokontrolera: +5V ˆ dopuszczalna obciążalność prądowa wyjścia napięciowego: 100mA ˆ maksymalna obciążalność prądowa wyjścia napięciowego: 500mA ˆ częstotliwość generowanego sygnału zegarowego: 9.8304MHz lub 14.745MHz 1 Rysunek pochodzi z MC68HC908GR4 Data Sheet, Rev. 7 firmy Freescale, strona nr 21 4
Parametry modułu z mikrokontrolerem MC68HC908GR4[5]: ˆ Napięcie pracy: +5V ˆ maksymalny pobór prądu mikrokontrolera: 150mA ˆ maksymalna częstotliwość zewnętrznego sygnału zegarowego: 32.8MHz 1.2 Opis wyprowadzeń złącz Wyprowadzenia złącza interfejsu MON08 - moduł interfejsu MON08: 1 VDD 2 IRQ 3 GND 4 OSC 5 GND 6 PTB0 7 PTB1 8 PTA1 9 PTA0 10 GND Wyprowadzenia złącza interfejsu MON08 - moduł z mikrokontrolerem MC68HC908GR4: 1 VDD 2 IRQ 3 GND 4 OSC 5 GND 6 PTB0 7 PTB1 8 PTA0 9 PTA1 10 GND 5
Wyprowadzenia złącza modułu z mikrokontrolerem MC68HC908GR4: 1 VDD 2 VSS 3 IRQ 4 RST 5 PTE0/TXD 6 PTE1/RXD 7 PTD0/SS 8 PTD1/MISO 9 PTD2/MOSI 10 PTD3/SPSCK 11 PTD4/T1CH0 12 PTD5/T1CH1 13 PTD6/T2CH0 14 VSS 15 VSS 16 PTB0/AD0 17 PTB1/AD1 18 PTB2/AD2 19 PTB3/AD3 20 PTB4/AD4 21 PTB5/AD5 22 PTA0/KBD0 23 PTA1/KBD1 24 PTA2/KBD2 25 PTA3/KBD3 26 PTC0 27 PTC1 28 VSS 6
Widok kolejności wyprowadzeń złącza modułu z mikrokontrolerem MC68HC908GR4: Rysunek 2: Kolejność wyprowadzeń złącza modułu z mikrokontrolerem. 1.3 Schematy blokowe Moduł z mikrokontrolerem MC68HC908GR4: Rysunek 3: Schemat blokowy modułu z mikrokontrolerem MC68HC908GR4. 7
Interfejs MON08: Rysunek 4: Schemat blokowy interfejsu MON08. 1.4 Konfiguracja zworek interfejsu MON08 Konfiguracja dla modułu z mikrokontrolerem MC68HC908GR4: Rysunek 5: Widok interfejsu MON08 z konfiguracją zworek dla MC68HC908GR4. 8
Konfiguracja ogólna: Rysunek 6: Widok interfejsu MON08 z oznaczeniem zworek. 9
2 Montaż i uruchomienie modułów Przy projekcie płytek drukowanych użyte zostały definicje obudów elementów zgodne z normą IPC7351, co może być powodem trudności przy lutowaniu elementów w rozmiarze SMT 0603 - rozmiary padów są bardzo małe, dlatego do ich montażu zalecane jest użycie lutownicy typu gorące powietrze. Podczas montażu należy zwrócić uwagę na różne wyprowadzenia złącz pomiędzy płytką interfejsu MON08, a płytką z mikrokontrolerem. W tym celu przy zaciskaniu złacza IDC należy zamienić między sobą przewody 8 i 9. Poniższe zdjęcie przedstawia sposób zamiany przewodów: Rysunek 7: Zaciskanie złącza - zamiana przewodów. 2.1 Uwagi do montażu modułu z mikrokontrolerem MC68HC908GR4 Montaż elementów Q2, Q3, Q4, R3, R5, i R12 odbywa się w zależności od aplikacji w jakiej ma pracować moduł: ˆ praca z zasilaniem dostarczonym z interfejsu MON08 - montowane są elementy: Q2 i R12 lub rezystor 0R pomiędzy dren i źródło tranzystora Q2 (wyprowadzenie 2 i 3), niemontowane: Q3, Q4, R3, R5, ˆ praca z zasilaniem dostarczonym z interfejsu MON08 z wyprowadzeniem napięcia na zewnątrz modułu - montowane są elementy: Q2 i R12 lub rezystor 0R pomiędzy dren i źródło tranzystora Q2 (wyprowadzenie 2 i 3) oraz rezystor 0R pomiędzy dren i źródło tranzystora Q3 (wyprowadzenie 2 i 3), niemontowane: Q3, Q4, R3, R5, ˆ praca z zasilaniem zewnętrznym - montowane są elementy: Q3, Q4, R3, R5, niemontowane: Q2 i R12. Kwarc można montować od strony BOTTOM płytki drukowanej, w takim przypadku możliwe jest również przylutowanie obudowy kwarcu do masu modułu. 10
Rysunek 8: Montaż kwarcu od strony BOTTOM płytki drukowanej. 2.2 Uwagi do montażu interfejsu MON08 Podczas montażu kwarcu w obudowie przewlekanej zaleca się dodatkowo zamontować podkładkę izolacyjną (np. QW-3 z TME). 2.3 Uruchomienie modułów Do uruchomienia trybu monitor mode w mikrokontrolerze MC68HC908GR4 wymagane jest całkowite rozłączenie napięcia zasilania[5]. W celu ułatwienia pracy przewidziana została obsługa włączania i wyłączania napięcia zasilania sterując linią DTR. Konfiguracja interfejsu na Class 1 w debugerze środowiska CodeWarrior pozwala wykorzystać tę funkcjonalność, automatycznie włączając i wyłączając napięcia zasilania mikrokontrolera w wymaganym momencie. Należy jednak pamiętać, że w momencie wyłączania napięcia zasilania przy wprowadzaniu mikrokontrolera do trybu monitor mode, do żadnego z wejść mikrokontrolera nie mogą być podłączone źródła napięć. Pojawienie się napięcia na którymkolwiek z wejść mikrokontrolera może uniemożliwić uruchomienie trybu monitor mode. 11
2.4 Podstawowa aplikacja w środowisku CodeWarrior/ProcessorExpert Tworzenie aplikacji należy rozpocząć wybierając New Project. uruchomione zostanie okno kreatora, w którym należy wybrać mikrokontroler MC68HC908GR4 oraz interfejs MON08: Rysunek 9: Kreator - Device and Connection. kolejno należy wybrać nazwę projektu oraz lokalizację: Rysunek 10: Kreator - Project Parameters. 12
jeśli jest taka potrzeba można dodać dodatkowe pliki do projektu: Rysunek 11: Kreator - Add Additional Files. wybrać Processor Expert: Rysunek 12: Kreator - ProcessorExpert. 13
pozostać przy domyślnych opcjach: Rysunek 13: Kreator - C/C++ Options. wybrać opcję No: Rysunek 14: Kreator - PC Lint. 14
następnie wybrać wersję mikrokontrolera MC68HC908GR4CFA: Rysunek 15: Wybór wersji mikrokontrolera. po tym etapie należy ustawić parametry mikrokontrolera - częstotliwość pracy 9.8304/14.7456MHz: Rysunek 16: Ustawienie parametrów mikrokontrolera. 15
kolejno, aby poprawnie obsługiwać funkcję przycisku Halt w debugerze należy dodać komponent przerwania zewnętrznego ExtInt: Rysunek 17: Dodanie komponentu ExtInt. oraz skonfigurować go ustawiając generowanie przerwania zboczem opadającym: Rysunek 18: Konfiguracja komponentu ExtInt. 16
w obsłudze przerwania należy umieścić instrukcję SWI oraz wyczyścić bit ACK w rejestrze INTSCR: void EInt1_OnInterrupt(void) { /* place your EInt1 interrupt procedure body here */ asm{ SWI } INTSCR_ACK = 1; } 2.5 Konfiguracja połączenia z interfejsem MON08 w środowisku CodeWarrior/ProcessorExpert Należy skonfigurować połączenie z interfejsem jako Class 1 i w zależności od częstotliwości pracy mikrokontrolera wybrać szybkość transmisji[3]: ˆ częstotliwość pracy 9.8304MHz - szybkość transmisji 9600 bd/s ˆ częstotliwość pracy 14.7456MHz - szybkość transmisji 14400 bd/s W niektórych przypadkach - np. przy podłączeniu kondensatora o dużej pojemności do napięcia zasilania - może być wymagane zwiększenie czasu opóźnienia przy włączeniu/wyłączeniu zasilania: Rysunek 19: Konfiguracja czasu włączenia/wyłączenia zasilania. 17
Podczas konfiguracji portu szeregowego, na którym będzie pracował interfejs MON08 należy ustawić możliwie najmniejszy numer portu. W przeciwnym przypadku port może nie być wykrywany i nie zostanie umieszczony na liście dostępnych portów w debugerze. W celu uniknięcia błędów w transmisji należy zmienić czas opóźnienia z 16ms na 1ms oraz wielkość transferów USB na 64 bajty[1], parametry te konfiguruje się we właściwościach portu. Zalecana konfiguracja portu szeregowego: Rysunek 20: Zalecana konfiguracja portu szeregowego. 2.6 Przykładowa aplikacja w środowisku CodeWarrior/ProcessorExpert W przykładowej aplikacji pomiędzy wyjścia PTD4 i PTD5 podłączona została dioda LED bipolarna, a pomiędzy wyjście PTD6, a masę podłączona została zwykład dioda LED. Efektem pracy programu jest zmiana koloru świecenia diody bipolarnej LED co ustalony czas oraz ustawienie odpowiedniej intensywności świecenia drugiej diody LED poprzez moduł PWM. 18
Po utworzeniu podstawowej aplikacji należy dodać dwa komponenty bitio- do sterowania bipolarną diodą LED: Rysunek 21: Dodanie komponentu bitio. skonfigurować je ustawiając kierunek na wyjście, nadając nazwę komponentu - np. LED RED K i LED RED A oraz ustawiając stan początkowy wyjścia PTD4 na 0 i PTD5 na 1: Rysunek 22: Konfiguracja komponentu bitio - PTD4. 19
Rysunek 23: Konfiguracja komponentu bitio - PTD5. dla obu komponentów dodać metodę NegVal - umożliwiającą negację stanu wyjścia: Rysunek 24: Dodanie metody NegVal. 20
następnie dodać komponent przerwania cyklicznego TimerInt: Rysunek 25: Dodanie komponentu TimerInt. oraz skonfigurować okres generowania przerwania co 1 sekundę: Rysunek 26: Konfiguracja komponentu TimerInt. w obsłudze przerwania cyklicznego umieścić wywołanie metod do zmiany stanu wyjść PTD4 i PTD5: void TI1_OnInterrupt(void) { /* Write your code here... */ LED_RED_K_NegVal(); LED_RED_A_NegVal(); } 21
dodać komponent PWM dla timera TIM2: Rysunek 27: Dodanie komponentu PWM. oraz skonfigurować ustawiając okres na 1ms, wybraną początkową szerokość impulsu np. na 200µs i wyjście na pin PTD6 T2CH0: Rysunek 28: Konfiguracja komponentu PWM. 22
A Zdjęcia modułów po montażu A.1 Moduł mikrokontrolera MC68HC908GR4 Rysunek 29: Zdjęcie modułu z mikrokontrolerem MC68HC908GR4 - warstwa TOP. Rysunek 30: Zdjęcie modułu z mikrokontrolerem MC68HC908GR4 - warstwa BOT- TOM. 23
A.2 Moduł interfejsu MON08 Rysunek 31: Zdjęcie interfejsu MON08. 24
B Schematy układu elektronicznego B.1 Moduł mikrokontrolera MC68HC908GR4 Rysunek 32: Schemat ideowy modułu z mikrokontrolerem MC68HC908GR4. 25
Rysunek 33: Widok płytki drukowanej modułu z mikrokontrolerem MC68HC908GR4 - warstwa TOP. Rysunek 34: Widok płytki drukowanej modułu z mikrokontrolerem MC68HC908GR4 - warstwa BOTTOM. 26
Rysunek 35: Schemat montażowy modułu z mikrokontrolerem MC68HC908GR4 - warstwa TOP. Rysunek 36: Schemat montażowy modułu z mikrokontrolerem MC68HC908GR4 - warstwa BOTTOM. 27
B.2 Moduł interfejsu MON08 Rysunek 37: Schemat ideowy interfejsu MON08. 28
Rysunek 38: Widok płytki drukowanej interfejsu MON08 - warstwa TOP. Rysunek 39: Widok płytki drukowanej interfejsu MON08 - warstwa BOTTOM. 29
Rysunek 40: Schemat montażowy płytki drukowanej interfejsu MON08 - warstwa TOP. 30
C Wykazy elementów C.1 Moduł mikrokontrolera MC68HC908GR4 C1 22pF 0603 2 szt. C10 100nF 0603 7 szt. C11 10uF/10V SMDA 3 szt. C5 33nF 0603 1 szt. C6 10nF 0603 1 szt. IC1 MC68HC908GR4 1 szt. J2 T821-1-10-R1 1 szt. J3 ZL202-14G 2 szt. L1 10uH 0805 1 szt. Q1 BC817-25 2 szt. Q2 IRLML6401 2 szt. Q5 BC807-25 1 szt. R1 10M 0603 1 szt. R10 22k 0603 2 szt. R11 4.7k 0603 4 szt. R12 2.2k 0603 1 szt. R2 330k 0603 1 szt. R4 10k 0603 2 szt. R9 2k 0603 1 szt. X2 32.768kHz 1 szt. ZW1 JUMPER 1 szt. 31
C.2 Moduł interfejsu MON08 C1 4.7uF/10V SMDA 1 szt. C10 100nF 0603 9 szt. C14 10uF/10V SMDA 1 szt. C15 22pF 0603 1 szt. C16 47pF 0603 1 szt. C2 10nF 0603 1 szt. C7 10uF/16V SMDB 2 szt. D3 LED 0805 3 szt. D4 LL4148 2 szt. D6 BZV55C9V1 1 szt. IC1 FT232RL 1 szt. IC2 74V1G125STR 2 szt. IC4 74V1G04STR 1 szt. J1 T821-1-10-R1 1 szt. J2 LISTWA KOŁKOWA 1X3 3 szt. L1 LCBA-601 1 szt. Q1 IRLML6401 2 szt. Q3 BC807-25 1 szt. Q4 BC817-25 2 szt. R1 1k 0603 3 szt. R10 10k 0603 11 szt. R15 22k 0603 2 szt. R17 2k 0603 1 szt. R19 100k 0603 1 szt. R23 1M 0603 1 szt. R3 510R 0603 3 szt. U1 ICL7660 1 szt. U2 LMC555CM 1 szt. USB1 USBB-G 1 szt. X1 9.8304MHz/14.745MHz + QW-3 1 kpl. RF-021 NÓŻKA GUMOWA 4 szt. 32
Literatura [1] Data Throughput, Latency and Handshaking, AN232B-04, 2006, Future Technology Devices International Limited, 2.5 [2] FT232R Datasheet, Rev. 2.05, 2009, Future Technology Devices International Limited, 1.1 [3] In-circuit Programming of FLASH Memory Using the Monitor Mode for the MC68HC908GR8, EB368/D, Rev. 2, Freescale Semiconductors, 1.1, 2.5 [4] Low-cost Programming and Debugging Options for M68HC08 MCUs, AN2317/D, Rev. 1, 10/2002, Freescale Semiconductors, 1 [5] MC68HC908GR4 Datasheet, Rev. 7, 10/2006, Freescale Semiconductors, 1, 1.1, 2.3 33