Programowanie mikrokontrolerów. 8 listopada 2007



Podobne dokumenty
Mikroprocesory i Mikrosterowniki

Mikroprocesory i Mikrosterowniki

Mikroprocesory i mikrosterowniki

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Wstęp. Opis ATMEGA128 MINI MODUŁ VE-APS-1406

Mikrokontroler AVR ATmega32 - wykład 9

Systemy wbudowane Mikrokontrolery

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Komunikacja w mikrokontrolerach. Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski

Programowanie mikrokontrolerów. 5 grudnia 2007

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Podstawy Techniki Mikroprocesorowej

Mikrokontrolery ośmiobitowe

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Aoi Ryuu. v2.0 moduł z mikroprocesorem Atmega169 dla makiety dydaktycznej Akai Kaba

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

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

Kurs obsªugi interfejsu I2C.


Mikrokontrolery AVR ATmega

Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i wbudowanym programatorem ISP

Mikrokontrolery AVR ATmega

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Projekt z przedmiotu Systemy Mikroprocesorowe w Automatyce Moduł z kontrolerem AtMega32, programator AVR ISP. Robert Kuczaj 6 marca 2007

Programowanie mikrokontrolerów. 3 stycznia 2008

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

2. Architektura mikrokontrolerów PIC16F8x... 13

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

INSTRUKCJA Płytka uruchomieniowa EvB 4.3 v3

Wykład 3. Przegląd mikrokontrolerów 8-bit: 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.

Wykład 2. Interfejsy I 2 C, OneWire, I 2 S

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Mikroprocesory i Mikrosterowniki

Podstawy Techniki Mikroprocesorowej

Wbudowane układy peryferyjne cz. 1 Wykład 7

MIKROKONTROLERY FIRMY ATMEL. dr inż. Wiesław Madej

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Cechy: - zaawansowana architektura AVR instrukcji wikszo jednocyklowych - 32 x 8-bit rejestry ogólnego przeznaczenia - moliwo pracy statycznej

Techniki mikroprocesorowe i systemy wbudowane

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

Instytut Teleinformatyki

Szkolenia specjalistyczne

micro Programator ISP mikrokontrolerów AVR zgodny z STK500v2 Opis Obs³ugiwane mikrokontrolery Wspó³praca z programami Podstawowe w³aœciwoœci - 1 -

Mikrokontrolery AVR Wprowadzenie

Architektura komputerów

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

ZL11ARM. Uniwersalna płyta bazowa

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

Magistrala I 2 C. Podstawy systemów mikroprocesorowych. Wykład nr 5 Interfejsy szeregowe c.d.

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

Charakterystyka mikrokontrolerów

Programowanie mikrokontrolerów. 8 listopada 2007

MIKROKONTROLERY I MIKROPROCESORY

MODUŁ UNIWERSALNY UNIV 3

Podstawy techniki mikroprocesorowej. Dr inż. Grzegorz Kosobudzki p.311a A-5. Tel

EC1000 KATALOG SYSTEMÓW STEROWANIA

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Dyrektywy asemblera. Składnia: etykieta:.dyrektywa argument. rezerwuje zasoby w SRAM początek segmentu kodu

ŚRODOWISKO PROTOTYPOWANIA SP AVR

Instrukcja uytkownika

Elementy składoweµc - przypomnienie

Instrukcja użytkownika

Programowanie mikrokontrolerów AVR

1. Struktura urządzeń z wykorzystaniem mikrokontrolerów...13

Pytka PicBoard2. Pytka prototypowa wspópracuje z programatorami JuPic, PicLoad, ICD, ICD2. Opis pytki

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

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Mikroprocesory i mikrosterowniki

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Sprawozdanie z projektu: Dalmierz optyczny

Programowanie mikrokontrolerów. 15 stycznia 2008

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

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

Dokumentacja mikrokontrolera Atmega16 firmy Atmel

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Sterowanie multipleksowe 4-cyfrowego wyświetlacza siedmiosegmentowego w oparciu o system przerwao mikrokontrolera ATmega16 w języku Asembler

Pamięci EEPROM w systemach mikroprocesorowych, część 2

11.Mikrokomputeryjednoukładowe

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

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

MikloBit ul. Cyprysowa 7/ Jaworzno. rev MB-JTAG-ICE debugger-programator

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

Opis funkcjonalny i architektura. Modu³ sterownika mikroprocesorowego KM535

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Stanowisko laboratoryjne dla mikrokontrolera Atmega16 firmy Atmel

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Moduł mikrokontrolera PROTON (v1.1)

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

dokument DOK wersja 1.0

Programowanie mikrokontrolerów

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

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

Transkrypt:

Programowanie mikrokontrolerów Marcin Engel Marcin Peczarski 8 listopada 2007

Co to jest mikrokontroler? Ukªad integruj cy w sobie nast puj ce elementy (w zale»no±ci od modelu): jednostk obliczeniow (8-, 16- lub nawet 32-bitow ) pami danych (SRAM, EEPROM) pami programu (FLASH, ROM, EEPROM) ukªady taktuj ce (RC) kontroler przerwa«liczniki przetworniki analogowo-cyfrowe przetworniki cyfrowo-analogowe interfejsy szeregowe (UART, SPI, I2C, 1WIRE, USB) ukªad nadzoruj cy (watchdog) zegar czasu rzeczywistego Mikrokontroler = komputer w jednym ukªadzie

Popularne mikrokontrolery PIC rmy Microchip Technology ukªady rodziny 68HC rmy Motorola (Freescale Semiconductor) Z8 rmy ZiLog ukªady AT89, AT90, AT91, AVR rmy Atmel...

Mikrokontrolery rmy Atmel rodzina AT89... rodzina AT90... rodzina AT91... procesory serii ATmega... procesory serii ATtiny... procesory ARM...

Jak zacz zabaw? trzeba mie mikrokontroler (ATmega16 kosztuje ok. 9PLN) oraz troszk innych elementów elektronicznych (diody LED, mikroswitche, rezystory, kondensatory, zª cza itp). Ponadto nale»y przygotowa : programator (cena ok. 26 PLN za gotowy, poni»ej 5 PLN przy samodzielnym monta»u) komputer z oprogramowaniem (darmowe programy PonyProg, AVRStudio, VMlab,... ) A tak»e: laminat, wytrawiacz, lutownic i inne narz dzia lub pªytk uniwersaln, lutownic lub pªytk stykow lub

Zestaw uruchomieniowy Umo»liwia szybkie tworzenie ukªadów testowych. Zawiera na pokªadzie wszystkie niezb dne podzespoªy, które ª czy si za pomoc przewodów.

Zestaw uruchomieniowy typowe wyposa»enie wy±wietlacz LCD lub/i segmentowy LED przyciski lub klawiatura matrycow ukªad zasilaj cy, kwarc, zª cze programatora

Zestaw uruchomieniowy typowe wyposa»enie wyprowadzenia interfejsów szeregowych (z ew. konwersj napi ) ciekawe peryferia (termometr, odbiornik i nadajnik IR, akumulator, pami FLASH, zegar RTC... )

Poznajemy ATmega16 (XCK/T0) PB0 (T1) PB1 (INT2/AIN0) PB2 (OC0/AIN1) PB3 (SS) PB4 (MOSI) PB5 (MISO) PB6 (SCK) PB7 RESET VCC GND XTAL2 XTAL1 (RXD) PD0 (TXD) PD1 (INT0) PD2 (INT1) PD3 (OC1B) PD4 (OC1A) PD5 (ICP1) PD6 PA0 (ADC0) PA1 (ADC1) PA2 (ADC2) PA3 (ADC3) PA4 (ADC4) PA5 (ADC5) PA6 (ADC6) PA7 (ADC7) AREF GND AVCC PC7 (TOSC2) PC6 (TOSC1) PC5 (TDI) PC4 (TDO) PC3 (TMS) PC2 (TCK) PC1 (SDA) PC0 (SCL) PD7 (OC2)

Budujemy pierwszy ukªad Na pocz tku podª czymy: zasilanie (nó»ki VCC, GND) ukªad reset (nó»ka RESET) przygotujemy zª cze programatora (nó»ki MOSI, MISO, SCK, RESET, VCC, GND) Wyja±nienia: VCC na schematach oznacza +zasilania (inne oznaczenie: VDD) GND to - zasilania oznaczenie RESET oznacza odwrócon logik (tj. reset jest nieaktywny, je±li podamy wysokie napi cie)

Zasilanie ukªad ATmega16 wymaga zasilania napi ciem staªym z zakresu 4.5 5.5V (wersja 16L od 2V7) dzisiaj zastosujemy 5V dostarczane przez stabilizator napi cia 7805 1

Zasilanie, cd. schemat poª cze«znajduje si w nocie katalogowej na pªytce testowej znajduje si mostek prostowniczy i stabilizator o regulowanym napi ciu wyj±ciowym

Ukªad resetu podczas normalnej pracy na nó»ce RESET powinien by stan wysoki chcemy móc r czne zresetowa urz dzenie (np. przyciskiem) programator równie» musi mie mo»liwo± zresetowania ukªadu Rozwi zanie:

Programator skªada si z dwóch cz ±ci: sprz t (kabelek) i oprogramowanie dwa tryby programowania: równolegªy i szeregowy w±ród nich te» istnieje wiele ró»nych rozwi za«programator równolegªy: jest szybki daje (prawie) peªny dost p do mikrokontrolera jest niezale»ny od ukªadu, w którym zastosowano mikrokontroler jest skomplikowany i drogi Programator szeregowy: umo»liwia programowanie bez wyjmowania mikrokontrolera z ukªadu (In-System Programming) jest tani i prosty w budowie

Programator szeregowy przyª czany do nó»ek MOSI, MISO, SCK, RESET mikrokontrolera pobiera zasilanie z programowanego ukªadu wspóªpracuje z darmowym oprogramowaniem PonyProg Standardy zª cza programatora ISP: ATMEL KANDA

Co mo»emy podª czy do mikrokontrolera? Jako wyj±cie: diody LED wy±wietlacz segmentowy LED wy±wietlacz LCD komputer (np. po zª czu szeregowym) inny ukªad (np. po zª czu I 2 C) nadajnik IR lub radiowy...

Co mo»emy podª czy do mikrokontrolera? Jako wej±cie: przycisk klawiatur matrycow klawiatur PC lub myszk inne ukªady komputer odbiornik IR, termometr analogowy itp.

Diody LED

Charakterystyka diody LED typowe parametry pracy pr d od kilku do kilkudziesi ciu ma, spadek napi cia od 1.5V do ponad 3V jasno± diody zale»y od pr du przez ni pªyn cego»ywotno± te»! nadmierny pr d mo»e uszkodzi diod

Jak przyª czy diod do mikrokontrolera? prawo Ohma: U = RI je±li chcemy, aby przez diod pªyn ª pr d 5mA, to sprawdzamy, jaki b dzie spadek napi cia na niej wª czamy w obwód rezystor dobrany tak, aby spadki napi cia na nim i na diodzie sumowaªy si do napi cia zasilania Na przykªad: je±li spadek napi cia na diodzie przy pr dzie 5mA wynosi 1.7V, a napi cie zasilania 5V, to takie parametry pracy zagwarantuje rezystor o warto±ci: (5V 1.7V )/5mA = 3.3V /5mA = 660Ω

Dioda - podsumowanie przewodzi pr d w jednym kierunku (i wtedy ±wieci) wymaga ograniczenia pr du za pomoc rezystora W zestawie uruchomieniowym: nie trzeba u»ywa rezystorów (bo s wlutowane) po poª czeniu diody z portem procesora dioda b dzie ±wieci po podaniu stanu 1 na odpowiedni nó»k W symulatorze: nie trzeba u»ywa rezystorów (ale b d problemy z ogl daniem przebiegów) dioda b dzie ±wieci po podaniu stanu 0 na odpowiedni nó»k (symulator)

Porty mikrokontrolera ka»da nó»ka mo»e by skongurowana jako wyj±cie lub jako wej±cie (domy±lnie jest wej±ciem) mamy cztery 8-bitowe porty: PA, PB, PC, PD je±li wyprowadzenie jest skongurowane jako wyj±cie, to jego stan zale»y od warto±ci odpowiedniego bitu rejestru we/wy PORTA, PORTB, PORTC lub PORTD, przy czym: 1 oznacza stan wysoki (napi cie zasilania) 0 oznacza stan niski (napi cie = 0V) wi kszo± wyprowadze«ma tak»e drug funkcj kierunek dziaªania portu mo»na dowolnie zmienia w trakcie pracy mikrokontrolera do ustalenia kierunku pracy portu sªu» rejestry we/wy DDRA, DDRB, DDRC, DDRD, przy czym: 1 oznacza wyj±cie 0 oznacza wej±cie

rodowisko VMLab tworzymy nowy projekt podgl damy rejestry PORTx oraz DDRx podª czamy wirtualne diody

Rejestry 7 0 Addr. $00 R0 R1 $01 R2 $02 R13 $0D General R14 $0E Purpose R15 $0F Working R16 $10 egisters R17 $11 R26 $1A X-register Low Byte R27 $1B X-register High Byte R28 $1C Y-register Low Byte R29 $1D Y-register High Byte R30 $1E Z-register Low Byte R31 $1F Z-register High Byte 32 rejestry 8-bitowe: R0,..., R31 rejestry R26,..., R31 mog by u»ywane do 16-bitowego adresowania po±redniego pami ci danych (para rejestrów R26:R27, to rejestr X, R28:R29 to rejestr Y, R30:R31 to rejestr Z), np.: ld R16, X rejestr Z mo»na stosowa do adresowania po±redniego pami ci programu (rozkazy LPM, SPM)

Przerwania kod programu rozpoczyna si od wektora przerwa«zgªoszenie przerwania powoduje sprz towe: odªo»enie na stos adresu powrotu (ale nie rejestru stanu!) zablokowanie przerwa«poprzez wyzerowanie bitu I w rejestrze stanu SREG wykonanie rozkazu spod odpowiedniego adresu w pami ci programu program obsªugi przerwania musi ko«czy si rozkazem RETI, który wª cza przerwania

Vector No. Program Address Source Interrupt Definition 1 $000 RESET External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset, and JTAG AVR Reset 2 $002 INT0 External Interrupt Request 0 3 $004 INT1 External Interrupt Request 1 4 $006 TIMER2 COMP Timer/Counter2 Compare Match 5 $008 TIMER2 OVF Timer/Counter2 Overflow 6 $00A TIMER1 CAPT Timer/Counter1 Capture Event 7 $00C TIMER1 COMPA Timer/Counter1 Compare Match A 8 $00E TIMER1 COMPB Timer/Counter1 Compare Match B 9 $010 TIMER1 OVF Timer/Counter1 Overflow 10 $012 TIMER0 OVF Timer/Counter0 Overflow 11 $014 SPI, STC Serial Transfer Complete 12 $016 USART, RXC USART, Rx Complete 13 $018 USART, UDRE USART Data Register Empty 14 $01A USART, TXC USART, Tx Complete 15 $01C ADC ADC Conversion Complete 16 $01E EE_RDY EEPROM Ready 17 $020 ANA_COMP Analog Comparator 18 $022 TWI Two-wire Serial Interface 19 $024 INT2 External Interrupt Request 2 20 $026 TIMER0 COMP Timer/Counter0 Compare Match 21 $028 SPM_RDY Store Program Memory Ready

Pierwszy program.cseg.org 0 jmp start.cseg.org 42 start: ldi r16, 0b00001111 out DDRA, r16 ; nozki PA0..PA3 pracuja jako wyjscia ldi r16, 0B out PORTA, r16 petla: rjmp petla

Architektura mikrokontrolera ATmega16 procesor o zredukowanym zbiorze rozkazów (RISC) architektura harwardzka (odr bne pami ci i magistrale dla programu i danych) 16KB pami ci programu (pami ash) 1KB pami ci danych (SRAM) 32 rejestry ogólnego przeznaczenia 64 rejestry wej±cia-wyj±cia dziaªanie podukªadów 512 bajtów pami ci nieulotnej (EEPROM) 3 liczniki 21 przerwa«(o ustalonej kolejno±ci obsªugi) interfejsy szeregowe: USART, I2C 8-kanaªowy, 10-bitowy przetwornik A/C

Architektura, schemat blokowy Data Bus 8-bit Flash Program Memory Program Counter Status and Control Instruction Register 32 x 8 General Purpose Registrers Interrupt Unit SPI Unit Instruction Decoder Control Lines Direct Addressing Indirect Addressing ALU Watchdog Timer Analog Comparator I/O Module1 Data SRAM I/O Module 2 I/O Module n EEPROM I/O Lines

Rejestry 7 0 Addr. $00 R0 R1 $01 R2 $02 R13 $0D General R14 $0E Purpose R15 $0F Working R16 $10 egisters R17 $11 R26 $1A X-register Low Byte R27 $1B X-register High Byte R28 $1C Y-register Low Byte R29 $1D Y-register High Byte R30 $1E Z-register Low Byte R31 $1F Z-register High Byte 32 rejestry 8-bitowe: R0,..., R31 rejestry R26,..., R31 mog by u»ywane do 16-bitowego adresowania po±redniego pami ci danych (para rejestrów R26:R27, to rejestr X, R28:R29 to rejestr Y, R30:R31 to rejestr Z), np.: ld R16, X rejestr Z mo»na stosowa do adresowania po±redniego pami ci programu (rozkazy LPM, SPM)

Rejestry 7 0 Addr. $00 R0 R1 $01 R2 $02 R13 $0D General R14 $0E Purpose R15 $0F Working R16 $10 egisters R17 $11 R26 $1A X-register Low Byte R27 $1B X-register High Byte R28 $1C Y-register Low Byte R29 $1D Y-register High Byte R30 $1E Z-register Low Byte R31 $1F Z-register High Byte tylko rejestry R16,..., R31 mo»na stosowa w rozkazach adresowania natychmiastowego, np.: ldi R16, 123 subi R18, 5 przesªania warto±ci s mo»liwe mi dzy ka»d par rejestrów: mov R12, R17 jednostka arytmetyczno-logiczna potra wykonywa operacje na danych w dowolnych rejestrach, np.: add R12, R17

Jednostka arytmetyczno-logiczna wykonuje rozkazy arytmetyczne mi dzy rejestrami w jednym cyklu zegara wykonuje rozkazy arytmetyczne mi dzy rejestrem a danymi natychmiastowymi w jednym cyklu zegara wspiera operacje na liczbach bez znaku, ze znakiem (notacja uzupeªnieniowa do dwóch) oraz uªamkowych (staªoprzecinkowych) rejestr stanu (SREG) jest uaktualniany po ka»dej operacji ALU:

Rejestr stanu Bit 7 6 5 4 3 2 1 0 I T H S V N Z C SREG Read/Write R/W R/W R/W R/W R/W R/W R/W R/W Initial Value 0 0 0 0 0 0 0 0 bit I wª czone przerwania bit T do przechowania dowolnego bitu (rozkazy BLD, BST) bit H wyst piªo przeniesienie z mªodszego póªbajta do starszego bit V nadmiar w arytmetyce uzupeªnieniowej do dwóch bit N wynikiem operacji jest liczba ujemna bit S bit znaku bit Z wynikiem operacji jest zero bit C przeniesienie z najstarszego bitu

Pami programu Application Flash Section Boot Flash Section $0000 $1FFF ma 16KB jest podzielona na dwie cz ±ci z niezale»n ochron dost pu: boot loader oraz cz ± aplikacji wi kszo± kodów rozkazów jest 2-bajtowa, ale s te» rozkazy 4-bajtowe program mo»e modykowa sam siebie

Pami wej±cia/wyj±cia I/O Registers $00 $01 $02... $3D $3E $3F zawiera 64 rejestry wej±cia-wyj±cia odpowiedzialne m.in. za konguracje poszczególnych ukªadów wej±cia-wyj±cia (m.in. rejestry PORTx, DDRx, SP, SREG) adresowane od $00 do $3F zapis do nich odbywa si za pomoc rozkazu OUT, a odczyt za pomoc rozkazu IN na pierwszych 32 rejestrach we/wy mo»na bezpo±rednio ustawia bity (rozkazy SBI, CBI) i je sprawdza (rozkazy SBIS, SBIC)

Przerwania kod programu rozpoczyna si od wektora przerwa«zgªoszenie przerwania powoduje sprz towe: odªo»enie na stos adresu powrotu (ale nie rejestru stanu!) zablokowanie przerwa«poprzez wyzerowanie bitu I w rejestrze stanu SREG wykonanie rozkazu spod odpowiedniego adresu w pami ci programu program obsªugi przerwania musi ko«czy si rozkazem RETI, który wª cza przerwania

Vector No. Program Address Source Interrupt Definition 1 $000 RESET External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset, and JTAG AVR Reset 2 $002 INT0 External Interrupt Request 0 3 $004 INT1 External Interrupt Request 1 4 $006 TIMER2 COMP Timer/Counter2 Compare Match 5 $008 TIMER2 OVF Timer/Counter2 Overflow 6 $00A TIMER1 CAPT Timer/Counter1 Capture Event 7 $00C TIMER1 COMPA Timer/Counter1 Compare Match A 8 $00E TIMER1 COMPB Timer/Counter1 Compare Match B 9 $010 TIMER1 OVF Timer/Counter1 Overflow 10 $012 TIMER0 OVF Timer/Counter0 Overflow 11 $014 SPI, STC Serial Transfer Complete 12 $016 USART, RXC USART, Rx Complete 13 $018 USART, UDRE USART Data Register Empty 14 $01A USART, TXC USART, Tx Complete 15 $01C ADC ADC Conversion Complete 16 $01E EE_RDY EEPROM Ready 17 $020 ANA_COMP Analog Comparator 18 $022 TWI Two-wire Serial Interface 19 $024 INT2 External Interrupt Request 2 20 $026 TIMER0 COMP Timer/Counter0 Compare Match 21 $028 SPM_RDY Store Program Memory Ready

Kiedy pojawia si przerwanie RESET po wª czeniu zasilania (Power-On Reset) VCC V POT RESET V RST TIME-OUT t TOUT INTERNAL RESET

Kiedy pojawia si przerwanie RESET na skutek resetu zewn trznego CC

Kiedy pojawia si przerwanie RESET przy spadku napi cia (brown-out detection) V CC V BOT- V BOT+ RESET TIME-OUT t TOUT INTERNAL RESET

Kiedy pojawia si przerwanie RESET przy braku wyzerowania ukªadu watchdog CC CK

Co si dzieje po resecie? ustawienie rejestrów we/wy na warto±ci pocz tkowe rozpocz cie wykonania programu od instrukcji znajduj cej si pod adresem 0 (przerwanie 0)

Pierwszy program.cseg.org 0 jmp start.cseg.org 42 start: ldi r16, 0b00001111 out DDRA, r16 ; nozki PA0..PA3 pracuja jako wyjscia ldi r16, 0B out PORTA, r16 petla: rjmp petla

Pami danych ma rozmiar 1KB adresowana od $0060 do $45F pami ulotna na adresy $0000 do $005F s wirtualnie odwzorowane rejestry ogólnego przeznaczenia i pami wej±cia-wyj±cia, np.: rozkazy out 10, r18 oraz st 30, r18 maj ten sam efekt! R0 R1 R2... R29 R30 R31 I/O Registers $00 $01 $02... $3D $3E $3F $0000 $0001 $0002... $001D $001E $001F $0020 $0021 $0022... $005D $005E $005F Internal SRAM $0060 $0061... $045E $045F

Tryby adresowania natychmiastowe: ldi r16, 3 bezpo±rednie: lds r1, 100 po±rednie: ld r1, X po±rednie z postinkrementacj : ld r1, X+ po±rednie z predekrementacj : ld r1, -X po±rednie z przemieszczeniem: ld r1, Y+2 po±rednie pami ci programu: lpm

Stos znajduje si w pami ci danych przed wykonaniem jakiejkolwiek operacji na stosie u»ytkownik musi ustawi dwubajtowy rejestr SP w pami ci we/wy stos ro±nie w dóª pami ci (od wysokich adresów do niskich) SP pokazuje zawsze na pierwszy wolny bajt pod wierzchoªkiem stosu rozkaz PUSH odkªada jeden bajt na stos, a POP zdejmuje jeden bajt ze stosu wywoªanie podprogramu (RCALL, CALL) odkªada dwa bajty (adres powrotu) na stos, a powrót z niego (RET) zdejmuje dwa bajty

Typowa inicjacja stosu ldi r16, high (RAMEND) out SPH, r16 ldi r16, low (RAMEND) out SPL, r16

Pami nieulotna stanowi odr bn przestrze«adresow dost p do niej odbywa si za pomoc specjalnych rejestrów we/wy (EEAR, EEDR, EECR) protokóª dost pu do tej pami ci pó¹niej

Sposób podª czania przycisku nó»ka musi by ustawiona jako wej±cie (bit 1 DDRA wyzerowany) odczyt stanu nó»ki odbywa si poprzez rejestr we/wy PINA,... wysoki stan nó»ki (1-szy bit PINA = 1) oznacza przycisk otwarty

Sposób podª czania przycisku nó»ka musi by ustawiona jako wej±cie (bit 1 DDRA wyzerowany) wewn trzny rezystor podci gaj cy musi by wª czony (bit 1 PORTA ustawiony) odczyt stanu nó»ki odbywa si poprzez rejestr we/wy PINA,... wysoki stan nó»ki (1-szy bit PINA = 1) oznacza przycisk otwarty

Przyciski w VMLab

Zjawisko drgania styków w rzeczywisto±ci wci±ni cie przycisku powoduje mikrodrgania stan stabilizuje si po pewnym czasie

Symulacja tego zjawiska w VMLab P_left NRZ(2m) PA1 + KEY_4 "01010100000000000000000000000000001010101" + RESET "1"

Algorytm obsªugi przycisku bez powtarzania if (klawisz wcisniety) then begin wait(t); if (klawisz wcisniety) then begin obsluz zdarzenie; while (klawisz wcisniety) wait(t); end end

I jego realizacja ; Czy klawisz wcisniety? in r16, PINA andi r16, 0b00000010 brne key_end ; Tak, poczekaj na ustabilizowanie stanu. ldi r25, high(key_stabilization_time) ldi r24, low(key_stabilization_time) rcall wait ; Czy klawisz nadal wcisniety? in r16, PINA andi r16, 0b00000010 brne key_end ; Tak, wykonaj procedure obslugi. rcall key

Realizacja, cd. key_wait: ; Czy klawisz nadal wcisniety? in r16, PINA andi r16, 0b00000010 brne key_end ; Tak, czekaj jeszcze. ldi r25, high(key_stabilization_time) ldi r24, low(key_stabilization_time) rcall wait brne key_wait

Algorytm obsªugi przycisku z powtarzaniem if (klawisz wcisniety) then begin wait(t); while (klawisz wcisniety) then begin obsluz zdarzenie; licz := 0; while (klawisz wcisniety and (licz < timeout)) begin wait(t); licz := licz + 1 end zmodyfikuj (timeout) end end