Architektury počítačů a paralelných systémů Atmega 32 Zpracoval: Doc. Ing. Lačezar Ličev, CSc.
Vlastnosti mikrokontroleru ATmega32 • 8-bitový RISC mikrokontroler. • Výkon - 16 MIPS/16 MHz - 12x rychlejší než standardní x51 na stejné taktovací frekvenci. • Plně statická funkce. Interní kalibrovaný RC oscilátor. • Dvou-cyklová násobička na čipu. • 131 výkonných instrukcí, většinou jedno-cyklových. • 32 osmibitových registrů pro obecné použití. • 32kB programová FLASH paměť, programovatelná přímo v aplikaci s možností uzamknutí, 10.000 zápisových/mazacích, cyklů s volitelnou velikostí bootloader sekce.
Vlastnosti mikrokontroleru ATmega32 • 1kB EEPROM paměť, 100.000 zápisových/mazacích cyklů. • 2kB interní SRAM paměť. • JTAG rozhraní s možností programování a ladění. • 8-kanálový 10-bitový A/D převodník, analogový komparátor. • Bytově orientované sériové rozhraní (TWI). • Dvě programovatelné USART komunikační rozhraní. • Master/slave SPI sériové rozhraní. • Dva 8-bitové a jeden 16-bitové čítače, s vlastní před-děličkou.
Vlastnosti mikrokontroleru ATmega32 • Dva 8-bitové PWM kanály. • 4 PWM kanálů s programovatelným rozlišením 2-16 bitů. • Programovatelný Watch-dog časovač s oscilátorem na čipu. • Čítač reálného času RTC s odděleným oscilátorem. • 6 režimů snížené spotřeby. • 32 programovatelných I/O vývodů. • Napájecí napětí 4.5-5.5V.
ATmega32
Zapojení AVR-KITu
Podpora Pro vývoj aplikací lze použít vývojová prostředí různých výrobců a také systém AVR Studio – volné dostupné na stránkách firmy Atmel. Programování lze provádět volně dostupný softwarem.
Po rozbalení archívu „avr-kit.zip“ vznikne adresář s obsahem ./avrkit.exe > Program pro programování AVR Kitu ./avr-kit > Skupina projektů pro AVR Studio5 ./avrkit > Adresář s knihovnou avrkit ./leds > Adresář s projektem pro LED diody ./i2c > Adresář s projektem pro sběrnici i2c ./demo > Adresář s demo projekty
Obsah adresáře - avrkit ./avrkit.c > Zdrojový kód knihovny avrkit ./avrkit.h > Hlavičkový soubor knihovny avrkit
Obsah adresáře - leds ./leds.avrgccproj > Projekt AVR Studia ./leds.c > Zdrojový kód programu leds ./Debug > Adresář pro výstupní soubory ./Release > Adresář pro výstupní soubory
Obsah adresáře - i2c ./i2c.avrgccproj > Projekt AVR Studia ./i2c.c > Zdrojový kód programu i2c ./Debug > Adresář pro výstupní soubory ./Release > Adresář pro výstupní soubory
Obsah adresáře - demo ./demoleds.hex > Demo program pro LEDky ./demo8x8.hex > Demo program pro led displej ./demoi2c.hex > Demo program pro sbìrnici i2c
ATmega32 - 4 V/V porty (PA, PB, PC a PD) Konfigurace portů (A, B, C a D) pomoci registrů: DDRx - zápisem log. 1 na konkrétní bit tohoto registru určíme, že daný pin bude výstupní a pří log. 0 bude vstupní. PORTx - když je pin definovaný jako vstupní a v reg. PORTx je definována log.1 je tento pin udržován v klidovém stavu na hodnotu 1. Při log. 0 zapsané do reg. PORTx a když je pin definován jako výstupní určuje reg. PORTx log. hodnotu na konkrétním pinu. PINx - Zapsáním log. 1 na pin tohoto registru nastaví log. 1 na konkrétním pinu nezávisle na registru DDRx. Pokud je port nastaven jako vstupní lze pomocí registru PINx zjistit aktuální stav na portu.
Postup při programování mikropočítače AVR-KITu Aktivace BOOTLoader - stlačením tlačítka PIND4, pak stlačením a uvolnění tlačítka RESET - procesor se uvede do módu programování paměti FLASH - Sviti LED dioda připojenou na PIND2. Restart procesoru - stlačení a uvolnění tlačítka RESET. Po ukončení programování program avrkit.exe zůstává aktivní a je připraven vypisovat data, které bude mikropočítač zapisovat na sériový port pomocí funkce printf. Nechcete-li tuto funkci programu avrkit.exe využívat je ji možné vypnou parametrem -n.
Programování AVR-KITu program avrkit.exe (archív avrkit.zip). avrkit.exe -h -h show this help -d serial port device (def: 'COM1') -e erase AVR flash only -l list available COM ports -n no terminal mode after programming -s show AVR flash only -t terminal mode only -v verify AVR flash memory only -x show HEX file only avrkit.exe -d COM3 demoleds.hex
Architektury počítačů a paralelných systémů Cvičení na: Atmel EVMS-mega128 Zpracoval: Doc. Ing. Lačezar Ličev, CSc.
Vlastnosti vývojové desky • Obsahuje RISC MCU Atmel ATmega128-16AI TQFP64 • Pro vytváření programového kódu - Atmel AVR Studio • Napájení: • Power konektor (např. z wall adapteru) • USB (chráněno SMD tavnou vyměnitelnou pojistkou) • Možnosti programování mikrokontroleru: • ISP či JTAG programovací rozhraní (JTAG ladění kódu) • USB komunikační rozhraní (bootloader-u MCU)
Vlastnosti vývojové desky Uživatelská rozhraní: • 4 LED diody • 8 tlačítek • Multiplexovaný sedmisegmentový LED display (4 digity) • LCD display (2x 16 znaků, podsvětlený, odnímatelný) • Komunikační rozhraní: • RS-232 (canon 9 konektor) • USB (konektor typu B) • SPI (pinová lišta) • I2C (pinová lišta)
Vlastnosti vývojové desky Ostatní rozhraní: • 7 univerzálních vstupů/výstupů (pinová lišta) • 2 ADC vstupy/výstupu ref. napětí (pinová lišta) • Rozhraní pro připojení externí paměti • Piny umožňující napájení připojených modulů napětím +5V
Vlastnosti vývojové desky Deska dále obsahuje: • 5V napěťový regulátor • Nastavitelnou napěťovou referenci pro interní AD • Krystal 14.74567MHz v patici - hlavní zdroj hod. signálu • Krystal 32.768kHz pro RTC • Piezoměnič bez vlastního budiče (beeper) • Trimr pro nastavení kontrastu LCD displeje • Resetovací tlačítko • Rozměry desky(v x š x d): 25.0mm x 146.4mm x 68.0mm
Vlastnosti mikrokontroleru ATmega128-16AI TQFP64 • 8-bitový RISC mikrokontroler. • Výkon - 16 MIPS/16 MHz - 12x rychlejší než standardní x51 na stejné taktovací frekvenci. • Plně statická funkce. Interní kalibrovaný RC oscilátor. • Dvou-cyklová násobička na čipu. • 133 výkonných instrukcí, většinou jedno-cyklových. • 32 osmibitových registrů pro obecné použití. • 128kB programová FLASH paměť, programovatelná přímo v aplikaci s možností uzamknutí, 10.000 zápisových/mazacích, cyklů s volitelnou velikostí bootloader sekce.
Vlastnosti mikrokontroleru ATmega128-16AI TQFP64 • 4kB EEPROM paměť, 100.000 zápisových/mazacích cyklů. • 4kB interní SRAM paměť. • JTAG rozhraní s možností programování a ladění. • 8-kanálový 10-bitový A/D převodník, analogový komparátor. • Bytově orientované sériové rozhraní (TWI). • Dvě programovatelné USART komunikační rozhraní. • Master/slave SPI sériové rozhraní. • Dva 8-bitové a dva 16-bitové čítače, s vlastní před-děličkou.
Vlastnosti mikrokontroleru ATmega128-16AI TQFP64 • Dva 8-bitové PWM kanály. • 6 PWM kanálů s programovatelným rozlišením 2-16 bitů. • Programovatelný Watch-dog časovač s oscilátorem na čipu. • Čítač reálného času RTC s odděleným oscilátorem. • 6 režimů snížené spotřeby. • 53 programovatelných I/O vývodů. • Napájecí napětí 4.5-5.5V.
Podpora Pro vývoj aplikací lze použít vývojová prostředí různých výrobců a také systém AVR Studio – volné dostupné na stránkách firmy Atmel. Programování lze provádět volně dostupný softwarem.
Stručný popis Vývojový modul obsahuje RISC mikrokontroler vývojové řady AVR firmy Atmel s označením Atmel EVMS-mega128. Maximálním výkon.
Atmel EVMS-mega128
Atmel EVMS-mega128
Atmel EVMS-mega128
Atmel EVMS-mega128
Blokové schéma
Napájení
Jumper JP PWR
Sériové rozhraní RS-232 JP UART – 1
Význam vývodů konektoru RS 232 (UART)
Logická vazba mezí tlačítky a MCU
LED - display
Řídící signály a pozicí LED display
LCD display a vývody MCU
Vývody ISP a JTAG
Nahrávání programu do MCU Vlastnosti vývojové desky
Programování MCU
Hlavička - 1 ;******************************************** ; Program : counter 0 ; Version : v1.0 ; Hardware : atmega128-16ai TQFP64 ; Xtall : 14.7456 MHz ; Author :
Hlavička – 2.1 Evms-mega128 v 1.0 board congiguration ;****************************************************************** ;Jumpers: ;Power ;depends on power supply used (REG or USB ;VREF ;Don`t care (for example 2.5v) ;LEE ; Don`t care ;UART1 ; Don`t care ; ;Connectors:
Hlavička – 2.2 Evms-mega128 v 1.0 board congiguration ;****************************************************************** ;Connectors: ;LCD display ;Don`t care ;Ext. memory ;Don`t care ;ADC ;Don`t care ;SPI ;Don`t care ;I2C ;Don`t care ;Misc ;Don`t care ;
Sekce include ;============ Includes ========== .NOLIST .include “m128def.inc” .LIST
Sekce konstant ;=========== Constants ========== .EQU BaudConst = 7 ; Baudova rychlost .EQU BuffLen = 8 ; Velikost bufferu
Sekce pojmenování registrů ;======= Register definitions ========= .def ZeroReg = r1 .def FFReg = r2 .def PDelReg = r16 .
Sekce pamětí SRAM ;========= Data Segment ========== .DSEG .Var .BYTE 1 ;1 bytova prom. na adr. Var1 .Buffer .BYTE 8 ;8 bytova prom. na adr. Buffer
Sekce EEPROM ;======== EEPROM segment ======= .ESEG ConstArr .DB 0x00, 0x00 ;definuje tabulku constant 0x00, 0x00 na adrese ConstArr
Sekce MAKER ;=========== MACROs ========== .MACRO INC_Z16 add ZL, @0 adc ZH, @1 .ENDM
Programová sekce ;========= Program segment ====== .CSEG .org 0x0000 ;určení adresy .ldi TmpReg, 0 ;instrukce CharTab .db 0x10, 0x02 ;definuje tab.konstant
Assembler … ARITHMETIC AND LOGIC INSTRUCTIONS: ADD Rd, Rr Add Two Registers Rd Rd + Rr Z,C,N,V,H 1 ADC Rd, Rr Add with Carry Two Registers Rd Rd + Rr + C Z,C,N,V,H 1 SUB Rd, Rr Subtract Two Registers Rd Rd - Rr Z,C,N,V,H 1 SUBI Rd, K Subtract Constant from Register Rd Rd - K Z,C,N,V,H 1 … BRANCH INSTRUCTIONS : RJMP k Relative Jump PC PC + k + 1 RCALL k Relative Subroutine Call PC PC + k + 1 RET Subroutine Return PC STACK …
Assembler DATA TRANSFER INSTRUCTIONS: LD Rd, Z Load Register Indirect Rd (Z) ST Z, Rr Store Register Indirect (Z) Rr MOV Rd, Rr Move between Registers Rd Rr … BIT AND BIT-TEST INSTRUCTIONS: SBI P, b Set Bit in I/O Register I/O(P,b) 1 CBI P, b Clear Bit in I/O Register I/O(P,b) 0 LSL Rd Logical Shift Left Rd(n+1) Rd(n), Rd(0) 0 Z,C,N,V 1 LSR Rd Logical Shift Right Rd(n) Rd(n+1), Rd(7) 0 Z,C,N,V 1
Výuková deska EVMS-mega128 v1.0 – Výukové příklady 1.0 - LEDs rotating light 0 1.1 - LEDs rotating light 1 2.0 - Buttons 0 3.0 - Beeper 0 3.1 - Beeper 1 4.0 - LED display 0 5.0 - LCD display 0 5.1 - LCD display 1 6.0 - UARTs 0
Architektury počítačů Cvičení na: EVM – ATmega8535 v 1.0 Zpracoval: Doc. Ing. Lačezar Ličev, CSc.
Vlastnosti vývojového modulu Obsahuje RISC-ový mikrokontroler Atmel ATmega8535-16JC(JI). Programování je možné provádět volně dostupným vývojovým softwarem. Mikrokontroler se programuje přímo na základové desce progr. kabelem. Modul obsahuje 4 sedmi-segmentové LED displeje, 8 LED diod a 8 tlačítek. Modul dále obsahuje odpojitelné sériové rozhraní RS-232.
Vlastnosti vývojového modulu Většina I/O vývodů MCU je přístupná, je možné připojit rozšiřující hardware. Zdrojem hodinového signálu je krystal 14.7456 MHz umístěný v patici. Pro vnitřní RTC obvod mikrokontroleru je na desce umistěný odpojitelný krystal 32.768 kHz. Mikrokontroler je možné resetovat tlačítkem RESET. Rozměry (v x š x d): 27mm x 114mm x 74mm
Vlastnosti mikrokontroleru ATmega8535-16JI 8-bitový RISC mikrokontroler. Výkon - 16 MIPS / 16 MHz - 12x rychlejší než standardní x51 na stejné taktovací frekvenci. Plně statická funkce. Dvou-cyklová násobička na čipu. 130 výkonných instrukcí, většinou jedno-cyklových.
Vlastnosti mikrokontroleru ATmega8535-16JI 32 osmibitových registrů pro obecně použití. 8kB programová FLASH paměť, programovatelná přímo v aplikaci s možností uzamknutí, 10.000 zápisových/mazacích cyklů. 512B EEPROM paměť, 100.000 zápisových/mazacích cyklů. 512B interní SRAM paměť. 8-kanálový 10-bitový A/D převodník, analogový komparátor. 4 PWM výstupy.
Vlastnosti mikrokontroleru ATmega8535-16JI Programovatelný USART. Master/slave SPI sériové rozhraní. Dva 8-bitové čítače, jeden 16-bitový. Programovatelní Watch-dog časovač. Čítač reálného času RTC. Tři režimy snížení spotřeby: active, idle a power-down. 32 programovatelných I/O vývodů. Napájecí napětí 4.5-5.5V
Použití základové desky Výuka mikroprocesorové techniky. Vestavěné řídící systémy (měření, řízení a regulace). Komunikace. Řízení motorů.
Podpora Pro vývoj aplikací lze použít vývojová prostředí různých výrobců a také systém AVR Studio – volné dostupné na stránkách firmy Atmel. Programování lze provádět volně dostupný softwarem.
Stručný popis Vývojový modul obsahuje RISC mikrokontroler vývojové řady AVR firmy Atmel s označením ATmega8535. Maximálním výkon 16MIPS.
Blokové schéma
Rozmístění konektorů a propojek
Napájení
Vývody rozšiřujících konektorů
Význam vývodů konektorů
Rozšiřující konektory CONx
Programovací rozhraní ISP
Používání LED-display
RS-232
Další použití Používání 8 LED diod. Používání tlačítek. Používání 4 sedmi-segmentových LED displejů. Používání sériového rozhraní RS-232.
Programování MCU
Hlavička ;******************************************** ; Program : Counter 0 ; Version : v1.0 ; Hardware : EVM-ATmega8535 v1.0 ; (Xtall 14.7456MHz) ; Author :
Short description ;********************************************* ; ----------------- ; Program shows on LED diodes actual state of all buttons (button down = lighting LED).
Výpis používaných souborů - Includes .NOLIST .include "m8535def.inc" .LIST
Constants
Register definitions ;======== Register definitions ========= .DEF ZeroReg = r1 .DEF TmpReg = r16 .DEF DispPos = r2 .DEF PDelReg = r21
Data segment ;=========DATA segment ========= .DSEG
EEPROM segment ;========== EEPROM segment ======= .ESEG
MACRO segment ;=========== MACROs ===========
PROGRAM segment ;========= PROGRAM segment ======= .CSEG
Interrupt vectors ;**************** Interrupt vectors ************* .ORG 0x0000 rjmp RESET ; Reset Handler rjmp EXT_INT0 ; External Interrupt … rjmp EXT_INT1 ; External Interrupt … .
Reset ;******************** Reset ******************* .ORG 0x0015 Reset: clr ZeroReg ldi TmpReg, low(RAMEND) ;Initialize … out SPL, TmpReg .
Unused interrupt vectors EXT_INT0: EXT_INT1: TIM2_COM: TIM2_OVF: TIM1_CAP: TIM1_COMA: . SPM_RDY: reti
M A I N ;********************* M A I N ********************** Main: rcall TestButtons ;Call subroutine TestButtons com Buttons ; Buttons <= not(Buttons) out PortC, Buttons ; PortC <= Buttons rjmp Main ; Jmp to Main
Podprogram - Delay ;************ Delay (PDelReg[ms]) **************** Delay1m: mov PDelReg2, PDelReg ; PDelReg2<=PDelReg ; Repeat Delay1m2: dec PDelReg0 ; Dec(PDelReg0) brne Delay1m2 ; Until PDelReg0 = 0 dec PDelReg1 ; Dec(PDelReg1) brne Delay1m0 ; Until PDelReg2 = 0 ret
Assembler … ARITHMETIC AND LOGIC INSTRUCTIONS: ADD Rd, Rr Add Two Registers Rd Rd + Rr Z,C,N,V,H 1 ADC Rd, Rr Add with Carry Two Registers Rd Rd + Rr + C Z,C,N,V,H 1 SUB Rd, Rr Subtract Two Registers Rd Rd - Rr Z,C,N,V,H 1 SUBI Rd, K Subtract Constant from Register Rd Rd - K Z,C,N,V,H 1 … BRANCH INSTRUCTIONS : RJMP k Relative Jump PC PC + k + 1 RCALL k Relative Subroutine Call PC PC + k + 1 RET Subroutine Return PC STACK …
Assembler DATA TRANSFER INSTRUCTIONS: LD Rd, Z Load Register Indirect Rd (Z) ST Z, Rr Store Register Indirect (Z) Rr MOV Rd, Rr Move between Registers Rd Rr … BIT AND BIT-TEST INSTRUCTIONS: SBI P, b Set Bit in I/O Register I/O(P,b) 1 CBI P, b Clear Bit in I/O Register I/O(P,b) 0 LSL Rd Logical Shift Left Rd(n+1) Rd(n), Rd(0) 0 Z,C,N,V 1 LSR Rd Logical Shift Right Rd(n) Rd(n+1), Rd(7) 0 Z,C,N,V 1