Moduł z mikrokontrolerem ATmega128 Halszka Konieczek
Transkrypt
Moduł z mikrokontrolerem ATmega128 Halszka Konieczek
Na prawach rękopisu INSTYTUT INFORMATYKI, AUTOMATYKI I ROBOTYKI POLITECHNIKI WROCŁAWSKIEJ Moduł z mikrokontrolerem ATmega128 Halszka Konieczek Słowa kluczowe: mikrokontroler AVR, płytka drukowana, system uruchomieniowy, oprogramowanie skrośne. Wrocław 2005 Spis treści 1. Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Własności mikrokontrolera ATmega128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 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 ATmega128 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. 2. Własności mikrokontrolera ATmega128 Mikrokontroler ATmega128 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 32 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 2 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: — 128KB pamięci typu FLASH, — 4KB pamięci typu EEPROM, — 4KB pamięci typu SRAM, — 53 programowalne linie I/O, — timery: – 2 8-bitowe – 2 16-bitowe – timer czasu rzeczywistego — PWM: – 2 kanały 8-bitowe – 6 kanałów programowalnych (2 - 16-bitowe) — obsługiwane interfejsy: – UART (port szeregowy) – I 2 C - dwukierunkowy interfejs szeregowy – SPI - synchroniczny interfejs szeregowy — komparator analogowy, — zegar czasu rzeczywistego, — 10-bitowy przetwornik analogowo-cyfrowy, 2 — 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-026. Strukturę i zasoby mikrokontrolera ATmega128 przedstawiono na rys.1. Rysunek 1. Struktura i zasoby. 3. Schemat i montaż Schemat modułu przedstawiono na rys.2. 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 ATmega128 w obudowie MS-026 (U1) , rezonator kwarcowy 16MHz (Y2) z elementami towarzyszącymi (C7 i C8), kondensatory filtrujące 3 1 2 3 JP1 GND RESET TOSC2 PB6 PB4 PB2 PB0 PE6 PE4 PE2 PE0 AGND PF0 PF2 PF4 PF6 A JP2 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 GND PA0 PA2 PA4 PA6 PG2 PC6 PC4 PC2 PC0 PG0 PD6 PD4 PD2 PD0 VCC TOSC1 PB7 PB5 PB3 PB1 PE7 PE5 PE3 PE1 AVCC AREF PF1 PF3 PF5 PF7 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 LEWA 4 RESET 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 VCC PA1 PA3 PA5 PA7 PC7 PC5 PC3 PC1 PG1 PD7 PD5 PD3 PD1 R1 VCC Res2 10K JP3 PB2 RESET PB1 PB3 PF4 PF6 PF5 VCC PF7 PRAWA 1 3 5 7 9 VCC GND GND GND GND 2 4 6 8 10 A ISP_CONNECTOR JP4 GND 1 2 VCC 3 4 RESET 5 6 7 8 GND 9 10 JTAG U1 B PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PG3 PG4 10 11 12 13 14 15 16 17 18 19 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 25 26 27 28 29 30 31 32 PE0 PE1 PE2 PE3 PE4 PE5 PE6 PE7 2 3 4 5 6 7 8 9 PG0 33 PG1 34 PG2 43 RESET 20 PEN 1 C 23 24 1 Y2 PB0 (SS) PB1 (SCK) PB2 (MOSI) PB3 (MISO) PB4 (OC0) PB5 (OC1A) PB6 (OC1B) PB7 (OC2/OC1C) TOSC2/PG3 TOSC1/1PG4 PD0 (SCL/INT0) PD1 (SDA/INT1) PD2 (RXD1/INT2) PD3 (TXD1/INT3) PD4 (IC1) PD5 (XCK1) PD6 (T1) PD7 (T2) PF7 (ADC7/TDI) PF6 (ADC6/TDO) PF5 (ADC5/TMS) PF4 (ADC4/TCK) PF3 (ADC3) PF2 (ADC2) PF1 (ADC1) PF0 (ADC0) PE0 (RXD0/PDI) PE1 (ALE) PE2 (XCK0/AIN0) PE3 (OC3A/AIN1) PE4 (OC3B/INT4) PE5 (OC3C/INT5) PE6 (T3/INT6) PE7 (IC3/INT7) PG0 (WR) PG1 (RD) PG2 (ALE) VCC VCC AVCC AREF RESET PEN GND GND GND XTAL2 XTAL1 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 35 36 37 38 39 40 41 42 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 54 55 56 57 58 59 60 61 PF7 PF6 PF5 PF4 PF3 PF2 PF1 PF0 21 52 64 62 VCC VCC AVCC AREF 22 53 63 GND GND C8 27pF 100uF C 2 1 AGND 2 AREF C1 C4 100nF 100uF C2 C5 100nF 100uF 1 AVCC JP6 2 1 C6 100nF JP8 TOSC1 2 C3 pcb_jumper JP7 JP5 Y1 10mH ATmega128-16AC 1 1 L1 J1 2 TOSC2 B 1 2 C7 27pF 2 PC0 (A8) PC1 (A9) PC2 (A10) PC3 (A11) PC4 (A12) PC5 (A13) PC6 (A14) PC7 (A15) 51 50 49 48 47 46 45 44 16MHz J2 PG3 PA0 (AD0) PA1 (AD1) PA2 (AD2) PA3 (AD3) PA4 (AD4) PA5 (AD5) PA6 (AD6) PA7 (AD7) PG4 XTAL D D Title Size Number Revision A4 Date: File: 1 2 2005-06-13 H:\home\..\projekt_atmega.SchDoc 3 4 Rysunek 2. Schemat układu. Sheet of Drawn By: 4 Rysunek 3. Sposób montażu elementów na płytce. liczba 1 6 2 1 1 1 1 wartość obudowa oznaczenie na schemacie rezystory 10k 0805 R1 kondensatory 100u 0805 C1, C2, C3, C4, C5, C6 27p 0805 C7, C8 filtry 10m axial-0.4 L1 rezonatory HC49/S Y1 16M HC49/S Y2 półprzewodniki ATmega128 MS-026 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 (RESET) do stanu wysokiego (R1). Zworkę do wyboru trybu pracy (J2) 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 RESET i SCK w momencie załączania zasilania. 4. Złącza i sygnały Wszystkie sygnały mikrokontrolera zostały wyprowadzone na dwa 32-pinowe dwurzędowe złącza (JP1 i JP2) 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 JP2 podano w tab.2. Ich opis przedstawiono w tab.3. PF6(ADC6/TD0) PF4(ADC4/TCK) PF2(ADC2) PF0(ADC0) AGND PE0(RXD0/PDI) PE2(XCK0/AIN0) PE4(OC3B/INT4) PE6(T3/INT6) PB0(SS) PB2(MOSI) PB4(OC0) PB6(OC1B) PG3(TOSC2) RESET GND 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 PF7(ADC7/TDI) PF5(ADC5/TMS) PF3(ADC3) PF1(ADC1) AREF AVCC PE1(TXD0/PDO) PE3(OC3A/AIN1) PE5(OC3C/INT5) PE7(IC3/INT7) PB1(SCK) PB3(MISO) PB5(OC1A) PB7(OC2/OC1C) PG4(TOSC1) VCC VCC PA1(AD1) PA3(AD3) PA5(AD5) PA7(AD7) PC7(A15) PC5(A13) PC3(A11) PC1(A9) PG1(RD) PD7(T2) PD5(XCK1) PD3(TXD1/INT3) PD1(SDA/INT1) Tabela 2. Złącza płytki. 6 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 GND PA0(AD0) PA2(AD2) PA4(AD4) PA6(AD6) PG2(ALE) PC6(A14) PC4(A12) PC2(A10) PC0(A8) PG0(W R) PD6(T1) PD4(IC1) PD2(RXD1/INT2) PD0(SCL/INT0) sygnał port A AD0-AD7 port B SS SCK MOSI MISO OC0-OC2/OC1C port C A8-A15 port D SCL/INT0 SDA/INT1 RXD1/INT2 wyprowadzenie opis JP2 pin 3-JP2 pin 10 linie adresów i danych JP1 JP1 JP1 JP1 JP1 we/wy wyboru SPI Slave Select zegar SPI dane SPI Master Out Slave In dane SPI Master In Slave Out Output Compare i PWM dla licznika TXD1/INT3 JP2 pin 26 IC1 XCK1 T1-T2 port E PDI JP2 pin 25 JP2 pin 24 JP2 pin 23-JP2 pin 22 TXD0/PDO JP1 pin 13 XCK0/AIN0 JP1 pin 14 OC3A/AIN1 JP1 pin 15 OC3B/INT4 JP1 pin 16 OC3C/INT5 JP1 pin 17 T3/INT6 IC3/INT7 JP1 pin 18 JP1 pin 19 port F ADC0-ADC3 ADC4/TCK-ADC7/TDI port G WR RD ALE TOSC2-TOSC1 AREF AGND AVCC RESET VCC GND pin pin pin pin pin 20 21 22 23 24-JP1 pin 27 JP2 pin 19-JP2 pin 12 linie adresowe, port wyjściowy JP2 pin 29 JP2 pin 28 JP2 pin 27 przewanie zewnętrzne/TWI Serial Clock przewanie zewnętrzne/TWI Serial Data przewanie zewnętrzne/UART1 pin odbiorczy przewanie zewnętrzne/UART1 pin nadawczy Timer/Counter Input Capture Trigger we/wy zegara zewnętrznego wejście Timer/Counter JP1 pin 12 UART0 pin odbiorczy/programowane we danych UART0 pin nadawczy/programowane wy danych we/wy zagara zewnętrznego/Analog Comparator Positive Input Output Compare i wy A PWM/Analog Comparator Negative Input Output Compare i wy B PWM/przerwanie zewnętrzne Output Compare i wy C PWM/przerwanie zewnętrzne we zegara/przerwanie zewnętrzne Timer/Counter Input Capture Trigger/przerwanie zewnętrzne JP1 pin 8-JP1 pin 5 JP1 pin 4-JP1 pin 1 we przetwornika ADC we przetwornika ADC/JTAG JP2 pin 21 JP2 pin 20 JP2 pin 11 sygnał zapisu do pamięci zewnętrznej W R sygnał odczytu z pamięci zewnętrznej RD załączenie zatrzasku do pamięci zewnętrznej RTC Oscillator Timer/Counter napięcie odniesienia (analogowe) masa analogowa zasilanie analogowe restart zasilanie masa JP1 JP1 JP1 JP1 JP1 JP1 JP1 pin pin pin pin pin pin pin 28-JP1 pin 29 9 10 11 30 31, JP2 pin 2 32, JP2 pin 1 Tabela 3. Sygnały płytki. 7 Rozmieszczenie sygnałów złącza JP3 podano w tab.4, a złącza JP4 w tab.5. PB2 1 3 5 7 9 RESET PB1 PB3 2 4 6 8 10 VCC GND GND GND GND Tabela 4. Złącze ISP. PF4 PF6 PF5 VCC PF7 1 3 5 7 9 2 4 6 8 10 GND VCC RESET GND 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 128K Bytes In-System Programmable Flash, Rev.2467M-AVR-11/04. [2] J. Doliński Mikrokontrolery AVR w praktyce., Wydawnictwo BTC, Warszawa 2003. [3] A. Krysiak Programowanie mikrokontrolerów rodziny AVR. cz.1, Typoscript, Wrocław 2000. 8 Halszka Konieczek Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej ul. Janiszewskiego 11/17 50-372 Wrocław Niniejszy raport otrzymują: 1. OINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 1 egz. 3. Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 3 egz. Razem : Raport wpłynął do redakcji I-6 w czerwcu 2005 roku. 9 4 egz.