Sei sulla pagina 1di 17

I MICROCONTROLLORI ATMEL AVR

Caratteristica AT-MEGA 328P AT-TINY 85


Numero di istruzioni 131 120
CPU Core tipo AVRe+ AVRe
ALU con Moltiplicatore in 2 cicli di clock Si No
Numero Registri Generali da 8 bit 32 32
Memoria PROM “Flash” 32K Bytes 8K Bytes
Memoria EEPROM (dati) - 1K Bytes 512 Bytes
Memoria SRAM (dati) 2KBytes 512 Bytes
Timers/Counters confuigurabili 2 da 8 +1 da 16 bit 2 da 8 bit
Canali PWM 6 2
Convertitoti analogico-digitale da 10 bit 6 4
Porte seriali: USART USI
Programmable Watchdog Timer Si Si
Linee di I/O programmabili 23 6
Tensione di funzionamento 1.8 – 5.5 V 2.7 – 5.5 V
Frequenza lavoro max a 1.8 V/2.7, 4.5 V 4/10/20 MHz -/10/20MHz
Consumo di Potenza alle condizioni Active Mode: 0.2mA Active Mode: 300 μA
minime: 1MHz, 1.8V, 25°C Power-down: 0.1μA Power-down: 0.1 μA
Power-save: 0.75μA
 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [1]

I MICROCONTROLLORI ATMEL AVR


Caratteristica AT-MEGA 328P AT-TINY 85
28 SDIP: 32 TQFP 8 SOIC

Packaging:

https://ww1.microchip.com/downloads/ https://ww1.microchip.com/download
Data sheet en/DeviceDoc/ATmega48A-PA-88A- s/en/DeviceDoc/Atmel-2586-AVR-8-
completo: PA-168A-PA-328-P-DS- bit-Microcontroller-ATtiny25-
DS40002061B.pdf ATtiny45-ATtiny85_Datasheet.pdf
Arduino Nano (official): Digistump Digispark (contributore):
Arduino
https://www.arduino.cc/en/Main/Ardui https://digistump.com/wiki/digispark
project noBoardNano
https://content.arduino.cc/assets/Nano https://s3.amazonaws.com/digispark/
V3.3_sch.pdf DigisparkSchematicFinal.pdf
Schemi
elettrici
board

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [2]

1
ATMEGA 328P vs ATTINY85

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [3]

CPU AVR

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [4]

2
Porte I/O

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [5]

Funzioni I/O Alternative

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [6]

3
Funzioni I/O Alternative – ATTINY85
Pin Funzioni alternative 1/3
PB5 /RESET/dW/ADC0/PCINT5
• /RESET: E’ la funzione di default, attiva a livello basso ma con resistenza di
pullup disabilitata (necessario quindi collegarne una esterna per evitare possibili
reset causati da “rumore”. Programmando a “1” il Fuse RSTDISBL, tale porta
può essere usata come di seguito indicato.
• dW: Programmando a “1”il Fuse DWEN e lasciando non programmati I bit di
lock, si abilità la funzionalità di “debugWIRE” gestita da apposito dispositivo di
controllo/debug.
• ADC0: Analog to Digital Converter, Channel 0. – vedi ADMUX
• PCINT5: Pin Change Interrupt source 5. – vedi PCMSK
PB4 XTAL2/CLKO/ADC2/OC1B/PCINT4
• XTAL2: Chip Clock Oscillator pin 2. Usato, insieme a PB3, come sorgente
clock, nel caso si sia impostata la modalità di clock esterno;
• CLKO: Programmando il Fuse CKOUT è possibile definire tale pin come
clock di uscita.
• ADC2: Analog to Digital Converter, Channel 2. – vedi ADMUX
• OC1B: Output Compare Match output – vedi PWM
• PCINT4: Pin Change Interrupt source 4.- vedi PCMSK
 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [7]

Funzioni I/O Alternative – ATTINY85


Pin Funzioni alternative 2/3
PB3 XTAL1/CLKI/ADC3/OC1B/PCINT3
• XTAL1: Chip Clock Oscillator pin 1. Usato, insieme a PB4, come
sorgente clock, nel caso si sia impostata la modalità di clock esterno;.
• CLKI: Clock Input from an external clock source- è possibile definire
tale pin come ingresso clock.
• ADC3: Analog to Digital Converter, Channel 3. vedi ADMUX
• OC1B: Inverted Output Compare Match output: – vedi PWM
• PCINT3: Pin Change Interrupt source 3. vedi PCMSK
PB2 SCK/ADC1/T0/USCK/SCL/INT0/PCINT2
• SCK: Master Clock output, Slave Clock input pin for SPI channel.
• ADC1: Analog to Digital Converter, Channel 1.
• T0: Timer/Counter0 counter source.
• USCK: Three-wire mode Universal Serial Interface Clock.
• SCL: Two-wire mode Serial Clock for USI Two-wire mode.
• INT0: External Interrupt source 0.
• PCINT2: Pin Change Interrupt source 2.

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [8]

4
Funzioni I/O Alternative – ATTINY85
Pin Funzioni alternative 3/3
PB1 MISO/AIN1/OC0B/OC1A/DO/PCINT1
• MISO: Master Data input, Slave Data output pin for SPI channel.
• AIN1: Analog Comparator Negative Input.
• OC0B: Output Compare Match output.
• OC1A: Output Compare Match output:
• DO: Three-wire mode Universal Serial Interface Data output.
• PCINT1: Pin Change Interrupt source 1.
PB0 MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0
• MOSI: SPI Master Data output, Slave Data input for SPI channel.
• AIN0: Analog Comparator Positive Input.
• OC0A: Output Compare Match output.
• OC1A: Inverted Output Compare Match output:
• SDA: Two-wire mode Serial Interface Data.
• AREF: External Analog Reference for ADC.
• DI: Data Input in USI Three-wire mode.
• PCINT0: Pin Change Interrupt source 0.

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [9]

Funzioni I/O Alternative – ATMEGA 328P


Sono disponibili 3 porte: 2 da 8 bit ed una da 7 bit.
Senza elencare tutte le possibili alternative di ben 23 pin,
sintetizziamo solo le principali funzioni:
Porta Funzioni alternative
PORTB XTAL/SCK-MISO-MOSI-SS/PWM
(8 pin) La funzione alternativa principale è l’interfaccia SPI (programmazione)
PORTC /RESET/ADC5-0/SCL-SDA
(7 pin) Le funzioni alternative principali sono i canali ADC e lnterfaccia seriale a
2 fili SDA-SCL
PORTD AINx/PWM/USART
(8 pin) Le funzioni alternative principali sono i comparatori analogici e la
Porta seriale standard RS232

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [10]

5
Organizzazione della memoria
Memoria di programma (Flash)
ATMEGA 328P ATTINY85

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [11]

Organizzazione della memoria


Memoria dati (SRAM)
ATMEGA 328P ATTINY85

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [12]

6
Organizzazione della memoria
Memoria dati (EEPROM)
Di tipo “permanente”, è accessibile, per singolo byte, trmite registri dedicati:
EEAR, EEDR e EECR. Vita massima: 100.000 cicli di scrittura.
Accesso in lettura
sbic EECR, EEPE ; Wait for completion of previous write
rjmp $-1
out EEARH, r18 ; Set up address (r18:r17) in address register
out EEARL, r17
sbi EECR, EERE ; Start eeprom read by writing EERE
in r16, EEDR ; Read data from data register
ret
Accesso in Scrittura
sbic EECR,EEPE ; Wait for completion of previous write
rjmp $-1
ldi r16, (0<<EEPM1)|(0<<EEPM0) ; Set Programming mode
out EECR, r16
out EEARH, r18 ; Set up address (r18:r17) in address register
out EEARL, r17
out EEDR, r19 ; Write data (r19) to data register
sbi EECR, EEMPE ; Write logical one to EEMPE
sbi EECR, EEPE ; Start eeprom write by setting EEPE
ret
 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [13]

INTERRUPT
Tutti gli interrupt sono a Vettore diretto, memorizzato in una tabella dedicata.
Priorità determinata dalla posizione nella tabella: valori bassi  alta priorità.
Commutazione di contesto minima (solo PC)
ATMEGA 328 ISR TABLE ATTINY85 ISR TABLE
.org 0x0000 ; .org 0x0000 ;
jmp RESET ; Reset Handler
jmp EXT_INT0 ; IRQ0 Handler rjmp RESET ;
jmp EXT_INT1 ; IRQ1 Handler
jmp PCINT0 ; PCINT0 Handler
rjmp INT0_ISR ;
jmp PCINT1 ; PCINT1 Handler rjmp PCINT0_ISR ;
jmp PCINT2 ; PCINT2 Handler
jmp WDT ; Watchdog Timer Handler
rjmp TIM1_COMPA_ISR ;
jmp TIM2_COMPA ; Timer2 Compare A Handler rjmp TIM1_OVF_ISR ;
jmp TIM2_COMPB ; Timer2 Compare B Handler
jmp TIM2_OVF ; Timer2 Overflow Handler rjmp TIM0_OVF_ISR ;
jmp TIM1_CAPT ; Timer1 Capture Handler rjmp EE_RDY_ISR ;
jmp TIM1_COMPA ; Timer1 Compare A Handler
jmp TIM1_COMPB ; Timer1 Compare B Handler
jmp TIM1_OVF ; Timer1 Overflow Handler rjmp ANA_COMP_ISR ;
jmp TIM0_COMPA ; Timer0 Compare A Handler
jmp TIM0_COMPB ; Timer0 Compare B Handler rjmp ADC_ISR ;
jmp TIM0_OVF ; Timer0 Overflow Handler rjmp TIM1_COMPB_ISR ;
jmp SPI_STC ; SPI Transfer Complete Handler
jmp USART_RXC ; USART, RX Complete Handler rjmp TIM0_COMPA_ISR ;
jmp USART_UDRE ; USART, UDR Empty Handler rjmp TIM0_COMPB_ISR ;
jmp USART_TXC ; USART, TX Complete Handler
jmp ADC ; ADC Conversion Complete Handler rjmp WDT_ISR ;
jmp EE_RDY ; EEPROM Ready Handler rjmp USI_START_ISR ;
jmp ANA_COMP ; Analog Comparator Handler
jmp TWI ; 2-wire Serial Interface Handler rjmp USI_OVF_ISR ;
jmp SPM_RDY ; Store Program Memory Ready Handler

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [14]

7
PROGRAMMING MODEL
32 Registri generali a 8 bit

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [15]

Processor Status Word - SREG

Bit 7 – I: Global Interrupt Enable


Bit 6 – T: Bit Copy Storage
Bit 5 – H: Half Carry Flag (aritmetica “BCD”).
Bit 4 – S: Sign Bit, S = N xor V
Bit 3 – V: Overflow Flag (complement a 2)
Bit 2 – N: Negative Flag
Bit 1 – Z: Zero Flag
Bit 0 – C: Carry Flag

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [16]

8
STACK POINTER

ldi r16, 0 ; reset system status


Limiti inferiori: out SREG, r16 ; init stack pointer
0x60 per AT-TINY 85 (32 RG e 64 I/O) ldi r16, low(RAMEND)
0x100 per AT-MEGA 328P. out SPL, r16 ;
(32 RG, 64 I/O e 160 Ext I/O)
ldi r16, high(RAMEND)
out SPH, r16 ;
 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [17]

Registri I/O - EEPROM

Bit 5, 4 - EEPM1 e EEPM0:


00 – cancellare e programmare “atomicamente”
01 – solo cancellazione
10 – solo scrittura (EEPROM già cancellata)
 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [18]

9
Registri I/O – EEPROM … cont.

Bit 3 - EERIE: abilitazione interrupt su EEPROM pronta


Bit 2 - EEMPE: abilitazione scrittura master EEPROM
Bit 1 - EEPE: «strobe» scrittura EEPROM (dopo EEMPE=1
entro 4 cicli di clock, dopo EEMPE viene resettato a 0.)
Sequenza per scrittura EEPROM:
1. Attendere fino a quando EEPE diventa zero.
2. Verificare NO scrittura su FLASH memory.
3. Scrivere indirizzo EEPROM in EEAR (opzionale).
4. Scrivere nuovi dati EEPROM su EEDR (opzionale).
5. Settare il bit EEMPE.
6. Entro 4 cicli di clock, settare EEPE=1. Attenzione a
disabilitare gli interrupt tra il passo 5 e 6.
EEPE cancellato al termine del ciclo di scrittura.
Bit 0 - EERE: abilitazione lettura EEPROM

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [19]

Registri Controllo e Reset (328p)

BODS: BrownOut Sleep Disable


BODSE: «strobe» per confermare BODS
PUD: pull-up tutti disabilitati
IVSEL: Posizione dei vettori di interrupt:
0: all'inizio della memoria Flash;
1: all'inizio del Boot Loader della memoria Flash
(determinato dai fusibili BOOTSZ).

IVCE: Abilitazione modifica vettore interrupt:


Sequenza da usare per modificare il Bit IVSEL:
1. IVCE = 1 (Interrupt Vector Change Enable).
2. Entro quattro cicli, scrivere IVSEL.

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [20]

10
Registri Controllo e Reset (Tiny85)

BODS: BrownOut Sleep Disable


BODSE: «strobe» per confermare BODS
PUD: pull-up tutti disabilitati
SE: Sleep Enable – altrimenti SLEEP non funziona
SM1-SM0: Sleep Mode

ISC01-ISC00: Interrupt Sense Control for INT0

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [21]

Istruzioni Aritmetiche
(Diadiche)

Mod  0 1
Mnem. Opcode Normale Con Carry
ADD 000_11 000011 000111
SUB 000_10 000110 000010

Mod  0_0 0_1 1_0 1_1


Mnem Opcod SubNC AddNC SubCY AddCY
SUM 000_1_ 000010 000011 000110 000111

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [22]

11
Istruzioni Logiche
(Diadiche)

Mod  00 01 10 11
Mnem Opcod AND OR EOR MOV
LOGC 0010__ 001000 001001 001010 001011

Istruzione fantasma, intrusa o semplice «workaround»?

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [23]

Altre Istruzioni Aritmetico-logiche


(Diadiche: Registro, Costante)

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [24]

12
Istruzioni Aritmetico-logiche
(Monoadiche)

ESTESE – SOLO ATMEGA 328P

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [25]

Istruzioni Controllo Flusso

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [26]

13
Istruzioni di Salto corto condizionato

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [27]

Istruzioni di trasferimento dati

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [28]

14
Istruzioni di trasferimento dati

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [29]

Istruzioni di Manipolazione bit …

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [30]

15
Istruzioni di bit set-reset…

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [31]

Istruzioni di Controllo MPU

Utilizzo del Watchdog Timer (WDT)


• Il WDT è un timer alimentato da un oscillatore da 128 kHz. Quando
raggiunge un determinato valore di timeout, genera un interrupt o un
reset di sistema.
• Utilizzando l’istruzione WDR prima del timeout, si avrà normale
funzionamento.
• La modalità «Interrupt» può essere usata per «risvegliare” il
dispositivo dallo stato di “SLEEP”.
• La modalità “Reset” Riavvia completamente il sistema.
• La modalità interrupt + reset può essere usata per salvare dei
parametri “critici” prima del reset.

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [32]

16
Tipi di dati e come riferirsi ad essi
Tipi di dati
• Valori interi da 8 o 16 bit, positivi o negativi (in complemento a 2) ALU
• Valori binari interi o frazionali, da 8 bit positivi o negativi con risultato a
16 bit per le operazioni di moltiplicazione (solo AT-MEGA)
• Valori decimali interi positivi, secondo la codifica packed BCD (due
cifre decimali per byte) per le somme e sottrazioni, gestendo da
software il riporto sul nibble basso (= Half Carry)

Modalità di indirizzamento (Area Dati)


Con riferimento ai registri generali:
• Diretto - copre l'intero spazio dati
• Indiretto – possibile usare solo da R26 a R31
• Indiretto modificato - 63 posizioni a partire dall'indirizzo di base
che può essere fornito dai registri Y o Z
• Indiretto con pre-decremento e post-incremento, solo per registri
X, Y e Z.

 Ing. Massimo Trojani - Architettura degli Elaboratori UNICAM 2021 [33]

17

Potrebbero piacerti anche