550 likes | 764 Views
G S P V. MIKROKRMILNIK Atmel AVR RISC. 8. december 2009. Iz v sebin e. Osnovno o mikrokrmilniku Osnovne arhitekturne lastnosti Najnujnejše o programiranj u Osnovno o razvojnih orodjih STK 200 starter kit ICE 200 Emulator AVR Studio AVR Assembler. A. B. C. D. AT90S.
E N D
G S P V MIKROKRMILNIK Atmel AVR RISC 8. december 2009
Iz vsebine • Osnovno o mikrokrmilniku • Osnovne arhitekturne lastnosti • Najnujnejše o programiranju • Osnovno o razvojnih orodjih • STK200 starter kit • ICE 200 Emulator • AVR Studio • AVR Assembler
A B C D AT90S Način označevanja Velikost pomnilnika SRAM Vrsta procesorja Velikost pomnilnika EEPROM Velikost pomnilnika FLASH Atmelova 8 bitna AVR družina
Mikrokrmilnik AT90S8515 • Pomnilnik • podatkovni pomnilnik • 512 bajtov pomnilnika SRAM • 512 bajtov pomnilnika EEPROM • Omejeno število vpisov • programski pomnilnik • 8 KB programskega pomnilnika FLASH organiziranega v 4 K 16 bitnih besed • Omejeno število vpisov
Mikrokrmilnik AT90S8515 • Periferija • časovnik / števec s predskalirnikom • 8 bitni časovnik (preplavitveni) • 16 bitni časovnik (preplavitveni, prestrezni, primerjalni) • časovni paznik • UART (asinhroni serijski vmesnik) • SPI (serijski vmesnik) • 4 V/I vrata (32 programljivih V/I sponk) • Analogni komparator
Sponke oziroma signali SPI UART Prekinitvena vhoda
Mikrokrmilnik AT90S8515 • RISC zasnova • Harvardska arhitektura • 118 ukazov • cevovodna obdelava ukazov • izvršitev večine ukazov v 1 periodi ure • 32 x 8 splošno namenskih registrov • do 8 MIPS pri 8 MHz
Prevzem Prevzem Prevzem Prevzem Izvršitev Izvršitev Izvršitev Izvršitev 1 3 4 2 “Klasična” obdelava ukazov Tn Tn+1 Tn+2 Tn+3 Tn+4 Tn+5 Tn+6 Tn+7
Prevzem Prevzem Prevzem Prevzem Izvršitev Izvršitev Izvršitev Izvršitev 3 4 2 1 Cevovodna obdelava ukazov Tn Tn+1 Tn+2 Tn+3 Tn+4
R31 SPH R29 R27 R30 R28 SPL R26 Registri CPE $00 R0 SREG $3F ($5F) Statusni register R1 $01 R2 $02 Skladovni kazalec $3E ($5E) $3D ($5D) Splošno namenski registri CPE R26 X $1A R27 Splošno namenski registri kot naslovni registri $1B Y R28 $1C R29 $1D R30 Z $1E R31 $1F
Statusni register $3F ($5F) I T H S V N Z C Pomnilniški naslov V/I naslov (ukazi IN ter OUT)
Statusni register I - Globalna maska prekinitev I = 1, prekinitve omogočene T - “Bit load / bit store” shranjevanje enega bita registra Rn S - bit predznaka (“sign”) H, V, Z, N, C - kot običajno
Pomnilniški prostor (Harvardski tip) Programski pomnilnik Podatkovni pomnilnik $0000 $001F 32 reg. CPE $000 $0020 $005F 64 reg. V/I 8 KB 4 K x 16 (FLASH) $0060 $025F 512 SRAM $FFF $0260 $FFFF Zunanji SRAM
$00 $3D $0020 $005D R0 R29 $0000 $001D $01 $3E $001E $0021 $005E R30 $0001 R1 $005F $0002 $02 $3F $001F R2 R31 $0022 Registri V/I Registri V/I Registri CPE Registri CPE Notranji SRAM Organizacija podatkovnega pomnilnika $0060
Prekinitveni vektorji Prekinitveni vektorji so v naslovnem področju programa
Tipičen primer tabele vektorjev .def temp = R16 ;Definiranje registra ;***** Programski pomnilnik - tabela vektorjev rjmp RESET ;Reset rjmp EX_INT0 ;External interrupt INT0 reti ;External interrupt INT1 reti ;Timer/Counter1 Input capture reti ;Timer/Counter1 Compare A reti ;Timer/Counter1 Copmare B rjmp OVF1 ;Timer/Counter1 Overflow reti ;Timer/Counter0 Overflow reti ;SPI Transfer Complete reti ;UART RX Complete reti ;UART TX Empty reti ;UART TX Complete reti ;ANA Comparator ; ***** Začetni program RESET: cli ;onemogocimo prekinitve ldi temp,low(RAMEND) ;inicializacija sklada out SPL,temp ldi temp,high(RAMEND) out SPH, temp
V/I registri External SRAM Enable / Wait state Sleep enable / Sleep mode Sense control / INT1, INT0
Omogočita prekinitev na prekinitvenih vhodih INT1, INT0 V/I registri- prekinitve INT1, INT0 00 – nizek nivo 01 – rezervirano 10 – zadnji rob 11 – prednji rob Zastavici, brišemo z vpisom enice ali z izvršitvijo strežnika
Omogoča prekinitve časovnikov 0 in 1 V/I registri- prekinitve Časovnik 0 (preplavitev) Zastavice, brišemo z vpisom enice ali z izvršitvijo strežnika Časovnik 1 (preplavitev, primerjava (A, B), prestrezanje)
Časovnik 0 V/I registri - časovniki Časovnik 1 Časovni paznik
Časovnik 0 V/I registri – časovnik 0 000 – časovnik 0 ustavljen 001 – CK 010 – CK/8 011 – CK/64 100 - CK/256 101 – CK/1024 110 – zunanji na T0, zadnji rob 111 – zunanji na T0, prednji rob 8 – bitni časovni števec 0, Se povečuje z izbranim taktom Možno ga je tudi vpisati Predskalirnik
Primerjalna izhoda (A, B) 00 – odklop 01 – sprememba 10 – nizek 11 – visok Časovnik 1 Brisanje števca 1 ob ujemanju 000 – časovnik 1 ustavljen 001 – CK 010 – CK/8 011 – CK/64 100 - CK/256 101 – CK/1024 110 – zunanji na T1, zadnji rob 111 – zunanji na T1, prednji rob Predskalirnik Prestezni vhod ICES1: 0 – zadnji rob 1 - prednji rob ICNC1: Filter šuma 16 – bitni časovni števec 1, Se povečuje z izbranim taktom. Možno ga je tudi vpisati 16 – bitni prestrezni register 16 – bitna primerjalna registra (A, B)
V/I registri - vrata Vrata A Vrata B Vrata C Vrata D
Sponke V/I vrat - primer Smer 0 – vhod 1 - izhod DDBn PORTBn 00 – vhod, tristanjski 01 – vhod, zaključni upor 10 – izhod 0 11 – izhod 1 V/I sponka V/I register
V/I registri - UART Sprejemni/oddajni register Statusni register – stanje odd./spr. UART Kontrolni register – način delovanja Izbira hitrosti odd./spr.
Razvojna orodja • osebni računalnik z razvojnimi orodji • AVR Studio • prevajalnik (ASM, CC) • simulator, (ISP) • emulator (ICE - In Cuircit Emulator) • ICE 200 • preizkusni kompleti, razvojna vezja • STK 200 • logični analizator
PC - ICE200 - STK200 ICE200 AVR STUDIO STK200
Enostaven primer (1) ;***************************************************************************; PRIMER 0: Priziganje lucke ob pritisku tipke; ; Ime datoteke: Primer0.asm; Mikrokrmilnik: AT90S8515;; Program ob pritisku ene od tipk na vratih D prizge pripadajoco; lucko na vratih B. Ta lucka sveti, dokler se ob pritisku druge tipke; ne prizge druga lucka. Op.: nobenih prekinitev. ; ;***************************************************************************
Enostaven primer (2) ;.device AT90S8515 ;tip mikrokrmilnika.nolist ;naj se pridruzena datoteka ne lista.include "8515def.inc".list;-------- Definicije imen registrov.def temp = r16.def Stanje = r17
Enostaven primer (3) ; ------- Naslovno področje programa - tabela vektorjev rjmp RESET ;Reset “Handle”; ------- Neuporabljeni reti ;External INT0 vektor reti ;External INT1 vektor reti ;Timer/Counter1 Input capture reti ;Timer/Counter1 Compare A reti ;Timer/Counter1 Copmare B reti ;Timer/Counter1 Overflow reti ;Timer/Counter0 Overflow reti ;SPI Transfer Complete reti ;UART RX Complete reti ;UART TX Empty reti ;UART TX Complete reti ;ANA Comparator
Enostaven primer (4) ;****************************************************************************;Začetni program RESET: ;zagon cli ;onemogočimo prekinitve ldi temp,low(RAMEND);inicializacija sklada out SPL,temp ldi temp,high(RAMEND) out SPH, temp ser temp ;postavimo reg. temp na $FF out DDRB,temp ;B sponke so izhodi in temp,PIND ;prvo branje vhodov vrat D out PORTB,temp ;in prvi prikaz
Enostaven primer (5) ;****************************************************************************; Glavna zanka;Zanka: in temp,PIND ;beremo stanje tipk mov Stanje,temp ;prepisemo v Stanje com temp ;je pritisnjena tipka? breq Zanka ;ni ; Pritisk out PORTB,Stanje ;pristisnjena (vsaj) ena tipka, prepis na B rjmp Zanka
.BYTE Rezervira bajt (ali več bajtov) za spremenljivko .DB Definira bajt (ali več bajtov) za konstanto .DW Definira besedo (ali več) za konstanto .ORG Postavi števec lokacij (naslovni števec) .DEF Definira simbolično ime registra .EQU Definira (nespremenljivo) vrednost simbola .SET Postavi (spremenljivo) vrednost simbola Zbirniški ukazi
.DEVICE Definira tip mikrokrmilnika .MACRO Začne makro definicijo .ENDMACRO Zaključi makro definicijo .CSEG Začne kodni segment .DSEG Začne podatkovni (SRAM) segment .ESEG Začne EEPROM segment Zbirniški ukazi
.INCLUDE Pridruži (zbirniško) datoteko .LIST Zahteva začetek listanja prevajanja .NOLIST Zahteva konec listanja prevajanja .LISTMAC Zahteva listanje makro razširitev .EXIT Konec prevajanja Zbirniški ukazi
Pridružena datoteka ;***** Specify Device .device AT90S8515 ;***** I/O Register Definitions .equ SREG =$3f .equ SPH =$3e .equ SPL =$3d .equ GIMSK =$3b .equ GIFR =$3a .equ TIMSK =$39 .equ TIFR =$38 .equ MCUCR =$35 I.T.D, I.T.D.,………..
Osnovni načini naslavljanja Takojšnje Direktno Indirektno (indeksno) ……………
Takojšnje LDI R16,0xff ; (R16 0xff) SUBI R16,0x0f ANDI R16,0x01
Registrsko direktno Registri OP Rd INC R16 CLR R17 COM R0
Dvojno registrsko direktno Registri OP Rd,Rr d Rd OP Rr MOV R15,R16 ADD R15,R16
V/I direktno V/I naslovi OP n,P IN R16,PIND OUT PORTC,R16
Pomnilniško direktno Pomnilnik STS 0x0100,R16 LDS R16,0x0101 STS -- store to static (ram)