INSTYTUT INFORMATYKI, AUTOMATYKI I ROBOTYKI POLITECHNIKI WROCŁAWSKIEJ Na prawach rękopisu Moduł z mikrokontrolerem ATmega18 Halszka Konieczek Słowa kluczowe: mikrokontroler AVR, płytka drukowana, system uruchomieniowy, oprogramowanie skrośne. Wrocław 005
Spis treści 1. Wstęp........................................................... Własności mikrokontrolera ATmega18..................................... 3. Schemat i montaż................................................... 3 4. Złącza i sygnały.................................................... 6 5. Dokumentacja i oprogramowanie pomocnicze................................. 8 Literatura.......................................................... 8
1. Wstęp Opisywany moduł zawiera 8-bitowy mikroprocesor ATmega18 firmy ATMEL wraz z minimalnym zestawem elementów towarzyszących takich jak: rezonator kwarcowy, złącze JTAG, złącze do programowania, zworka do wyboru trybu pracy, kondensatory filtrujące zakłócenia zasilania, a także filtr LC do zasilania części analogowej. Możliwe jest również zamontowanie kwarcu zegarowego. Wszystkie sygnały z mikrokontrolera wyprowadzono na złącza o rozstawie 0.1, dzięki czemu możliwe jest podłączenie zewnętrznych urządzeń oraz płytek uniwersalnych.. Własności mikrokontrolera ATmega18 Mikrokontroler ATmega18 firmy ATMEL należy do rodziny procesorów jednoukładowych AVR. Do konstrukcji tych procesorów wykorzystano nową technologię pamięci FLASH. Zastosowano również rozwiązania wspierające programowanie mikrokontrolerów w języku C. Mikrokontroler ten oparty jest o strukturę typu RISC (procesor o zredukowanej liczbie instrukcji) wykorzystującą wczesne pobranie rozkazu [ang. prefetch]. Dzięki temu procesor nie wymaga wielofazowego sygnału zegarowego, a pojedyncza instrukcja jest wykonywana w jednym okresie sygnału oscylatora. Został on wyposażony w 3 ośmiobitowe, równorzędne rejestry zastępujące pojedynczy akumulator. Trzy pary tych rejestrów mogą być używane jako 16-bitowe wskazniki. Mikrokontroler ten posiada 16-bitowe słowo instrukcji, został wyposażony w pamięć EEPROM, która może być zapisywana przez program, a jej zawartość nie kasuje się po wyłączeniu zasilania. Mnożenie wykonywane jest w ciągu cykli zegara. Program procesora jest przechowywany w wewnętrznej pamięci typu FLASH, którą programuje się za pomocą interfejsu szeregowego (SPI). Pamięć FLASH można tez zaprogramowac programatorem równoległym, przez JTAG oraz używając dowolnego innego interfejsu po wgraniu BOOT-LOADERA. Ponadto procesor ten posiada układy czasowo-licznikowe, interfejs UART i statyczną pamięć RAM. Zastosowana wersja mikrokontrolera posiada następujące zasoby: 18KB pamięci typu FLASH, 4KB pamięci typu EEPROM, 4KB pamięci typu SRAM, 53 programowalne linie I/O, timery: 8-bitowe 16-bitowe timer czasu rzeczywistego PWM: kanały 8-bitowe 6 kanałów programowalnych ( - 16-bitowe) obsługiwane interfejsy: UART (port szeregowy) I C - dwukierunkowy interfejs szeregowy SPI - synchroniczny interfejs szeregowy komparator analogowy, zegar czasu rzeczywistego, 10-bitowy przetwornik analogowo-cyfrowy,
sprzętowy układ mnożący, Watch Dog - układ samoczynnego restartowania w przypadku zawieszenia programu, ICSP - programowanie procesora w docelowym układzie, JTAG - magistrala szeregowa do debugowania w układzie, obudowa MS-06. Strukturę i zasoby mikrokontrolera ATmega18 przedstawiono na rys.1. Rysunek 1. Struktura i zasoby. 3. Schemat i montaż Schemat modułu przedstawiono na rys.. Na rys.3 widnieje sposób montażu elementów na płytce drukowanej. W tab.1 podano zestawienie użytych elementów. Na płytce zamontowano: mikrokontroler ATmega18 w obudowie MS-06 (U1), rezonator kwarcowy 16MHz (Y) z elementami towarzyszącymi (C7 i C8), kondensatory filtrujące 3
1 3 4 A TOSC PB6 PB4 PB PB0 PE6 PE4 PE PE0 A PF0 PF PF4 PF6 JP1 3 30 8 6 4 0 18 16 14 1 10 8 6 4 LEWA 31 9 7 5 3 1 19 17 15 13 11 9 7 5 3 1 TOSC1 PB7 PB5 PB3 PB1 PE7 PE5 PE3 PE1 A AREF PF1 PF3 PF5 PF7 PA0 PA PA4 PA6 PG PC6 PC4 PC PC0 PG0 PD6 PD4 PD PD0 JP 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 PRAWA PA1 PA3 PA5 PA7 PC7 PC5 PC3 PC1 PG1 PD7 PD5 PD3 PD1 PB PB1 PB3 PF4 PF6 PF5 PF7 R1 Res 10K JP3 1 3 4 5 6 7 8 9 10 ISP_CONNECTOR JP4 1 3 4 5 6 7 8 9 10 JTAG A U1 B C J Y 1 C7 7pF 16MHz PB0 10 PB1 11 PB 1 PB3 13 PB4 14 PB5 15 PB6 16 PB7 17 PG3 18 PG4 19 PD0 PD1 PD PD3 PD4 PD5 PD6 PD7 PE0 PE1 PE PE3 PE4 PE5 PE6 PE7 PG0 PG1 PG PEN C8 7pF 5 6 7 8 9 30 31 3 3 4 5 6 7 8 9 33 34 43 0 1 3 4 PB0 (SS) PB1 (SCK) PB (MOSI) PB3 (MISO) PB4 (OC0) PB5 (OC1A) PB6 (OC1B) PB7 (OC/OC1C) TOSC/PG3 TOSC1/1PG4 PD0 (SCL/INT0) PD1 (SDA/INT1) PD (RXD1/INT) PD3 (TXD1/INT3) PD4 (IC1) PD5 (XCK1) PD6 (T1) PD7 (T) PE0 (RXD0/PDI) PE1 (ALE) PE (XCK0/AIN0) PE3 (OC3A/AIN1) PE4 (OC3B/INT4) PE5 (OC3C/INT5) PE6 (T3/INT6) PE7 (IC3/INT7) PG0 (WR) PG1 (RD) PG (ALE) PEN XTAL XTAL1 ATmega18-16AC 1 JP8 PA0 (AD0) PA1 (AD1) PA (AD) PA3 (AD3) PA4 (AD4) PA5 (AD5) PA6 (AD6) PA7 (AD7) PC0 (A8) PC1 (A9) PC (A10) PC3 (A11) PC4 (A1) PC5 (A13) PC6 (A14) PC7 (A15) PF7 (ADC7/TDI) PF6 (ADC6/TDO) PF5 (ADC5/TMS) PF4 (ADC4/TCK) PF3 (ADC3) PF (ADC) PF1 (ADC1) PF0 (ADC0) A AREF A 51 50 49 48 47 46 45 44 35 36 37 38 39 40 41 4 54 55 56 57 58 59 60 61 1 5 64 6 53 63 PA0 PA1 PA PA3 PA4 PA5 PA6 PA7 PC0 PC1 PC PC3 PC4 PC5 PC6 PC7 PF7 PF6 PF5 PF4 PF3 PF PF1 PF0 A AREF C3 100nF J1 1 pcb_jumper L1 10mH C6 100uF B C 1 AREF TOSC 1 1 TOSC1 JP7 C1 100nF C4 100uF A PG3 JP5 Y1 1 JP6 PG4 C 100nF C5 100uF XTAL D D Title 1 Size A4 Number Date: 005-06-13 Sheet of File: H:\home\..\projekt_atmega.SchDoc Drawn By: 3 Revision 4 Rysunek. Schemat 4 układu.
Rysunek 3. Sposób montażu elementów na płytce. liczba wartość obudowa oznaczenie na schemacie rezystory 1 10k 0805 R1 kondensatory 6 100u 0805 C1, C, C3, C4, C5, C6 7p 0805 C7, C8 filtry 1 10m axial-0.4 L1 rezonatory 1 HC49/S Y1 1 16M HC49/S Y półprzewodniki 1 ATmega18 MS-06 U1 Tabela 1. Zestawienie elementów modułu. 5
zakłócenia zasilania, a także filtr LC do zasilania części analogowej, rezystor podciągający sygnał restartu () do stanu wysokiego (R1). Zworkę do wyboru trybu pracy (J) zamontowano na wierzchniej stronie płytki. Zworka to służy do załączenia PEN do masy, co powoduje wejscie w tryb programowania przez interfejs SPI w przypadku gdy nie można zagwarantować odpowiednich impulsów na wyprowadzeniu i SCK w momencie załączania zasilania. 4. Złącza i sygnały Wszystkie sygnały mikrokontrolera zostały wyprowadzone na dwa 3-pinowe dwurzędowe złącza (JP1 i JP) znajdujące się na spodniej stronie płytki. Rozwiązanie to pozwala na podłączenie modułu do odpowiednich gniazd zamontowanych na innej płytce. Złącze JTAG (JP4) oraz złącze do programowania (JP3) zamontowano na wierzchniej stronie płytki. Rozmieszczenie sygnałów na złączach JP1 i JP podano w tab.. Ich opis przedstawiono w tab.3. PF6(ADC6/TD0) 1 PF7(ADC7/TDI) 1 PF4(ADC4/TCK) 4 3 PF5(ADC5/TMS) PA1(AD1) 4 3 PA0(AD0) PF(ADC) 6 5 PF3(ADC3) PA3(AD3) 6 5 PA(AD) PF0(ADC0) 8 7 PF1(ADC1) PA5(AD5) 8 7 PA4(AD4) A 10 9 AREF PA7(AD7) 10 9 PA6(AD6) PE0(RXD0/PDI) 1 11 A PC7(A15) 1 11 PG(ALE) PE(XCK0/AIN0) 14 13 PE1(TXD0/PDO) PC5(A13) 14 13 PC6(A14) PE4(OC3B/INT4) 16 15 PE3(OC3A/AIN1) PC3(A11) 16 15 PC4(A1) PE6(T3/INT6) 18 17 PE5(OC3C/INT5) PC1(A9) 18 17 PC(A10) PB0(SS) 0 19 PE7(IC3/INT7) PG1(RD) 0 19 PC0(A8) PB(MOSI) 1 PB1(SCK) PD7(T) 1 PG0(W R) PB4(OC0) 4 3 PB3(MISO) PD5(XCK1) 4 3 PD6(T1) PB6(OC1B) 6 5 PB5(OC1A) PD3(TXD1/INT3) 6 5 PD4(IC1) PG3(TOSC) 8 7 PB7(OC/OC1C) PD1(SDA/INT1) 8 7 PD(RXD1/INT) 30 9 PG4(TOSC1) 30 9 PD0(SCL/INT0) 3 31 3 31 Tabela. Złącza płytki. 6
sygnał wyprowadzenie opis port A AD0-AD7 JP pin 3-JP pin 10 linie adresów i danych port B SS JP1 pin 0 we/wy wyboru SPI Slave Select SCK JP1 pin 1 zegar SPI MOSI JP1 pin dane SPI Master Out Slave In MISO JP1 pin 3 dane SPI Master In Slave Out OC0-OC/OC1C JP1 pin 4-JP1 pin 7 Output Compare i PWM dla licznika port C A8-A15 JP pin 19-JP pin 1 linie adresowe, port wyjściowy port D SCL/INT0 JP pin 9 przewanie zewnętrzne/twi Serial Clock SDA/INT1 JP pin 8 przewanie zewnętrzne/twi Serial Data RXD1/INT JP pin 7 przewanie zewnętrzne/uart1 pin odbiorczy TXD1/INT3 JP pin 6 przewanie zewnętrzne/uart1 pin nadawczy IC1 JP pin 5 Timer/Counter Input Capture Trigger XCK1 JP pin 4 we/wy zegara zewnętrznego T1-T JP pin 3-JP pin wejście Timer/Counter port E PDI JP1 pin 1 UART0 pin odbiorczy/programowane we danych TXD0/PDO JP1 pin 13 UART0 pin nadawczy/programowane wy danych XCK0/AIN0 JP1 pin 14 we/wy zagara zewnętrznego/analog Comparator Positive Input OC3A/AIN1 JP1 pin 15 Output Compare i wy A PWM/Analog Comparator Negative Input OC3B/INT4 JP1 pin 16 Output Compare i wy B PWM/przerwanie zewnętrzne OC3C/INT5 JP1 pin 17 Output Compare i wy C PWM/przerwanie zewnętrzne T3/INT6 JP1 pin 18 we zegara/przerwanie zewnętrzne IC3/INT7 JP1 pin 19 Timer/Counter Input Capture Trigger/przerwanie zewnętrzne port F ADC0-ADC3 JP1 pin 8-JP1 pin 5 we przetwornika ADC ADC4/TCK-ADC7/TDI JP1 pin 4-JP1 pin 1 we przetwornika ADC/JTAG port G W R JP pin 1 sygnał zapisu do pamięci zewnętrznej W R RD JP pin 0 sygnał odczytu z pamięci zewnętrznej RD ALE JP pin 11 załączenie zatrzasku do pamięci zewnętrznej TOSC-TOSC1 JP1 pin 8-JP1 pin 9 RTC Oscillator Timer/Counter AREF JP1 pin 9 napięcie odniesienia (analogowe) A JP1 pin 10 masa analogowa A JP1 pin 11 zasilanie analogowe JP1 pin 30 restart JP1 pin 31, JP pin zasilanie JP1 pin 3, JP pin 1 masa Tabela 3. Sygnały płytki. 7
Rozmieszczenie sygnałów złącza JP3 podano w tab.4, a złącza JP4 w tab.5. PB 1 3 4 5 6 PB1 7 8 PB3 9 10 Tabela 4. Złącze ISP. PF4 1 PF6 3 4 PF5 5 6 7 8 PF7 9 10 Tabela 5. Złącze JTAG. 5. Dokumentacja i oprogramowanie pomocnicze Dokumentacja do mikrokontrolera dostępna jest na stronie producenta http://www.atmel.com/products/avr/ Firma Atmel dostarcza środowisko pod nazwą AVRStudio przeznaczone do tworzenia i uruchamiania programów oraz kompilator GCC. Oprogramowanie to dostępne jest na stronie http://www.avrfreaks.net/ oraz http://gcc.gnu.org/ Istnieje również oprogramowanie przeznaczone dla systemu operacyjnego Windows. Jest to pakiet WinAVR zawierający w sobie GCC dla AVRów. Uzupełniony jest on o edytor składniowy. WinAVR posiada ponadto interfejs pozwalający zintegrować go z innymi narzędziami, uruchamianymi za pomocą skryptów. Pakiet ten dostępny jest na stronie http://sourceforge.net/projects/winavr Literatura [1] Datasheet 8-bit Microcontroller with 18K Bytes In-System Programmable Flash, Rev.467M-AVR-11/04. [] J. Doliński Mikrokontrolery AVR w praktyce., Wydawnictwo BTC, Warszawa 003. [3] A. Krysiak Programowanie mikrokontrolerów rodziny AVR. cz.1, Typoscript, Wrocław 000. 8
Halszka Konieczek Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej ul. Janiszewskiego 11/17 50-37 Wrocław Niniejszy raport otrzymują: 1. OINT............................................................................ - 1 egz. 3. Autor............................................................................ - 3 egz. Razem : 4 egz. Raport wpłynął do redakcji I-6 w czerwcu 005 roku. 9