1 / 26

Rodzina AVR wykład 1

Rodzina AVR wykład 1. AVR 2 /26. Architektura AVR Przestrzenie adresowe Tryby adresowania.

wilmet
Télécharger la présentation

Rodzina AVR wykład 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rodzina AVRwykład 1

  2. AVR 2/26 Architektura AVRPrzestrzenie adresoweTryby adresowania

  3. AVR - architektura 3/26 • Cechy mikrokontrolerów AVR ATtiny2313/ATmega8515: • architektura typu Harvard RISC z przetwarzaniem potokowym; • 120 rozkazów wykonywanych głównie w jednym cyklu zegara; • 1024x16b/4096x16b pamięci FLASH programu, reprogramowalnej (104) równolegle lub szeregowo po zamontowaniu w układzie; • 128B/512B wewnętrznego SRAM danych; • 128B /512B wewnętrznego EEPROM (105) na dane konfiguracyjne; • 32 8-bitowe uniwersalne rejestry robocze; • 18/35 programowalnych linii we/wy, wyjścia o obciążalności 20mA, zgrupowanych w 3 / 5 portach;

  4. AVR - architektura 4/26 • Cechy mikrokontrolerów AVR ATtiny2313/ATmega8515: • napięcie zasilania: 1,8..5,5V przy 4MHz; 2,7..5,5V przy 10MHz; 4,5..5,5V przy 20MHz • wbudowany generator taktu fOSC=0..20MHz; • czas cyklu rozkazowego min 100ns (przy 10MHz); • obudowy:PDIP20/SOIC20/MLF20PDIP40/SOIC40/PLCC44/TQFP44/MLF44; • możliwość programowania w układzie interfejsem szeregowym SPI; • możliwość programowego auto-programowania; • mechanizm uruchomieniowy debugWIRE; • wbudowane układy RESETU i kontroli zasilania;

  5. AVR - architektura 5/26 • Cechy mikrokontrolerów AVR ATtiny2313/ATmega8515: • 1 8-bitowy timer/licznik z preskalerem; • 1 16-bitowy timer/licznik z preskalerem i układem porównująco-przechwytującym; • dwukierunkowy port szeregowy, asynchroniczny; • uniwersalny interfejs szeregowy (2- lub 3-przewodowy); • wbudowany generator PWM o rozdzielczości 8, 9 lub 10 bitów; • 4 wyjścia PWM; • wbudowany kontroler przerwań wewnętrznych i dwóch zewnętrznych; • wbudowany programowalny watchdog z własnym oscylatorem; • wbudowany komparator analogowy; • trzy tryby pracy z obniżonym poborem mocy; • możliwość dołączenia zewnętrznej pamięci danych (do 64928B).

  6. RESET XTAL1 XTAL2 BUFORY Vcc REJ.WEJ. PINA PAMIĘĆPROGRAMUFLASH 2kB / 8kB REJ.WYJ. PORTA OSCYLATOR SRAM 128B / 512B REJ.KIER. DDRA GND WATCHDOG UKŁAD TAKTUJĄCY WEWNĘTRZY OSCYLATOR PC REJ.KIERDDRA SP REJ.KONTROLNE PROCESORA REJESTRROZKAZU ZYX REJESTRY ROBOCZE BUFORY REJ.WEJ.PINA PA7 .. PA0 TIMERY/ LICZNIKI DEKODERROZKAZÓW UKŁAD PRZERWAŃ REJ.WYJ.PORTA 8 UKŁADSTERUJĄCY ALU EEPROM128B/512B REJ.KIERDDRC REJ. STANU USI/SPI BUFORY REJ.WEJ.PINC UKŁADPROGRAMOWANIA SPI slave UART PC7 .. PC0 REJ.WYJ.PORTC KOMP. AN. REJ.WYJ.PORTD REJ.WEJ.PIND REJ.KIERDDRD REJ.WYJ.PORTB REJ.WEJ.PINB REJ.KIERDDRB PINE BUFORY PORTE PE2 .. PE0 BUFORY BUFORY DDRE PD7PD6 .. PD0 PB7 .. PB0 AVR - architektura 6/26 Struktura blokowa układów: ATtiny2313/ATmega8515

  7. PD0 (RxD) PA2 (RESET/dW) VCC PB7(SCK/UCSK/PCINT7) PB6(MISO/DO/PCINT6) (RESET/dW) PA2 (RxD) PD0 (TxD) PD1 (XTAL2) PA1 (XTAL1) PA0 (INT0/CKOUT/XCK) PD2 (INT1) PD3 (T0) PD4 (T1/OC0B) PD5 GND VCC PB7(SCK/UCSK/PCINT7) PB6(MISO/DO/PCINT6) PB5(MOSI/DI/SDA/PCINT5) PB4(OC1B/PCINT4) PB3(OC1A/PCINT3) PB2(OC0A/PCINT2) PB1(AIN1/PCINT1) PB0(AIN0/PCINT0) PD6(ICP) 1 2 3 4 5 6 7 8 9 10 20 19 18 17 16 15 14 13 12 11 (TxD) PD1 (XTAL2) PA1 (XTAL1) PA0 (INT0/CKOUT/XCK) PD2 (INT1) PD3 PB5(MOSI/DI/SDA/PCINT5) PB4(OC1B/PCINT4) PB3(OC1A/PCINT3) PB2(OC0A/PCINT2) PB1(AIN1/PCINT1) DIP / SOIC (T0) PD4 (T1/OC0B) PD5 GND (ICP) PD6 (AIN0/PCINT0) PB0 MLF AVR - architektura 7/26 Standardowe obudowy układu ATtiny2313

  8. PB4 (SS) PB3 (AIN1) PB2 (AIN0) PB1 (T1) PB0 (OC0/T0) n.c. VCC PA0 (AD0) PA1 (AD1) PA2 (AD2) PA3 (AD3) (OC0/T0) PB0 (T1) PB1 (AIN0) PB2 (AIN1) PB3 (SS) PB4 (MOSI) PB5 (MISO) PB6 (SCK) PB7 RESET (RxD) PD0 (TxD) PD1 (INT0) PD2 (INT1) PD3 (XCK) PD4 (OC1A) PD5 (WR) PD6 (RD) PD7 XTAL2 XTAL1 GND VCC PA0 (AD0) PA1 (AD1) PA2 (AD2) PA3 (AD3) PA4 (AD4) PA5 (AD5) PA6 (AD6) PA7 (AD7) PE0 (ICP/INT2) PE1 (ALE) PE2 (OC1B) PC7 (A15) PC6 (A14) PC5 (A13) PC4 (A12) PC3 (A11) PC2 (A10) PC1 (A9) PC0 (A8) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 (MOSI) PB5 (MISO) PB6 (SCK) PB7 RESET (RxD) PD0 n.c. (TxD) PD1 (INT0) PD2 (INT1) PD3 (XCK) PD4 (OC1A) PD5 PA4 (AD4) PA5 (AD5) PA6 (AD6) PA7 (AD7) PE0 (ICP/INT2) n.c. PE1 (ALE) PE2 (OC1B) PC7 (A15) PC6 (A14) PC5 (A13) (WR) PD6 (RD) PD7 XTAL2 XTAL1 GND n.c. (A8) PC0 (A9) PC1 (A10) PC2 (A11) PC3 (A12) PC4 DIP PLCC / TQFP / MLF AVR - architektura 8/26 Standardowe obudowy układu ATmega8515

  9. 15 0 wektory obsługi zdarzeń program 000h 001h 012h 013h 3FFh 00h 1Fh 20h adresy 5Fh 60h RAM 0DFh rejestry robocze blok rejestrów we/wy 128B SRAM danych 00h adresy portów 3Fh 00h 7Fh 128B EEPROM adres startowy programu = 0000h 19 pierwszych adresów - wektory przerwań AVR - przestrzenie adresowe 9/26 Przestrzenie adresowe układu ATtiny2313

  10. 15 0 wektory obsługi zdarzeń program 000h 001h 010h 011h FFFh 00h 1Fh 20h adresy 5Fh 60h RAM 25Fh rejestry robocze blok rejestrów we/wy 512B SRAM danych 00h adresy portów 3Fh 00h 7Fh 512B EEPROM 0260h RAM zewn FFFFh adres startowy programu = 0000h 17 pierwszych adresów - wektory przerwań AVR - przestrzenie adresowe 10/26 Przestrzenie adresowe układu ATmega8515

  11. 10h: 00h: 08h: 18h: R0 R8 R24 R16 09h: 01h: 19h: 11h: R25 R1 R17 R9 1Bh: 07h: 1Ch: 06h: 16h: 05h: 0Bh: 04h: 03h: 1Eh: 02h: 15h: 1Dh: 0Fh: 12h: 0Eh: 13h: 1Ah: 14h: 17h: 0Ah: 1Fh: 0Dh: 0Ch: R12 R6 R20 R19 R14 R13 R7 R11 R10 R22 R15 R5 R3 R2 R21 R18 R27 R29 R23 R31 R28 R26 R30 R4 15 0 }X: R27 R26 }Y: R29 R28 }Z: R31 R30 Rejestry R26..R31 tworzą 16-bitowe pary adresujące pamięć. AVR - rejestry robocze 11/26 Komórki wewnętrznego RAM z obszaru 00h..1Fh mogą być używane jako 32 rejestry robocze:

  12. nazwarejestru nazwabitu TIFR 58h ... ICF1 TOV0 38h adres rejestru jako portu we/wy adres rejestru jako komórki RAM bit niezaimplementowany AVR - rejestry we/wy ATtiny2313/ATmega851512/26 • Blok rejestrów wejścia-wyjścia: • przestrzeń 64 adresów: • - od 20h do 5Fh jako komórki RAM • - od 00h do 3Fh jako porty we/wy; • zawiera rejestry umożliwiające: - dostęp do wbudowanych peryferii - sterowanie pracą mikrokontrolera - kontrolowanie systemu przerwań • ekstensywne wykorzystanie adresów pozwala na projektowanie wersji mikrokontrolera różniących się wbudowanymi urządzeniami zewn.;

  13. SREG 5Fh I T H S V N Z C 3Fh SPH 5Eh 3Eh SPL 5Dh 3Dh GIMSK 5Bh INT1 INT0 PCIE 3Bh GICR 5Bh INT1 INT0 INT2 3Bh GIFR 5Ah INTF1 INTF0 PCIF 3Ah EIFR 5Ah INTF1 INTF0 INTF2 3Ah SPMCSR 57h CTPB RFLB PGWRT PGERS SELFPRGEN 37h TIMSK 59h TOIE1 OCIE1A OCIE1B ICIE1 OCIE0B TOIE0 OCIE0A 39h TIMSK 59h TOIE1 OCIE1A OCIE1B TICIE1 TOIE0 OCIE0 39h TIFR 58h TOV1 OCF1A OCF1B ICF1 OCF0B TOV0 OCF0A 38h TIFR 58h TOV1 OCF1A OCF1B ICF1 TOV0 OCF0 38h SPMCR 57h SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SELFPRGEN 37h AVR - rejestry we/wy ATtiny2313/ATmega851513/26

  14. OCR0A 56h timer/licznik 0 - bajt wzorca A 36h TCCR0B 53h FOC0A FOC0B WGM02 CS02 CS01 CS00 33h TCCR0 TCNT0 53h 52h FOC0 8-bitowy timer/licznik 0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 32h 33h MCUCR OSCCAL MCUCR 55h 55h 51h PUD SRE CAL6 SM1 SRW10 SE CAL5 SE SM1 SM0 CAL4 CAL3 ISC11 ISC11 ISC10 ISC10 CAL2 ISC01 CAL1 ISC01 ISC00 ISC00 CAL0 31h 35h 35h OCR0 MCUSR 54h 51h timer/licznik 0 - bajt wzorca WRDF BORF EXTRF PORF 34h 31h TCCR0A 50h COM0A1 COM0A0 COM0B1 COM0B0 WGM01 WGM00 30h AVR - rejestry we/wy ATtiny2313/ATmega851514/26 EMCUCR 56h SM0 SRL2 SRL1 SRL0 SRW01 SRW00 SRW11 ISC2 36h MCUCSR 54h SM2 WRDF BORF EXTRF PORF 34h SFIOR 50h XMBK XMM2 XMM1 XMM0 PUD PSR10 30h

  15. TCCR1A 4Fh COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10 2Fh TCCR1A 4Fh COM1A1 COM1A0 COM1B1 COM1B0 WGM11 WGM10 2Fh TCCR1B 4Eh ICNC1 ICES1 WGM13 WGM12 CS12 CS11 CS10 2Eh TCNT1H 4Dh timer/licznik 1 - st. bajt licznika 2Dh ICR1H 45h timer/licznik 1 - st. bajt przechwytujący 25h TCNT1L 4Ch timer/licznik 1 - mł. bajt licznika 2Ch ICR1L 44h timer/licznik 1 - mł. bajt przechwytujący 24h OCR1AH 4Bh timer/licznik 1 - st. bajt wzorca A 2Bh OCR1AL 4Ah timer/licznik 1 - mł. bajt wzorca A 2Ah OCR1BH 49h timer/licznik 1 - st. bajt wzorca B 29h OCR1BL 48h timer/licznik 1 - mł. bajt wzorca B 28h CLKPR 46h CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 26h GTCCR 43h PSR10 23h TCCR1C 42h FOC1A FOC1B 22h AVR - rejestry we/wy ATtiny2313/ATmega851515/26

  16. WDTCSR 41h WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 21h PCMSK 40h PCINT7 PCINT6 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 20h WDTCR 41h WDCE WDE WDP2 WDP1 WDP0 21h EEAR 3Eh adres dostępu do EEPROM EEAR6..0 1Eh UCSRC URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL EEDR 40h 3Dh rejestr buforowy danych EEPROM 20h 1Dh UBRRH URSEL rej. szybk. transmisji: UBRR11..8 EECR 3Ch EEPM1 EEPM0 EERIE EEMPE EEPE EERE 1Ch EEARH 3Fh EEAR8 1Fh EEARL 3Eh adres dostępu do EEPROM EEAR7..0 1Eh EECR 3Ch EERIE EEMWE EEWE EERE 1Ch PORTA 3Bh rej. wyjściowy 1Bh DDRA 3Ah rej. kierunku 1Ah PINA 39h rej. wejściowy 19h PORTA 3Bh rej. wyjściowy 1Bh DDRA 3Ah rej. kierunku 1Ah PINA 39h rej. wejściowy 19h AVR - rejestry we/wy ATtiny2313/ATmega851516/26

  17. PORTB 38h rej. wyjściowy 18h DDRB 37h rej. kierunku 17h PINB 36h rej. wejściowy 16h GPIOR2 35h uniwersalny rejestr I/O #2 15h GPIOR1 34h uniwersalny rejestr I/O #1 14h GPIOR0 33h uniwersalny rejestr I/O #0 13h PORTC 35h rej. wyjściowy 15h DDRC 34h rej. kierunku 14h PORTD 32h rej. wyjściowy 12h PINC 33h rej. wejściowy 13h PORTD 32h rej. wyjściowy 12h DDRD 31h rej. kierunku 11h DDRD 31h rej. kierunku 11h PIND 30h rej. wejściowy 10h PIND 30h rej. wejściowy 10h AVR - rejestry we/wy ATtiny2313/ATmega851517/26

  18. USIDR 2Fh rej. uniwersalnego portu szeregowego USI 0Fh USISR SPDR 2Fh 2Eh rej. portu szeregowego SPI USISIF USIOIF USIPF USIDC USICNT3 USICNT2 USICNT1 USICNT0 0Eh 0Fh USICR SPCR 2Dh 2Dh USISIE SPIE USIOIE SPE USIWM1 DORD MSTR USIWM0 CPOL USICS1 USICS0 CPHA SPR1 USICLK USITC SPR0 0Dh 0Dh UDR 2Ch rej. portu szeregowego 0Ch SPSR 2Eh SPIF WCOL 0Eh UCSRA UCSRA 2Bh 2Bh RXC RXC TXC TXC UDRE UDRE FE FE DOR DOR UPE PE U2X U2X MPCM MPCM 0Bh 0Bh UCSRB UBRRL 29h 2Ah RXCIE rejestr szybkości transmisji: UBRR7..0 TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 0Ah 09h ACSR ACSR 28h 28h ACD ACD ACBG ACO ACO ACI ACI ACIE ACIE ACIC ACIC ACIS1 ACIS1 ACIS0 ACIS0 08h 08h AVR - rejestry we/wy ATtiny2313/ATmega851518/26 SPI2X

  19. OSCCAL 24h CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 04h UCSRC 23h UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL 03h UBRRH 22h UBRR11..8 02h DIDR 21h AIN1D AIN0D 01h PORTE 27h rej. wyjściowy 07h DDRE 26h rej. kierunku 06h PINE 25h rej. wejściowy 05h AVR - rejestry we/wy ATtiny2313/ATmega8515 19/26

  20. SREG 5Fh I T H S V N Z C 3Fh AVR - rejestry we/wy - SREG 20/26 I - flaga zezwolenia na przerwania T - bit pośredni przy przesłaniach bitów rozkazami BST i BLD H - flaga przeniesienia połówkowego przy dodawaniu (między bitami 3 i 4) S - flaga znaku wyniku operacji na liczbach w U2 (=V xor N) V - flaga nadmiaru po operacjach na liczbach w U2 N - flaga ujemnej wartości wyniku operacji na liczbach w U2 Z - flaga zerowej wartości wyniku operacji C - flaga przeniesienia

  21. SPH 5Eh 3Eh SPL 5Dh 3Dh 2Bh 87h RAM R7: 2Bh stos R9: 11h 8Ah: 87h: 89h: 33h 22h x 2Bh 88h: x 2Bh SPL: 88h 88h AVR - rejestry we/wy - SPL, SPH i stos 21/26 Rejestr adresujący wierzchołek stosu programowego - wskazuje na pierwszą wolną komórkę na stosie. Po resecie przyjmuje wartość 00h ! Stos Funkcjonuje tylko w wewnętrznym RAM - ograniczony obszar.Zapis na stos powoduje przesuwanie się wierzchołka stosu w kierunku niższych adresów, odczyt - odwrotnie.! Możliwe jest „zawinięcie” stosu modulo rozmiar wbudowanej wewn. RAM.Przy zapisie na stos PC bardziej znaczący bajt trafia na niższy adres. PUSH R7 POP R9

  22. kod rozkazu • natychmiastowy argument argument: 8bNB ldi r20,200 kod rozkazu argument: 6bNB (0..63) argument adiw r24,50 Rx: • rejestrowy kod rozkazu operand inc r6 RAMwewn. • bezpośredni kod rozkazu adres operand lds r16,0x60 AVR - tryby adresowania 22/26 Tryby adresowania operandów - bajtów

  23. kod rozkazu RAMwewn X/Y/Z: ld r8,x adres16b kod rozkazu FLASH R31R30: lpm adres16b AVR - tryby adresowania 23/26 • rejestrowy pośredni

  24. kod rozkazu kod rozkazu RAMwewn RAMwewn X/Y/Z: X/Y/Z: ld r8,-y ld r8,z+ adres16b adres16b operand operand AVR - tryby adresowania 24/26 • rejestrowy pośredni z predekrementacją adres16b-1 • rejestrowy pośredni z postinkrementacją adres16b+1

  25. d: 6bNB (0..63) kod rozkazu d RAMwewn.  operand Y/Z: baza ldd r3,z+10std y+63,r5 rejestr roboczy/port we-wy • bezpośredni kod rozkazu adr bit bst r10,3cbi spl,0 AVR - tryby adresowania 25/26 • adresowanie bazowe Tryb adresowania operandów - bitów

  26. FFFFh FFh DFh 60h pamięć programu15 0 3FFh 000h 7FFh 7FEh 001h 000h RAM portywe/wy rejestrowy pośredni z rej. Z rejestrowy z predekrementacją 20h rejestryrobocze rejestrowy pośredni z X/Y/Z rejestrowy z postinkrementacją 00h 7 0 pamięć danych bazowy z Y/Z bezpośredni bezpośredni-bitów rejestrowy AVR - tryby adresowania 26/26 Dostępność trybów adresowania w ATtiny2313

More Related