Atmel

Microcontroller Atmel AVR a 8 bit con flash programmabile nel sistema da 2/4/8 K bytechip

 

Caratteristiche

  • Microcontrollore AVR® a 8 bit ad alte prestazioni e basso consumo
  • Architettura RISC avanzata
  • 120 potenti istruzioni - la maggior parte delle esecuzioni a ciclo di clock singolo
  • 32 x 8 registri di lavoro per scopi generali
  • Funzionamento completamente statico
  • Programma non volatile e memorie dati
  • 2/4 / 8K byte di memoria flash programmabile nel sistema
  • Resistenza: 10,000 cicli di scrittura/cancellazione
  • EEPROM programmabile nel sistema da 128/256/512 byte
  • Resistenza: 100,000 cicli di scrittura/cancellazione
  • SRAM interna da 128/256/512 byte
  • Blocco programmazione per programma flash autoprogrammante e protezione dati EEPROM

Caratteristiche periferiche

  • Timer / contatore a 8 bit con prescaler e due canali PWM
  • Timer / contatore ad alta velocità a 8 bit con prescaler separato
  • 2 uscite PWM ad alta frequenza con registri di confronto delle uscite separate
  • Generatore di tempo morto programmabile
  • USI - Interfaccia seriale universale con rilevatore delle condizioni di avvio
  • Convertitore analogico-digitale a 10 bit

4 canali a terminazione singola

2 coppie di canali ADC differenziali con guadagno programmabile (1x, 20x)

Misurazione della temperatura

Timer watchdog programmabile con oscillatore separato su chip

Comparatore analogico su chip

Caratteristiche speciali del microcontrollore

debugWIRE Sistema di debug su chip

Programmabile nel sistema tramite la porta SPI

Fonti di interrupt esterne e interne

Modalità di inattività a basso consumo, riduzione del rumore ADC e modalità di spegnimento

Circuito di ripristino all'accensione migliorato

Circuito di rilevamento Brown-out programmabile

Oscillatore interno calibrato

I / O e pacchetti

Sei linee I / O programmabili

PDIP a 8 pin, SOIC a 8 pin, QFN / MLF a 20 pad e TSSOP a 8 pin (solo ATtiny45 / V)

Volume di eserciziotage
- 1.8 - 5.5 V per ATtiny25V / 45V / 85V
- 2.7 - 5.5 V per ATtiny25 / 45/85

Grado di velocità
- ATtiny25V / 45V / 85V: 0 - 4 MHz a 1.8 - 5.5 V, 0 - 10 MHz a 2.7 - 5.5 V
- ATtiny25 / 45/85: 0 - 10 MHz a 2.7 - 5.5 V, 0 - 20 MHz a 4.5 - 5.5 V

Intervallo di temperatura industriale

Basso consumo energetico

Modalità attiva:

1 MHz, 1.8 V: 300 µA

Modalità di spegnimento:

Configurazioni dei pin

Piedinatura ATtiny25 / 45/85 Configurazione

Descrizioni dei pin

VCC: Fornitura voltage.
GND: Terra.
Porta B (PB5:PB0): la porta B è una porta I/O bidirezionale a 6 bit con resistori pull-up interni (selezionati per ogni bit). I buffer di uscita della porta B hanno caratteristiche di azionamento simmetriche con elevata capacità sia di sink che di source. Come ingressi, i pin della porta B che sono abbassati esternamente genereranno corrente se i resistori di pull-up sono attivati. I pin della porta B vengono dichiarati tre volte quando si attiva una condizione di ripristino, anche se l'orologio non è in funzione.

La porta B serve anche le funzioni di varie caratteristiche speciali dell'ATtiny25 / 45/85 come elencate
Su ATtiny25, le porte I / O programmabili PB3 e PB4 (pin 2 e 3) vengono scambiate in modalità di compatibilità ATtiny15 per supportare la retrocompatibilità con ATtiny15.

RESET: resetta l'ingresso. Un livello basso su questo pin per una durata superiore alla durata minima dell'impulso genererà un reset, anche se l'orologio non è in funzione e a condizione che il pin di reset non sia stato disabilitato. La durata minima dell'impulso è indicata in Tabella 21-4 a pagina 165. Non è garantito che impulsi più brevi generino un ripristino.

Il pin di ripristino può essere utilizzato anche come pin I / O (debole).

Sopraview

ATtiny25 / 45/85 è un microcontrollore CMOS a 8 bit a bassa potenza basato sull'architettura RISC avanzata AVR. Eseguendo potenti istruzioni in un singolo ciclo di clock, ATtiny25 / 45/85 raggiunge velocità di trasmissione che si avvicinano a 1 MIPS per MHz consentendo al progettista del sistema di ottimizzare il consumo energetico rispetto alla velocità di elaborazione.

Diagramma a blocchi Diagramma a blocchi

Il core dell'AVR combina un ricco set di istruzioni con 32 registri di lavoro generici. Tutti i 32 registri sono collegati direttamente all'unità logica aritmetica (ALU), consentendo l'accesso a due registri indipendenti in un'unica istruzione eseguita in un ciclo di clock. L'architettura risultante è più efficiente dal punto di vista del codice, raggiungendo velocità fino a dieci volte più veloci rispetto ai microcontrollori CISC convenzionali.

ATtiny25 / 45/85 fornisce le seguenti caratteristiche: 2/4 / 8K byte di flash programmabile nel sistema, 128/256/512 byte EEPROM, 128/256/256 byte SRAM, 6 linee I / O per uso generico, 32 generali registri di lavoro, un timer / contatore a 8 bit con modalità di confronto, un timer / contatore ad alta velocità a 8 bit, interfaccia seriale universale, interrupt interni ed esterni, un ADC a 4 canali, 10 bit, un timer watchdog programmabile con Oscillatore e tre modalità di risparmio energetico selezionabili dal software. La modalità Idle arresta la CPU consentendo al sistema SRAM, Timer / Counter, ADC, Comparatore analogico e Interrupt di continuare a funzionare. La modalità di spegnimento salva il contenuto del registro, disabilitando tutte le funzioni del chip fino al successivo interrupt o reset hardware. La modalità di riduzione del rumore ADC arresta la CPU e tutti i moduli I / O tranne ADC, per ridurre al minimo il rumore di commutazione durante le conversioni ADC.

Il dispositivo è prodotto utilizzando la tecnologia di memoria non volatile ad alta densità di Atmel. L'ISP Flash su chip consente di riprogrammare la memoria del programma nel sistema tramite un'interfaccia seriale SPI, da un programmatore di memoria non volatile convenzionale o da un codice di avvio su chip in esecuzione sul core dell'AVR.

L'AVR ATtiny25 / 45/85 è supportato da una suite completa di strumenti di sviluppo di programmi e sistemi, inclusi: C Compilatori, Macro Assemblatori, Debugger / Simulatori di programma e Kit di valutazione.

Informazioni sulle risorse

Un set completo di strumenti di sviluppo, note applicative e fogli dati è disponibile per il download su http://www.atmel.com/avr.

Codice Examples

Questa documentazione contiene codice semplice esampfile che mostrano brevemente come utilizzare le varie parti del dispositivo. Questi codici exampsi supponga che l'intestazione specifica della parte file è incluso prima della compilazione. Tieni presente che non tutti i fornitori di compilatori C includono definizioni di bit nell'intestazione filese la gestione degli interrupt in C dipende dal compilatore. Si prega di confermare con la documentazione del compilatore C per maggiori dettagli.

Per i registri I / O situati nella mappa I / O estesa, le istruzioni "IN", "OUT", "SBIS", "SBIC", "CBI" e "SBI" devono essere sostituite con istruzioni che consentono l'accesso a I / O esteso / O. In genere, questo significa "LDS" e "STS" combinati con "SBRS", "SBRC", "SBR" e "CBR". Notare che non tutti i dispositivi AVR includono una mappa I / O estesa.

Rilevamento tattile capacitivo

Atmel QTouch Library fornisce una soluzione semplice da usare per le interfacce sensibili al tocco sui microcontrollori Atmel AVR. La Libreria QTouch include il supporto per i metodi di acquisizione QTouch® e QMatrix®.

Il rilevamento del tocco può essere facilmente aggiunto a qualsiasi applicazione collegando la libreria QTouch e utilizzando l'API (Application Programming Interface) della libreria per definire i canali tattili e i sensori. L'applicazione chiama quindi l'API per recuperare le informazioni sul canale e determinare lo stato del sensore tattile.

La libreria QTouch è gratuita e può essere scaricata da Atmel webposto. Per ulteriori informazioni e dettagli sull'implementazione, fare riferimento alla Guida per l'utente della libreria QTouch, disponibile anche presso Atmel websito.

Conservazione dei dati

I risultati della qualifica di affidabilità mostrano che il tasso di fallimento della conservazione dei dati previsto è molto inferiore a 1 PPM in 20 anni a 85 ° C o 100 anni a 25 ° C.

Nucleo CPU AVR

Introduzione

Questa sezione discute l'architettura di base di AVR in generale. La funzione principale del core della CPU è garantire la corretta esecuzione del programma. La CPU deve quindi essere in grado di accedere alle memorie, eseguire calcoli, controllare le periferiche e gestire gli interrupt.

Architettura Overview Architettura

Per massimizzare le prestazioni e il parallelismo, l'AVR utilizza un'architettura Harvard, con memorie e bus separati per programma e dati. Le istruzioni nella memoria del programma vengono eseguite con una pipeline a livello singolo. Mentre un'istruzione viene eseguita, l'istruzione successiva viene precaricata dalla memoria del programma. Questo concetto consente di eseguire le istruzioni in ogni ciclo di clock. La memoria del programma è una memoria flash riprogrammabile nel sistema.

Il Registro ad accesso rapido File contiene 32 registri di lavoro generici a 8 bit con un singolo tempo di accesso al ciclo di clock. Ciò consente il funzionamento dell'unità logica aritmetica (ALU) a ciclo singolo. In una tipica operazione ALU, vengono emessi due operandi dal registro File, l'operazione viene eseguita e il risultato viene memorizzato nuovamente nel Registro File- in un ciclo di clock.

Sei dei 32 registri possono essere utilizzati come tre puntatori di registro di indirizzo indiretto a 16 bit per l'indirizzamento dello spazio dati, consentendo calcoli di indirizzo efficienti. Uno di questi puntatori di indirizzo può essere utilizzato anche come puntatore di indirizzo per cercare tabelle nella memoria del programma Flash. Questi registri di funzioni aggiuntive sono i registri X, Y e Z a 16 bit, descritti più avanti in questa sezione.

L'ALU supporta operazioni aritmetiche e logiche tra registri o tra una costante e un registro. Le operazioni di registro singolo possono essere eseguite anche nell'ALU. Dopo un'operazione aritmetica, il registro di stato viene aggiornato per riflettere le informazioni sul risultato dell'operazione.

Il flusso del programma è fornito da istruzioni di salto e chiamata condizionali e incondizionate, in grado di indirizzare direttamente l'intero spazio di indirizzamento. La maggior parte delle istruzioni AVR ha un unico formato word a 16 bit, ma ci sono anche istruzioni a 32 bit.

Durante gli interrupt e le chiamate di subroutine, l'indirizzo di ritorno Program Counter (PC) viene memorizzato nello Stack. Lo Stack è effettivamente allocato nella SRAM dei dati generali e di conseguenza la dimensione dello Stack è limitata solo dalla dimensione totale della SRAM e dall'utilizzo della SRAM. Tutti i programmi utente devono inizializzare l'SP nella routine di ripristino (prima che vengano eseguite sottoprogrammi o interruzioni). Lo Stack Pointer (SP) è accessibile in lettura / scrittura nello spazio I / O. È possibile accedere facilmente alla SRAM dei dati attraverso le cinque diverse modalità di indirizzamento supportate nell'architettura AVR.

Gli spazi di memoria nell'architettura AVR sono tutte mappe di memoria lineari e regolari.

Un modulo di interrupt flessibile ha i suoi registri di controllo nello spazio I / O con un bit di abilitazione degli interrupt globali aggiuntivo nel registro di stato. Tutti gli interrupt hanno un vettore di interrupt separato nella tabella Vettore di interrupt. Gli interrupt hanno la priorità in base alla loro posizione del vettore di interrupt. Più basso è l'indirizzo del vettore di interrupt, maggiore è la priorità.

Lo spazio di memoria I/O contiene 64 indirizzi per le funzioni periferiche della CPU come Registri di controllo, SPI e altre funzioni I/O. Si può accedere direttamente alla memoria I/O, oppure come locazioni di Data Space successive a quelle del Register File, 0x20 – 0x5F.

ALU - Unità logica aritmetica

L'AVR ALU ad alte prestazioni opera in collegamento diretto con tutti i 32 registri di lavoro generici. All'interno di un singolo ciclo di clock, vengono eseguite operazioni aritmetiche tra registri di uso generale o tra un registro e un immediato. Le operazioni ALU sono suddivise in tre categorie principali: funzioni aritmetiche, logiche e bit. Alcune implementazioni dell'architettura forniscono anche un potente moltiplicatore che supporta sia la moltiplicazione con segno / senza segno che il formato frazionario. Vedere la sezione "Set di istruzioni" per una descrizione dettagliata.

Registro di stato

Il registro di stato contiene informazioni sul risultato dell'istruzione aritmetica eseguita più di recente. Queste informazioni possono essere utilizzate per modificare il flusso del programma al fine di eseguire operazioni condizionali. Notare che il registro di stato viene aggiornato dopo tutte le operazioni ALU, come specificato nel riferimento del set di istruzioni. Ciò in molti casi eliminerà la necessità di utilizzare le istruzioni di confronto dedicate, risultando in un codice più veloce e compatto.

Il registro di stato non viene memorizzato automaticamente quando si entra in una routine di interrupt e ripristinato al ritorno da un interrupt. Questo deve essere gestito dal software.

SREG - Registro di stato AVR

Il registro di stato dell'AVR - SREG - è definito come:

Morso 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SEG
Leggere/scrivere R/N R/N R/N R/N R/N R/N R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

Bit 7 - I: Abilitazione interrupt globale

Il bit Global Interrupt Enable deve essere impostato per abilitare gli interrupt. Il controllo di abilitazione dell'interrupt individuale viene quindi eseguito in registri di controllo separati. Se il registro di abilitazione interrupt globale è deselezionato, nessuno degli interrupt viene abilitato indipendentemente dalle impostazioni di abilitazione degli interrupt individuali. Il bit I viene cancellato dall'hardware dopo che si è verificato un interrupt ed è impostato dall'istruzione RETI per abilitare gli interrupt successivi. L'I-bit può anche essere impostato e cancellato dall'applicazione con le istruzioni SEI e CLI, come descritto nel riferimento al set di istruzioni.

Bit 6 - T: Memoria copia bit

Le istruzioni Bit Copy BLD (Bit LoaD) e BST (Bit STore) utilizzano il bit T come sorgente o destinazione per il bit operato. Un po' da un registro nel Registro File può essere copiato in T dall'istruzione BST e un bit in T può essere copiato in un bit in un registro nel Registro File dall'istruzione BLD.

Bit 5 - H: Half Carry Flag

Il flag Half Carry H indica un Half Carry in alcune operazioni aritmetiche. Half Carry è utile nell'aritmetica BCD. Vedere la "Descrizione del set di istruzioni" per informazioni dettagliate.

Bit 4 – S: Bit di segno, S = N ⊕ V

Il bit S è sempre un'esclusiva o tra il flag negativo N e il flag di overflow del complemento a due V. Vedere la "Descrizione del set di istruzioni" per informazioni dettagliate.

Bit 3 - V: Flag di overflow del complemento a due

Flag di overflow del complemento a due V supporta l'aritmetica del complemento a due. Vedere la "Descrizione del set di istruzioni" per informazioni dettagliate.

Bit 2 - N: Flag negativo

Il flag negativo N indica un risultato negativo in un'operazione aritmetica o logica. Vedere la "Descrizione del set di istruzioni" per informazioni dettagliate.

Bit 1 - Z: Flag zero

Il Flag Zero Z indica un risultato zero in un'operazione aritmetica o logica. Vedere la "Descrizione del set di istruzioni" per informazioni dettagliate.

Bit 0 - C: flag di trasporto

Il flag di riporto C indica un riporto in un'operazione aritmetica o logica. Vedere la "Descrizione del set di istruzioni" per informazioni dettagliate.

Registro per scopi generici File

Il registro File è ottimizzato per il set di istruzioni AVR Enhanced RISC. Al fine di ottenere le prestazioni e la flessibilità richieste, il Registro supporta i seguenti schemi di input/output File:

Un operando di uscita a 8 bit e un ingresso di risultato a 8 bit

Due operandi di uscita a 8 bit e un ingresso di risultato a 8 bit

Due operandi di uscita a 8 bit e un ingresso di risultato a 16 bit

Un operando di uscita a 16 bit e un ingresso di risultato a 16 bit

Figura 4-2 mostra la struttura dei 32 registri di lavoro generici nella CPU. Scopo generale

Come mostrato in Figura 4-2, ad ogni registro viene inoltre assegnato un indirizzo di Memoria Dati, mappandoli direttamente nelle prime 32 locazioni del Data Space utente. Sebbene non sia fisicamente implementata come locazioni SRAM, questa organizzazione della memoria offre una grande flessibilità nell'accesso ai registri, poiché i registri dei puntatori X, Y e Z possono essere impostati per indicizzare qualsiasi registro nel file.La maggior parte delle istruzioni operanti sul Registro File hanno accesso diretto a tutti i registri e la maggior parte di essi sono istruzioni a ciclo singolo.

Il registro X, il registro Y e il registro Z.

I registri R26..R31 hanno alcune funzioni aggiuntive al loro utilizzo per scopi generali. Questi registri sono puntatori di indirizzi a 16 bit per l'indirizzamento indiretto dello spazio dati. I tre registri degli indirizzi indiretti X, Y e Z sono definiti come descritto in Figura 4-3.

Registro

Nelle diverse modalità di indirizzamento, questi registri degli indirizzi hanno funzioni come spostamento fisso, incremento automatico e decremento automatico (vedere il riferimento del set di istruzioni per i dettagli).

Puntatore a pila

Lo Stack viene utilizzato principalmente per memorizzare dati temporanei, per memorizzare variabili locali e per memorizzare indirizzi di ritorno dopo interrupt e chiamate di subroutine. Lo Stack Pointer Register punta sempre in cima allo Stack. Si noti che lo Stack viene implementato crescendo da posizioni di memoria superiori a posizioni di memoria inferiori. Ciò implica che un comando Stack PUSH riduce il puntatore dello stack.

Il puntatore dello stack punta all'area dello stack SRAM dei dati in cui si trovano gli stack di subroutine e interrupt. Questo spazio Stack nella SRAM dei dati deve essere definito dal programma prima che le chiamate di subroutine vengano eseguite o gli interrupt siano abilitati. Lo Stack Pointer deve essere impostato in modo che punti sopra 0x60. Lo Stack Pointer viene decrementato di uno quando i dati vengono inseriti nello Stack con l'istruzione PUSH e viene decrementato di due quando l'indirizzo di ritorno viene inserito nello Stack con la chiamata o l'interruzione della subroutine. Lo Stack Pointer viene incrementato di uno quando i dati vengono estratti dallo Stack con l'istruzione POP e viene incrementato di due quando i dati vengono estratti dallo Stack con il ritorno dalla subroutine RET o dal ritorno dall'interruzione RETI.

L'AVR Stack Pointer è implementato come due registri a 8 bit nello spazio I / O. Il numero di bit effettivamente utilizzati dipende dall'implementazione. Si noti che lo spazio dati in alcune implementazioni dell'architettura AVR è così piccolo che è necessario solo SPL. In questo caso il Registro SPH non sarà presente.

SPH e SPL - Stack Pointer Register

Morso 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
7 6 5 4 3 2 1 0
Leggere/scrivere R/N R/N R/N R/N R/N R/N R/N R/N
Leggere/scrivere R/N R/N R/N R/N R/N R/N R/N R/N
Valore iniziale RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO
Valore iniziale RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO RAMENDO

Tempi di esecuzione delle istruzioni

Questa sezione descrive i concetti generali di temporizzazione dell'accesso per l'esecuzione delle istruzioni. La CPU AVR è guidata dal clock della CPU clkCPU, generato direttamente dalla sorgente di clock selezionata per il chip. Non viene utilizzata alcuna divisione dell'orologio interno.

Figura 4.4

Figura 4-4 mostra le operazioni parallele di recupero ed esecuzione delle istruzioni abilitate dall'architettura di Harvard e dal registro ad accesso rapido File concetto. Questo è il concetto base di pipelining per ottenere fino a 1 MIPS per MHz con i corrispondenti risultati unici per funzioni per costo, funzioni per clock e funzioni per unità di potenza.

Figura 4-5. Funzionamento ALU a ciclo singolo

Figura 4.5

Ripristino e gestione degli interrupt

L'AVR fornisce diverse sorgenti di interrupt differenti. Questi interrupt e il vettore di ripristino separato hanno ciascuno un vettore di programma separato nello spazio di memoria del programma. A tutti gli interrupt vengono assegnati singoli bit di abilitazione che devono essere scritti uno logico insieme al bit Global Interrupt Enable nel registro di stato per abilitare l'interrupt.

Gli indirizzi più bassi nello spazio di memoria del programma sono definiti per impostazione predefinita come vettori di ripristino e interruzione. L'elenco completo dei vettori è mostrato in "Interruzioni" a pagina 48. L'elenco determina anche i livelli di priorità dei diversi interrupt. Più basso è l'indirizzo, più alto è il livello di priorità. RESET ha la priorità più alta e il successivo è INT0, la richiesta di interrupt esterno 0.

Quando si verifica un interrupt, il bit I di abilitazione interrupt globale viene azzerato e tutti gli interrupt vengono disabilitati. Il software utente può scrivere uno logico sull'I-bit per abilitare gli interrupt annidati. Tutti gli interrupt abilitati possono quindi interrompere la routine di interrupt corrente. Il bit I viene impostato automaticamente quando viene eseguita un'istruzione Return from Interrupt - RETI.

Esistono fondamentalmente due tipi di interruzioni. Il primo tipo viene attivato da un evento che imposta il flag di interrupt. Per questi interrupt, il contatore del programma viene indirizzato al vettore di interrupt effettivo per eseguire la routine di gestione degli interrupt e l'hardware cancella il flag di interrupt corrispondente. I flag di interrupt possono anche essere cancellati scrivendone uno logico nella posizione del bit flag da cancellare. Se si verifica una condizione di interrupt mentre il bit di abilitazione dell'interrupt corrispondente è azzerato, il flag di interrupt verrà impostato e ricordato fino a quando l'interrupt non viene abilitato o il flag non viene cancellato dal software. Allo stesso modo, se si verificano una o più condizioni di interrupt mentre il bit di abilitazione dell'interrupt globale è azzerato, i flag di interrupt corrispondenti verranno impostati e ricordati fino a quando non viene impostato il bit di abilitazione dell'interrupt globale, che verranno quindi eseguiti in base all'ordine di priorità.

Il secondo tipo di interrupt si attiverà fintanto che è presente la condizione di interrupt. Queste interruzioni non hanno necessariamente flag di interruzione. Se la condizione di interrupt scompare prima che l'interrupt sia abilitato, l'interrupt non verrà attivato.

Quando l'AVR esce da un interrupt, tornerà sempre al programma principale ed eseguirà un'altra istruzione prima che venga servito qualsiasi interrupt in sospeso.

Notare che il registro di stato non viene memorizzato automaticamente quando si entra in una routine di interrupt, né ripristinato quando si ritorna da una routine di interrupt. Questo deve essere gestito dal software.

Quando si utilizza l'istruzione CLI per disabilitare gli interrupt, gli interrupt verranno immediatamente disabilitati. Nessun interrupt verrà eseguito dopo l'istruzione CLI, anche se si verifica contemporaneamente all'istruzione CLI. Il seguente esample mostra come questo può essere usato per evitare interruzioni durante la sequenza di scrittura EEPROM temporizzata.

Codice assemblaggio Example
in r16, SREG ; memorizzare il valore SREG

cli ; disabilitare gli interrupt durante la sequenza temporizzata

sbi EECR, EEMPE ; avviare la scrittura EEPROM

sbi EECR, EEPE

fuori SREG, r16 ; ripristinare il valore SREG (I-bit)

Codice C Example
char cSREG;

cSREG = SREG; /* memorizza il valore SREG */

/* disabilita gli interrupt durante la sequenza temporizzata */

_CLI ();

EECR |= (1<

EECR | = (1 <

SREG = cSREG; /* ripristina il valore SREG (I-bit) */

Quando si utilizza l'istruzione SEI per abilitare gli interrupt, l'istruzione successiva a SEI verrà eseguita prima di qualsiasi interrupt in sospeso, come mostrato in questo esempio.amplui.

Codice assemblaggio Example
sei ; impostare l'abilitazione dell'interrupt globale

dormire; entra nel sonno, in attesa di interruzione

; nota: entrerà in sospensione prima di qualsiasi attesa

; interrompi

Codice C Example
_SEI(); /* imposta l'abilitazione dell'interrupt globale */

_DORMIRE(); /* entra in modalità sleep, in attesa di interrupt */

/ * nota: entrerà in sospensione prima di qualsiasi interruzione in sospeso * /

Tempo di risposta all'interruzione

La risposta di esecuzione dell'interrupt per tutti gli interrupt AVR abilitati è di almeno quattro cicli di clock. Dopo quattro cicli di clock, viene eseguito l'indirizzo del vettore di programma per la routine di gestione degli interrupt effettiva. Durante questo periodo di quattro cicli di clock, il Program Counter viene inserito nello Stack. Il vettore è normalmente un salto alla routine di interrupt e questo salto richiede tre cicli di clock. Se si verifica un interrupt durante l'esecuzione di un'istruzione a più cicli, questa istruzione viene completata prima che l'interrupt venga servito. Se si verifica un interrupt quando l'MCU è in modalità sleep, il tempo di risposta dell'esecuzione dell'interrupt aumenta di quattro cicli di clock. Questo aumento si aggiunge al tempo di avvio dalla modalità di sospensione selezionata.

Un ritorno da una routine di gestione degli interrupt richiede quattro cicli di clock. Durante questi quattro cicli di clock, il Program Counter (due byte) viene ritirato dallo Stack, lo Stack Pointer viene incrementato di due e l'I-bit in SREG viene impostato.

Ricordi di AVR

Questa sezione descrive le diverse memorie nell'ATtiny25 / 45/85. L'architettura AVR ha due spazi di memoria principali, la memoria dati e lo spazio di memoria del programma. Inoltre, l'ATtiny25 / 45/85 dispone di una memoria EEPROM per l'archiviazione dei dati. Tutti e tre gli spazi di memoria sono lineari e regolari.

Memoria di programma flash riprogrammabile nel sistema

ATtiny25 / 45/85 contiene 2/4 / 8K byte di memoria Flash riprogrammabile nel sistema su chip per l'archiviazione del programma. Poiché tutte le istruzioni AVR hanno una larghezza di 16 o 32 bit, il Flash è organizzato come 1024/2048/4096 x 16.

La memoria Flash ha una durata di almeno 10,000 cicli di scrittura / cancellazione. L'ATtiny25 / 45/85 Program Counter (PC) ha una larghezza di 10/11/12 bit, indirizzando così le posizioni di memoria del programma 1024/2048/4096. "Programma di memoria- ming ”a pagina 147 contiene una descrizione dettagliata del download seriale dei dati Flash utilizzando i pin SPI.

Le tabelle delle costanti possono essere allocate all'interno dell'intero spazio di indirizzi della memoria del programma (vedere la descrizione dell'istruzione LPM - Load Program memory).

Figura 5-1. Mappa della memoria del programma Mappa della memoria

Memoria dati SRAM

Figura 5-2 mostra come è organizzata la memoria SRAM ATtiny25 / 45/85.

Le locazioni di memoria Dati inferiori 224/352/607 indirizzano sia il Registro File, la memoria I/O e la SRAM dati interna. Le prime 32 sedi si rivolgono al Registro File, le successive 64 locazioni della memoria I/O standard e le ultime 128/256/512 locazioni indirizzano la SRAM dati interna.

Le cinque diverse modalità di indirizzamento per la Memoria Dati riguardano: Diretto, Indiretto con Spostamento, Indiretto, Indiretto con Pre-decremento e Indiretto con Post-incremento. Nel registro File, i registri da R26 a R31 presentano i registri puntatore di indirizzamento indiretto.

L'indirizzamento diretto raggiunge l'intero spazio dati.

La modalità Indirect with Displacement raggiunge 63 posizioni di indirizzo dall'indirizzo di base fornito dal registro Y o Z-.

Quando si utilizzano le modalità di indirizzamento indiretto del registro con pre-decremento e post-incremento automatici, i registri di indirizzo X, Y e Z vengono decrementati o incrementati.

I 32 registri di lavoro generici, 64 registri I/O e i 128/256/512 byte di SRAM dati interni nell'ATtiny25/45/85 sono tutti accessibili attraverso tutte queste modalità di indirizzamento. Il registro File è descritto in "Gen- erale Scopo Registro File" a pagina 10.

Figura 5-2. Mappa memoria dati Mappa di memoria 2

Accesso alla memoria dati Volte

Questa sezione descrive i concetti generali di temporizzazione dell'accesso per l'accesso alla memoria interna. L'accesso SRAM ai dati interni viene eseguito in due cicli clkCPU come descritto in Figura 5-3.

Figura 5-3. Cicli di accesso alla SRAM dati su chip Sui dati del chip Memoria dati EEPROM

ATtiny25 / 45/85 contiene 128/256/512 byte di memoria EEPROM di dati. È organizzato come uno spazio dati separato, in cui è possibile leggere e scrivere singoli byte. La EEPROM ha una durata di almeno 100,000 cicli di scrittura / cancellazione. L'accesso tra la EEPROM e la CPU è descritto di seguito, specificando i registri degli indirizzi EEPROM, il registro dati EEPROM e il registro di controllo EEPROM. Per i dettagli vedere "Download seriale" a pagina 151.

Accesso in lettura / scrittura EEPROM

I registri di accesso EEPROM sono accessibili nello spazio I / O.

I tempi di accesso in scrittura per la EEPROM sono indicati in Tabella 5-1 a pagina 21. Una funzione di temporizzazione automatica, tuttavia, consente al software dell'utente di rilevare quando è possibile scrivere il byte successivo. Se il codice utente contiene istruzioni che scrivono la EEPROM, bisogna prendere alcune precauzioni. Negli alimentatori fortemente filtrati, è probabile che VCC aumenti o diminuisca lentamente

Accensione/spegnimento. Ciò fa sì che il dispositivo per un certo periodo di tempo funzioni a volumetage minore di quanto specificato come minimo per la frequenza di clock utilizzata. Vedere "Prevenzione della corruzione della EEPROM" a pagina 19 per i dettagli su come evitare problemi in queste situazioni.

Per evitare scritture involontarie di EEPROM, è necessario seguire una procedura di scrittura specifica. Fare riferimento a "Atomico Byte Programming "a pagina 17 "Programmazione a byte diviso" a pagina 17 per i dettagli su questo.

Quando la EEPROM viene letta, la CPU viene arrestata per quattro cicli di clock prima che venga eseguita l'istruzione successiva. Quando viene scritta la EEPROM, la CPU viene arrestata per due cicli di clock prima che venga eseguita l'istruzione successiva.

Programmazione di byte atomici

L'utilizzo della programmazione Atomic Byte è la modalità più semplice. Quando si scrive un byte nella EEPROM, l'utente deve scrivere l'indirizzo nel registro EEAR e i dati nel registro EEDR. Se i bit EEPMn sono zero, la scrittura di EEPE (entro quattro cicli dopo la scrittura di EEMPE) attiverà l'operazione di cancellazione / scrittura. Sia il ciclo di cancellazione che il ciclo di scrittura vengono eseguiti in un'unica operazione e viene indicato il tempo totale di programmazione Tabella 5-1 a pagina 21. Il bit EEPE rimane impostato fino al completamento delle operazioni di cancellazione e scrittura. Mentre il dispositivo è impegnato con la programmazione, non è possibile eseguire altre operazioni EEPROM.

Programmazione a byte divisi

È possibile suddividere il ciclo di cancellazione e scrittura in due diverse operazioni. Questo può essere utile se il sistema richiede un tempo di accesso breve per un periodo di tempo limitato (tipicamente se l'alimentazione voltage cade). Per avvantaggia- tage di questo metodo, è necessario che le locazioni da scrivere siano state cancellate prima dell'operazione di scrittura. Ma poiché le operazioni di cancellazione e scrittura sono suddivise, è possibile eseguire le operazioni di cancellazione quando il sistema consente di eseguire operazioni con tempi critici (tipicamente dopo l'accensione).

Cancellare

Per cancellare un byte, l'indirizzo deve essere scritto in EEAR. Se i bit EEPMn sono 0b01, la scrittura dell'EEPE (entro quattro cicli dopo la scrittura di EEMPE) attiverà solo l'operazione di cancellazione (il tempo di programmazione è dato in Tabella 5-1 su pagina 21). Il bit EEPE rimane impostato fino al completamento dell'operazione di cancellazione. Mentre il dispositivo è impegnato nella programmazione, non è possibile eseguire altre operazioni EEPROM.

Scrivere

Per scrivere una posizione, l'utente deve scrivere l'indirizzo in EEAR e i dati in EEDR. Se i bit EEPMn sono 0b10, la scrittura dell'EEPE (entro quattro cicli dopo la scrittura di EEMPE) attiverà solo l'operazione di scrittura (il tempo di programmazione è dato in Tabella 5-1 a pagina 21). Il bit EEPE rimane impostato fino al completamento dell'operazione di scrittura. Se la posizione da scrivere non è stata cancellata prima della scrittura, i dati memorizzati devono essere considerati persi. Mentre il dispositivo è impegnato con la programmazione, non è possibile eseguire altre operazioni EEPROM.

L'oscillatore calibrato viene utilizzato per temporizzare gli accessi alla EEPROM. Assicurati che la frequenza dell'oscillatore rientri nei requisiti descritti in "OSCCAL - Registro di calibrazione dell'oscillatore" a pagina 31.

Il seguente codice esampi le mostrano un assembly e una funzione C per la cancellazione, la scrittura o la scrittura atomica della EEPROM. L'exampi le presuppongono che gli interrupt siano controllati (ad esempio, disabilitandoli globalmente) in modo che non si verifichino interrupt durante l'esecuzione di queste funzioni.

Codice assemblaggio Example
EEPROM_scrivi:

; Attendi il completamento della scrittura precedente

sbic EECR,EEPE

rjmp EEPROM_scrittura

; Impostare la modalità di programmazione

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

fuori EECR, r16

; Impostare l'indirizzo (r18: r17) nel registro degli indirizzi

fuori EEARH, r18

fuori EEARL, r17

; Scrive i dati (r19) nel registro dati

fuori EEDR, r19

; Scrivi uno logico in EEMPE

sbi EECR,EEMPE

; Avvia la scrittura della eeprom impostando EEPE

sbi EECR,EEPE

ritirare

Codice C Example
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)

{

/* Attendi il completamento della scrittura precedente */ while(EECR & (1<

;

/* Imposta la modalità di programmazione */

EECR = (0 <

/ * Imposta indirizzo e registri dati * / EEAR = ucAddress;

EDR = ucData;

/* Scrive quello logico in EEMPE */

EECR | = (1 <

/ * Avvia la scrittura della eeprom impostando EEPE * /

EECR | = (1 <

}

Il prossimo codice exampi le mostrano le funzioni assembly e C per la lettura della EEPROM. L'exampi le presuppongono che gli interrupt siano controllati in modo che non si verifichino interruzioni durante l'esecuzione di queste funzioni.

Codice assemblaggio Example
EEPROM_leggi:

; Attendi il completamento della scrittura precedente

sbic EECR,EEPE

rjmp EEPROM_lettura

; Impostare l'indirizzo (r18: r17) nel registro degli indirizzi

fuori EEARH, r18

fuori EEARL, r17

; Inizia la lettura della eeprom scrivendo EERE

sbi EECR,EERE

; Leggere i dati dal registro dati

in r16,EEDR

ritirare

Codice C Example
unsigned char EEPROM_read(unsigned char ucAddress)

{

/ * Attendi il completamento della scrittura precedente * /

mentre (EECR & (1 <

;

/ * Imposta il registro degli indirizzi * / EEAR = ucAddress;

/* Avvia la lettura della eeprom scrivendo EERE */

EECR | = (1 <

/ * Restituisce dati dal registro dati * /

restituire l'EDR;

}

Prevenire la corruzione della EEPROM

Durante i periodi di basso VCC, i dati EEPROM possono essere corrotti perché il volume di alimentazionetage è troppo basso per il corretto funzionamento della CPU e della EEPROM. Questi problemi sono gli stessi dei sistemi a livello di scheda che utilizzano EEPROM e dovrebbero essere applicate le stesse soluzioni di progettazione.

Un danneggiamento dei dati EEPROM può essere causato da due situazioni in cui il volumetage è troppo basso. Innanzitutto, una normale sequenza di scrittura sulla EEPROM richiede un volume minimotage per funzionare correttamente. In secondo luogo, la stessa CPU può eseguire istruzioni in modo errato, se il volume di alimentazionetage è troppo basso.

La corruzione dei dati EEPROM può essere facilmente evitata seguendo questa raccomandazione di progettazione:

Mantenere attivo (basso) l'AVR RESET durante i periodi di alimentazione insufficiente voltage. Questo può essere fatto abilitando il rilevatore di Brown-out interno (BOD). Se il livello di rilevamento del BOD interno non corrisponde al

livello di rilevamento necessario, è possibile utilizzare un circuito di protezione reset VCC esterno basso. Se si verifica un ripristino mentre è in corso un'operazione di scrittura, l'operazione di scrittura verrà completata a condizione che l'alimentazione voltage è sufficiente.

Memoria I / O

La definizione dello spazio I / O di ATtiny25 / 45/85 è mostrata in "Riepilogo registrazione" a pagina 200.

Tutti gli I / O e le periferiche ATtiny25 / 45/85 sono posizionati nello spazio I / O. È possibile accedere a tutte le posizioni I / O tramite le istruzioni LD / LDS / LDD e ST / STS / STD, trasferendo i dati tra i 32 registri di lavoro generici e lo spazio I / O. I registri I / O all'interno dell'intervallo di indirizzi 0x00 - 0x1F sono direttamente accessibili tramite bit utilizzando le istruzioni SBI e CBI. In questi registri, il valore dei singoli bit può essere verificato utilizzando le istruzioni SBIS e SBIC. Fare riferimento alla sezione relativa al set di istruzioni per maggiori dettagli. Quando si utilizzano i comandi specifici di I / O IN e OUT, è necessario utilizzare gli indirizzi di I / O 0x00 - 0x3F. Quando si indirizzano i registri I / O come spazio dati utilizzando le istruzioni LD e ST, è necessario aggiungere 0x20 a questi indirizzi.

Per compatibilità con dispositivi futuri, i bit riservati dovrebbero essere scritti a zero se si accede. Gli indirizzi di memoria I / O riservati non devono mai essere scritti.

Alcuni dei flag di stato vengono cancellati scrivendovi uno logico. Si noti che le istruzioni CBI e SBI funzioneranno solo sul bit specificato e possono quindi essere utilizzate su registri contenenti tali flag di stato. Le istruzioni CBI e SBI funzionano solo con i registri da 0x00 a 0x1F.

I registri di controllo degli I / O e delle periferiche sono spiegati nelle sezioni successive.

Descrizione registro

EEARH - Registro indirizzi EEPROM

Morso 7 6 5 4 3 2 1 0
0x1F EEAR8 EARH
Leggere/scrivere R R R R R R R R/N
Valore iniziale 0 0 0 0 0 0 0 X/0

Bit 7: 1 - Ris: Bit riservati

Questi bit sono riservati per un utilizzo futuro e verranno sempre letti come zero.

Bit 0 - EEAR8: indirizzo EEPROM

Questo è il bit di indirizzo EEPROM più significativo di ATtiny85. Nei dispositivi con meno EEPROM, cioè ATtiny25 / ATtiny45, questo bit è riservato e leggerà sempre zero. Il valore iniziale dell'EEPROM Address Register (EEAR) non è definito e quindi è necessario scrivere un valore appropriato prima di accedere alla EEPROM.

EEARL - Registro indirizzi EEPROM

Morso

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EARL
Posteriore / Scrivi R/N R/N R/N R/N R/N R/N R/N R/N
Valore iniziale X X X X X X X X

Bit 7 - EEAR7: indirizzo EEPROM

Questo è il bit di indirizzo EEPROM più significativo di ATtiny45. Nei dispositivi con meno EEPROM, cioè ATtiny25, questo bit è riservato e leggerà sempre zero. Il valore iniziale dell'EEPROM Address Register (EEAR) non è definito e quindi è necessario scrivere un valore appropriato prima di accedere alla EEPROM.

Bit 6: 0 - EEAR [6: 0]: indirizzo EEPROM

Questi sono i bit (bassi) del registro degli indirizzi EEPROM. I byte di dati EEPROM vengono indirizzati linearmente nell'intervallo 0… (128/256 / 512-1). Il valore iniziale di EEAR non è definito e quindi deve essere scritto un valore appropriato prima di poter accedere alla EEPROM.

EEDR - Registro dati EEPROM

Morso 7 6 5 4 3 2 1 0
0x1D EDDR7 EDDR6 EDDR5 EDDR4 EDDR3 EDDR2 EDDR1 EDDR0 EDDR
Leggere/scrivere R/N R/N R/N R/N R/N R/N R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

Per l'operazione di scrittura EEPROM il registro EEDR contiene i dati da scrivere nella EEPROM nell'indirizzo fornito dal registro EEAR. Per l'operazione di lettura EEPROM, l'EEDR contiene i dati letti dal file

EEPROM all'indirizzo fornito da EEAR.

 

5.5.4 EECR - Registro di controllo EEPROM

Bit 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 SPAVENTOSO EEMPE EPE EERE CEECR
Lettura / scrittura R R R / W R/N R/N R/N R/N R/N
Valore iniziale 0 0 X X 0 0 X 0

Bit 7 - Ris: bit riservato

Questo bit è riservato per un uso futuro e sarà sempre letto come 0 in ATtiny25 / 45/85. Per la compatibilità con i futuri dispositivi AVR, scrivere sempre questo bit a zero. Dopo aver letto, maschera questo pezzo.

Bit 6 - Ris: bit riservato

Questo bit è riservato nell'ATtiny25 / 45/85 e sarà sempre letto come zero.

Bit 5: 4 - EEPM [1: 0]: Bit della modalità di programmazione EEPROM

L'impostazione dei bit della modalità di programmazione EEPROM definisce quale azione di programmazione verrà attivata durante la scrittura dell'EEPE. È possibile programmare i dati in un'unica operazione atomica (cancellare il vecchio valore e programmare il nuovo valore) o suddividere le operazioni di cancellazione e scrittura in due diverse operazioni. I tempi di programmazione per le diverse modalità sono mostrati in Tabella 5-1. Mentre EEPE è impostato, qualsiasi scrittura su EEPMn verrà ignorata. Durante il ripristino, i bit EEPMn verranno ripristinati a 0b00 a meno che la EEPROM non sia impegnata nella programmazione.

Tabella 5-1. Bit modalità EEPROM

EEPM1 EEPM0 Tempo di programmazione Operazione
0 0 3.4 millisecondi Cancella e scrivi in ​​una sola operazione (operazione atomica)
0 1 1.8 millisecondi Cancella solo
1 0 1.8 millisecondi Solo scrittura
1 1 Riservato per uso futuro

Bit 3 - EERIE: abilitazione interrupt pronto EEPROM

La scrittura di EERIE su uno abilita l'interrupt pronto EEPROM se è impostato il bit I in SREG. Scrivere EERIE a zero disabilita l'interruzione. L'interrupt pronto EEPROM genera un interrupt costante quando la memoria non volatile è pronta per la programmazione.

Bit 2 - EEMPE: Abilitazione programma master EEPROM

Il bit EEMPE determina se la scrittura di EEPE su uno avrà effetto o meno.

Quando EEMPE è impostato, l'impostazione di EEPE entro quattro cicli di clock programmerà l'EEPROM all'indirizzo selezionato. Se EEMPE è zero, l'impostazione di EEPE non avrà alcun effetto. Quando EEMPE è stato scritto su uno dal software, l'hardware azzera il bit dopo quattro cicli di clock.

Bit 1 - EEPE: abilitazione programma EEPROM

Il segnale di abilitazione del programma EEPROM EEPE è il segnale di abilitazione alla programmazione per la EEPROM. Quando viene scritta EEPE, la EEPROM verrà programmata in base all'impostazione dei bit EEPMn. Il bit EEMPE deve essere scritto su uno prima di scrivere uno logico su EEPE, altrimenti non avviene alcuna scrittura EEPROM. Quando il tempo di accesso in scrittura è trascorso, il bit EEPE viene cancellato dall'hardware. Quando EEPE è stato impostato, la CPU viene arrestata per due cicli prima che venga eseguita l'istruzione successiva.

Bit 0 - EERE: abilitazione lettura EEPROM

Il segnale di abilitazione lettura EEPROM - EERE - è lo strobo di lettura alla EEPROM. Quando l'indirizzo corretto è impostato nel registro EEAR, il bit EERE deve essere scritto su uno per attivare la lettura EEPROM. L'accesso in lettura alla EEPROM richiede un'istruzione ei dati richiesti sono immediatamente disponibili. Quando la EEPROM viene letta, la CPU viene arrestata per quattro cicli prima che venga eseguita l'istruzione successiva. L'utente deve interrogare il bit EEPE prima di avviare l'operazione di lettura. Se è in corso un'operazione di scrittura, non è possibile né leggere la EEPROM, né modificare il registro EEAR.

Orologio di sistema e opzioni dell'orologio

Sistemi di clock e loro distribuzione

Distribuzione dell'orologio

Orologio della CPU

L'orologio della CPU è indirizzato alle parti del sistema interessate al funzionamento del core dell'AVR. Exampi di tali moduli sono il General Purpose Register File, lo Status Register e la Data memory che contiene lo Stack Pointer. L'arresto dell'orologio della CPU impedisce al core di eseguire operazioni e calcoli generali.

Orologio I / O - clkI / O

L'orologio I / O è utilizzato dalla maggior parte dei moduli I / O, come Timer / Counter. L'orologio di I / O viene utilizzato anche dal modulo Interrupt esterno, ma si noti che alcuni interrupt esterni vengono rilevati dalla logica asincrona, consentendo il rilevamento di tali interruzioni anche se l'orologio di I / O viene arrestato.

Flash Clock - clkFLASH

L'orologio Flash controlla il funzionamento dell'interfaccia Flash. L'orologio Flash è normalmente attivo contemporaneamente all'orologio della CPU.

Orologio ADC - clkADC

L'ADC è dotato di un dominio di clock dedicato. Ciò consente di arrestare la CPU e i clock I / O per ridurre il rumore generato dai circuiti digitali. Ciò fornisce risultati di conversione ADC più accurati.

PLL interno per la generazione veloce di clock periferici - clkPCK

Il PLL interno in ATtiny25 / 45/85 genera una frequenza di clock che è 8 volte moltiplicata da un ingresso sorgente. Per impostazione predefinita, il PLL utilizza l'uscita dell'oscillatore RC interno a 8.0 MHz come sorgente. In alternativa, se è impostato il bit LSM di PLLCSR, il PLL utilizzerà l'uscita dell'oscillatore RC diviso per due. Quindi l'uscita del PLL, il clock periferico veloce è di 64 MHz. Il clock periferico veloce, o un clock prescalato da quello, può essere selezionato come sorgente clock per Timer / Counter1 o come clock di sistema. Vedere Figura 6-2. La frequenza del clock periferico veloce è divisa per due quando è impostato LSM di PLLCSR, risultando in una frequenza di clock di 32 MHz. Si noti che LSM non può essere impostato se PLLCLK viene utilizzato come orologio di sistema.

Figura 6-2. Sistema di clock PCK. Clock PCK

Il PLL è bloccato sull'oscillatore RC e la regolazione dell'oscillatore RC tramite il registro OSCCAL regolerà contemporaneamente il clock periferico veloce. Tuttavia, anche se l'oscillatore RC viene portato a una frequenza superiore a 8 MHz, la frequenza di clock periferica veloce si satura a 85 MHz (caso peggiore) e rimane oscillante alla frequenza massima. Va notato che il PLL in questo caso non è più bloccato con l'orologio dell'oscillatore RC. Pertanto, si raccomanda di non portare le regolazioni OSCCAL su una frequenza superiore a 8 MHz per mantenere il PLL nel corretto intervallo operativo.

Il PLL interno è abilitato quando:

Il bit PLLE nel registro PLLCSR è impostato.

Il fusibile CKSEL è programmato su "0001".

Il fusibile CKSEL è programmato su "0011".

Il bit PLLCSR PLOCK è impostato quando PLL è bloccato. Sia l'oscillatore RC interno che il PLL sono spenti nelle modalità di spegnimento e stand-by.

PLL interno in modalità di compatibilità ATtiny15

Poiché ATtiny25 / 45/85 è un dispositivo di migrazione per gli utenti di ATtiny15, esiste una modalità di compatibilità ATtiny15 per la retrocompatibilità. La modalità di compatibilità ATtiny15 viene selezionata programmando i fusibili CKSEL su "0011".

Nella modalità di compatibilità ATtiny15 la frequenza dell'oscillatore RC interno è calibrata fino a 6.4 MHz e il fattore di moltiplicazione del PLL è impostato a 4x. Vedere Figura 6-3. Con queste regolazioni il sistema di clock è compatibile con ATtiny15 e il clock periferico veloce risultante ha una frequenza di 25.6 MHz (come in ATtiny15).

Figura 6-3. Sistema di clocking PCK in modalità di compatibilità ATtiny15. Sistema di timbratura

Fonti dell'orologio

Il dispositivo dispone delle seguenti opzioni di sorgente di clock, selezionabili dai bit del fusibile flash come mostrato di seguito. Il clock della sorgente selezionata viene immesso nel generatore di clock dell'AVR e indirizzato ai moduli appropriati.

Tabella 6-1. Opzioni timbratura dispositivo Selezionare

Opzione di sincronizzazione del dispositivo CKSEL[3:0](1)
Orologio esterno (Vedere pagina 26) 0000
Orologio PLL ad alta frequenza (Vedere pagina 26) 0001
Oscillatore interno calibrato (Vedere pagina 27) 0010(2)
Oscillatore interno calibrato (Vedere pagina 27) 0011(3)
Oscillatore interno da 128 kHz (Vedere pagina 28) 0100
Oscillatore in cristallo a bassa frequenza (Vedere pagina 29) 0110
Oscillatore in cristallo / risonatore ceramico (Vedere pagina 29) 1000 – 1111
Prenotato 0101, 0111

Per tutti i fusibili "1" significa non programmato mentre "0" significa programmato.

Il dispositivo viene spedito con questa opzione selezionata.

Questo selezionerà la modalità di compatibilità ATtiny15, dove il clock di sistema è diviso per quattro, risultando in una frequenza di clock di 1.6 MHz. Per ulteriori informazioni, vedere "Oscillatore interno calibrato" a pagina 27.

Le varie scelte per ciascuna opzione di timbratura sono fornite nelle sezioni seguenti. Quando la CPU si riattiva dallo spegnimento, la sorgente di clock selezionata viene utilizzata per temporizzare l'avvio, garantendo un funzionamento stabile dell'oscillatore prima dell'inizio dell'esecuzione dell'istruzione. Quando la CPU si avvia dal ripristino, c'è un ritardo aggiuntivo che consente alla potenza di raggiungere un livello stabile prima di iniziare il normale funzionamento. L'oscillatore Watchdog viene utilizzato per cronometrare questa parte in tempo reale del tempo di avvio. Il numero di cicli dell'oscillatore WDT utilizzati per ogni timeout è mostrato in Tabella 6-2.

Tabella 6-2. Numero di cicli dell'oscillatore watchdog

Tipo Timeout Numero di cicli
4 millisecondi 512
64 millisecondi 8 mila (8,192)

Orologio esterno

Per pilotare il dispositivo da una sorgente di clock esterna, CLKI deve essere pilotato come mostrato in Figura 6-4. Per far funzionare il dispositivo su un orologio esterno, i fusibili CKSEL devono essere programmati su "00".

Figura 6-4. Configurazione dell'unità orologio esterna

Figura 6.4

Quando è selezionata questa sorgente di clock, i tempi di avvio sono determinati dai fusibili SUT come mostrato in Tabella 6-3.

Tabella 6-3. Tempi di avvio per la selezione dell'orologio esterno

SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino Utilizzo consigliato
00 6 CK 14CK BOD abilitato
01 6 CK 14CK + 4ms Potenza in rapida crescita
10 6 CK 14CK + 64ms Potenza in lento aumento
11 Prenotato

Quando si applica un clock esterno, è necessario evitare cambiamenti improvvisi nella frequenza di clock applicata per garantire un funzionamento stabile dell'MCU. Una variazione di frequenza superiore al 2% da un ciclo di clock al successivo può portare a comportamenti imprevedibili. È necessario garantire che l'MCU sia mantenuto in Reset durante tali cambiamenti nella frequenza di clock.

Si noti che la prevendita dell'orologio di sistema può essere utilizzata per implementare le modifiche del tempo di esecuzione della frequenza dell'orologio interno pur garantendo un funzionamento stabile. Fare riferimento a "Prescaler dell'orologio di sistema" a pagina 31 per maggiori dettagli.

Orologio PLL ad alta frequenza

Esiste un PLL interno che fornisce una frequenza di clock nominalmente di 64 MHz bloccata all'oscillatore RC per l'uso del timer / contatore periferico1 e per la sorgente del clock di sistema. Quando selezionato come sorgente del clock di sistema, programmando i fusibili CKSEL su '0001', viene diviso per quattro come mostrato in Tabella 6-4.

Tabella 6-4. Modalità operative del clock PLL ad alta frequenza

CKSEL[3:0] Frequenza nominale
0001 16 MHz

Quando è selezionata questa sorgente di clock, i tempi di avvio sono determinati dai fusibili SUT come mostrato in Tabella 6-5.

Tabella 6-5. Tempi di avvio per il clock PLL ad alta frequenza

SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino all'accensione (VCC = 5.0 V) Utilizzo consigliato
00 14CK + 1K (1024) CK + 4ms 4 millisecondi BOD abilitato

Tabella 6-5. Tempi di avvio per il clock PLL ad alta frequenza

SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino all'accensione (VCC = 5.0 V) Utilizzo consigliato
01 14CK + 16K (16384) CK + 4ms 4 millisecondi Potenza in rapida crescita
10 14CK + 1K (1024) CK + 64ms 4 millisecondi Potenza in lento aumento
11 14CK + 16K (16384) CK + 64ms 4 millisecondi Potenza in lento aumento

Oscillatore interno calibrato

Per impostazione predefinita, l'oscillatore RC interno fornisce un clock di circa 8.0 MHz. Sebbene voltage dipendente dalla temperatura, questo orologio può essere calibrato molto accuratamente dall'utente. Vedere “Accumulatore oscillatore RC interno calibrato audace "a pagina 164 "Velocità oscillatore interno" a pagina 192 per ulteriori dettagli. Il dispositivo viene spedito con il fusibile CKDIV8 programmato. Vedere "Prescaler dell'orologio di sistema" a pagina 31 per maggiori dettagli.

Questo orologio può essere selezionato come orologio di sistema programmando i fusibili CKSEL come mostrato in Tabella 6-6 a pagina

27. Se selezionato, funzionerà senza componenti esterni. Durante il ripristino, l'hardware carica il valore di calibrazione preprogrammato nel registro OSCCAL e quindi calibra automaticamente l'oscillatore RC. La precisione di questa calibrazione viene mostrata come Calibrazione di fabbrica in Tabella 21-2 a pagina 164.

Modificando il registro OSCCAL da SW, vedere "OSCCAL - Registro di calibrazione dell'oscillatore" a pagina 31, è possibile ottenere una maggiore precisione di calibrazione rispetto all'utilizzo della calibrazione di fabbrica. La precisione di questa calibrazione viene mostrata come Calibrazione utente in Tabella 21-2 a pagina 164.

Quando questo oscillatore viene utilizzato come clock del chip, l'oscillatore watchdog verrà comunque utilizzato per il timer watchdog e per il timeout di ripristino. Per ulteriori informazioni sul valore di calibrazione preprogrammato, vedere la sezione "Cali- bration Bytes "a pagina 150.

L'oscillatore interno può anche essere impostato per fornire un clock di 6.4 MHz scrivendo i fusibili CKSEL su "0011", come mostrato in Tabella 6-6 sotto. Questa impostazione è indicata come modalità di compatibilità ATtiny15 e ha lo scopo di fornire una sorgente di clock calibrata a 6.4 MHz, come in ATtiny15. Nella modalità di compatibilità ATtiny15 il PLL utilizza l'oscillatore interno funzionante a 6.4 MHz per generare un segnale di clock periferico a 25.6 MHz per Timer / Counter1 (vedere "Timer / contatore a 8 bit 1 in Modalità ATtiny15 ”a pagina 95). Notare che in questa modalità di funzionamento il segnale di clock a 6.4 MHz è sempre diviso per quattro, fornendo un clock di sistema a 1.6 MHz.

Tabella 6-6. Modalità operative dell'oscillatore RC calibrato interno

CKSEL[3:0] Frequenza nominale
0010(1) 8.0 MHz
0011(2) 6.4 MHz

Il dispositivo viene spedito con questa opzione selezionata.

Questa impostazione seleziona la modalità di compatibilità ATtiny15, in cui l'orologio di sistema è diviso per quattro, ottenendo una frequenza di clock di 1.6 MHz.

Quando l'oscillatore interno calibrato a 8 MHz è selezionato come sorgente di clock, i tempi di avvio sono determinati dai fusibili SUT come mostrato in Tabella 6-7 sotto.

Tabella 6-7. Tempi di avvio per il clock dell'oscillatore RC calibrato interno

SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino (VCC = 5.0 V) Utilizzo consigliato
00 6 CK 14CK(1) BOD abilitato
01 6 CK 14CK + 4ms Potenza in rapida crescita
10(2) 6 CK 14CK + 64ms Potenza in lento aumento
11 Prenotato

1. Se il fusibile RSTDISBL è programmato, questo tempo di avvio verrà aumentato a 14CK + 4 ms per garantire l'accesso alla modalità di programmazione.
2. Il dispositivo viene spedito con questa opzione selezionata.

Nella modalità di compatibilità ATtiny15 i tempi di avvio sono determinati dai fusibili SUT come mostrato in Tabella 6-8 sotto.

Tabella 6-8. Tempi di avvio per il clock dell'oscillatore RC calibrato interno (in modalità ATtiny15)

SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino (VCC = 5.0 V) Utilizzo consigliato
00 6 CK 14CK + 64ms
01 6 CK 14CK + 64ms
10 6 CK 14CK + 4ms
11 1 CK 14CK(1)

Nota: se il fusibile RSTDISBL è programmato, questo tempo di avvio verrà aumentato a 14CK + 4 ms per garantire l'accesso alla modalità di programmazione.

In sintesi, ulteriori informazioni sulla modalità di compatibilità ATtiny15 sono disponibili nelle sezioni "Porta B (PB5: PB0)" pagina 2"PLL interno in modalità di compatibilità ATtiny15" a pagina 24"Timer / contatore 8 a 1 bit in modalità ATtiny15" attivato pagina 95"Limitazioni di debugWIRE" a pagina 140"Byte di calibrazione" a pagina 150 e in tabella "Orologio Prescaler Seleziona "a pagina 33.

Oscillatore interno da 128 kHz

L'oscillatore interno da 128 kHz è un oscillatore a bassa potenza che fornisce un clock di 128 kHz. La frequenza è nominale a 3V e 25°C. Questo orologio può essere selezionato come orologio di sistema programmando i fusibili CKSEL su “0100”.

Quando è selezionata questa sorgente di clock, i tempi di avvio sono determinati dai fusibili SUT come mostrato in Tabella 6-9.

Tabella 6-9. Tempi di avvio per l'oscillatore interno da 128 kHz

SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino Utilizzo consigliato
00 6 CK 14CK(1) BOD abilitato
01 6 CK 14CK + 4ms Potenza in rapida crescita
10 6 CK 14CK + 64ms Potenza in lento aumento
11 Prenotato

Nota: se il fusibile RSTDISBL è programmato, questo tempo di avvio verrà aumentato a 14CK + 4 ms per garantire l'accesso alla modalità di programmazione.

Oscillatore in cristallo a bassa frequenza

Per utilizzare un orologio a 32.768 kHz come sorgente di clock per il dispositivo, è necessario selezionare l'oscillatore a cristalli a bassa frequenza impostando i fusibili CKSEL su "0110". Il cristallo dovrebbe essere collegato come mostrato in Figura 6-5. Per trovare la capacità di carico adatta per un crysal a 32.768 kHz, consultare la scheda tecnica del produttore.

Quando è selezionato questo oscillatore, i tempi di avvio sono determinati dai fusibili SUT come mostrato in Tabella 6-10.

Tabella 6-10. Tempi di avvio per la selezione dell'orologio dell'oscillatore a cristallo a bassa frequenza

SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino (VCC = 5.0 V) Utilizzo consigliato
00 1K (1024) CK(1) 4 millisecondi Potenza in aumento veloce o BOD abilitato
01 1K (1024) CK(1) 64 millisecondi Potenza in lento aumento
10 32K (32768) CK 64 millisecondi Frequenza stabile all'avvio
11 Prenotato

Nota: queste opzioni devono essere utilizzate solo se la stabilità della frequenza all'avvio non è importante.

L'oscillatore a cristallo a bassa frequenza fornisce una capacità di carico interna, vedere Tabella 6-11 a ogni pin TOSC.

Tabella 6-11. Capacità dell'oscillatore a cristallo a bassa frequenza

Dispositivo Osc. 32 kHz genere Cap (Xtal1 / Tosc1) Cap (Xtal2 / Tosc2)
ATtiny25 / 45/85 Osc di sistema. 16 pF 6 pF

Oscillatore in cristallo / risonatore ceramico

XTAL1 e XTAL2 sono rispettivamente ingresso e uscita di un inversione amplifier che può essere configurato per l'uso come oscillatore su chip, come mostrato in Figura 6-5. Può essere utilizzato un cristallo di quarzo o un risonatore ceramico.

C1 e C2 dovrebbero essere sempre uguali sia per i cristalli che per i risonatori. Il valore ottimale dei condensatori dipende dal cristallo o dal risonatore in uso, dalla quantità di capacità parassita e dal rumore elettromagnetico dell'ambiente. Vengono fornite alcune linee guida iniziali per la scelta dei condensatori da utilizzare con i cristalli Tabella 6-12 sotto. Per i risonatori ceramici, devono essere utilizzati i valori del condensatore forniti dal produttore.

Tabella 6-12. Modalità operative dell'oscillatore a cristallo

CKSEL[3:1] Gamma di frequenza (MHz) Intervallo consigliato per i condensatori C1 e C2 per l'uso con cristalli (pF)
100(1) 0.4 – 0.9
101 0.9 – 3.0 12 – 22
110 3.0 – 8.0 12 – 22
111 8.0 – 12 – 22

Note: questa opzione non deve essere utilizzata con i cristalli, solo con risonatori in ceramica.

L'oscillatore può funzionare in tre diverse modalità, ciascuna ottimizzata per una specifica gamma di frequenze. La modalità di funzionamento è selezionata dai fusibili CKSEL [3: 1] come mostrato in Tabella 6-12.

Il fusibile CKSEL0 insieme ai fusibili SUT [1: 0] selezionano i tempi di avvio come mostrato in Tabella 6-13.

Tabella 6-13. Tempi di avvio per la selezione dell'orologio dell'oscillatore al cristallo

CKSEL0 SULLA SCHIENA[1:0] Tempo di avvio dallo spegnimento Ritardo aggiuntivo dal ripristino Utilizzo consigliato
0 00 258 CK(1) 14CK + 4ms Risonatore ceramico, potenza in rapida ascesa
0 01 258 CK(1) 14CK + 64ms Risonatore in ceramica, potenza in lento aumento
0 10 1K (1024) CK(2) 14CK Risuonatore ceramico, abilitato BOD
0 11 1K (1024) CK(2) 14CK + 4ms Risonatore ceramico, potenza in rapida ascesa
1 00 1K (1024) CK(2) 14CK + 64ms Risonatore in ceramica, potenza in lento aumento
1 01 16K (16384) CK 14CK Oscillatore in cristallo, BOD abilitato
1 10 16K (16384) CK 14CK + 4ms Oscillatore in cristallo, potenza in rapida crescita
1 11 16K (16384) CK 14CK + 64ms Oscillatore di cristallo, potenza in lento aumento

Appunti

Queste opzioni devono essere utilizzate solo quando non si opera vicino alla frequenza massima del dispositivo e solo se la stabilità della frequenza all'avvio non è importante per l'applicazione. Queste opzioni non sono adatte per i cristalli.

Queste opzioni sono destinate all'uso con risuonatori ceramici e garantiranno la stabilità della frequenza all'avvio. Possono essere utilizzati anche con cristalli quando non operano vicino alla frequenza massima del dispositivo e se la stabilità della frequenza all'avvio non è importante per l'applicazione.

Sorgente di clock predefinita

Il dispositivo viene spedito con CKSEL = “0010”, SUT = “10” e CKDIV8 programmati. L'impostazione predefinita della sorgente di clock è quindi l'oscillatore RC interno che funziona a 8 MHz con il tempo di avvio più lungo e un clock di sistema iniziale prescaling di 8, con conseguente clock di sistema di 1.0 MHz. Questa impostazione predefinita garantisce che tutti gli utenti possano effettuare l'impostazione della sorgente di clock desiderata utilizzando un In-System o High-voltage Programmatore.

Prescaler orologio di sistema

L'orologio di sistema di ATtiny25 / 45/85 può essere diviso impostando il "CLKPR - Clock Prescale Register" a pagina 32. Questa funzione può essere utilizzata per ridurre il consumo energetico quando la richiesta di potenza di elaborazione è bassa. Questo può essere utilizzato con tutte le opzioni della sorgente di clock e influirà sulla frequenza di clock della CPU e di tutte le periferiche sincrone. clkI/O, clkADC, clkCPU e clkFLASH sono divisi per un fattore come mostrato in Tabella 6-15 a pagina 33.

Tempo di commutazione

Quando si passa tra le impostazioni del prescaler, il System Clock Prescaler garantisce che non si verifichino anomalie nel sistema di clock e che nessuna frequenza intermedia sia superiore né alla frequenza di clock corrispondente all'impostazione precedente, né alla frequenza di clock corrispondente alla nuova impostazione.

Il contatore di ondulazione che implementa il prescaler funziona alla frequenza del clock indiviso, che può essere più veloce della frequenza di clock della CPU. Pertanto, non è possibile determinare lo stato del prescaler, anche se fosse leggibile e il tempo esatto necessario per passare da una divisione di clock a un'altra non può essere previsto esattamente.

Dal momento in cui vengono scritti i valori CLKPS, ci vuole tra T1 + T2 e T1 + 2 * T2 prima che la nuova frequenza di clock sia attiva. In questo intervallo vengono prodotti 2 fronti di clock attivi. In questo caso, T1 è il periodo di clock precedente e T2 è il periodo corrispondente alla nuova impostazione del prescaler.

Buffer di uscita del clock

Il dispositivo può emettere l'orologio di sistema sul pin CLKO (se non utilizzato come pin XTAL2). Per abilitare l'uscita è necessario programmare il fusibile CKOUT. Questa modalità è adatta quando il chip clock viene utilizzato per pilotare altri circuiti sul sistema. Notare che l'orologio non verrà emesso durante il ripristino e che il normale funzionamento del pin I / O verrà ignorato quando viene programmato il fusibile. Quando il clock viene emesso su CLKO, è possibile selezionare l'oscillatore RC interno, l'oscillatore WDT, il PLL e il clock esterno (CLKI). Gli oscillatori a cristallo (XTAL1, XTAL2) non possono essere utilizzati per l'uscita del clock su CLKO. Se viene utilizzato il System Clock Prescaler, viene emesso l'orologio di sistema diviso.

Descrizione registro

OSCCAL - Registro di calibrazione dell'oscillatore

Morso 7 6 5 4 3 2 1 0
0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCALE
Leggere/scrivere R/N R/N R/N R/N R/N R/N R/N R/N

Bit 7: 0 - CAL [7: 0]: valore di calibrazione dell'oscillatore

Il registro di calibrazione dell'oscillatore viene utilizzato per regolare l'oscillatore RC interno calibrato per rimuovere le variazioni di processo dalla frequenza dell'oscillatore. Un valore di calibrazione preprogrammato viene scritto automaticamente in questo registro durante il ripristino del chip, fornendo la frequenza calibrata in fabbrica come specificato in Tabella 21-2 a pagina 164. Il software applicativo può scrivere questo registro per modificare la frequenza dell'oscillatore. L'oscillatore può essere calibrato sulle frequenze come specificato in Tabella 21-2 a pagina 164. La calibrazione al di fuori di tale intervallo non è garantita.

Notare che questo oscillatore viene utilizzato per temporizzare gli accessi in scrittura a EEPROM e Flash, e questi tempi di scrittura saranno influenzati di conseguenza. Se la EEPROM o la Flash sono scritte, non calibrare a più di 8.8 MHz. In caso contrario, la scrittura EEPROM o Flash potrebbe non riuscire.

Il bit CAL7 determina il range di funzionamento dell'oscillatore. Impostando questo bit su 0 si ottiene la gamma di frequenza più bassa, impostando questo bit su 1 si ottiene la gamma di frequenza più alta. Le due gamme di frequenza si sovrappongono, in altre parole un'impostazione di OSCCAL = 0x7F fornisce una frequenza maggiore di OSCCAL = 0x80.

I bit CAL [6: 0] vengono utilizzati per sintonizzare la frequenza all'interno dell'intervallo selezionato. Un'impostazione di 0x00 fornisce la frequenza più bassa in quella gamma e un'impostazione di 0x7F dà la frequenza più alta nella gamma.

Per garantire un funzionamento stabile dell'MCU, il valore di calibrazione deve essere modificato in piccolo. Una variazione della frequenza di oltre il 2% da un ciclo all'altro può portare a comportamenti imprevedibili. Le modifiche in OSCCAL non devono superare 0x20 per ciascuna calibrazione. È necessario garantire che l'MCU sia mantenuto in Reset durante tali cambiamenti nella frequenza di clock

Tabella 6-14. Intervallo di frequenza dell'oscillatore RC interno

Valore OSCCALE Frequenza minima tipica rispetto alla frequenza nominale Frequenza massima tipica rispetto alla frequenza nominale
0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR - Registro della prescala dell'orologio

Morso 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Leggere/scrivere R/N R R R R/N R/N R/N R/N

Valore iniziale 0 0 0 0 Vedere la descrizione dei bit

Bit 7 - CLKPCE: abilitazione modifica del prescaler dell'orologio

Il bit CLKPCE deve essere scritto in uno logico per abilitare la modifica dei bit CLKPS. Il bit CLKPCE viene aggiornato solo quando gli altri bit in CLKPR vengono scritti simultaneamente a zero. CLKPCE viene cancellato dall'hardware quattro cicli dopo che è stato scritto o quando vengono scritti i bit CLKPS. La riscrittura del bit CLKPCE entro questo periodo di timeout non estende il periodo di timeout e non cancella il bit CLKPCE.

Bit 6: 4 - Ris: Bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 3: 0 - CLKPS [3: 0]: Selezione del prescaler dell'orologio Bit 3 - 0

Questi bit definiscono il fattore di divisione tra la sorgente di clock selezionata e il clock di sistema interno. Questi bit possono essere scritti in fase di esecuzione per variare la frequenza di clock in base ai requisiti dell'applicazione. Poiché il divisore divide l'ingresso del master clock all'MCU, la velocità di tutte le periferiche sincrone viene ridotta quando viene utilizzato un fattore di divisione. Vengono forniti i fattori di divisione Tabella 6-15.

Per evitare modifiche involontarie della frequenza di clock, è necessario seguire una speciale procedura di scrittura per modificare i bit CLKPS:

Scrivere il bit CLKPCE (Clock Prescaler Change Enable) su uno e tutti gli altri bit in CLKPR su zero.

Entro quattro cicli, scrivere il valore desiderato in CLKPS mentre si scrive uno zero in CLKPCE.

Gli interrupt devono essere disabilitati quando si modifica l'impostazione del prescaler per assicurarsi che la procedura di scrittura non venga interrotta.

Il fusibile CKDIV8 determina il valore iniziale dei bit CLKPS. Se CKDIV8 non è programmato, i bit CLKPS verranno reimpostati su "0000". Se è programmato CKDIV8, i bit CLKPS vengono reimpostati su "0011", fornendo un fattore di divisione di otto all'avvio. Questa funzione dovrebbe essere utilizzata se la sorgente di clock selezionata ha una frequenza superiore alla frequenza massima del dispositivo nelle attuali condizioni operative. Si noti che qualsiasi valore può essere scritto nei bit CLKPS indipendentemente dall'impostazione del fusibile CKDIV8. Il software applicativo deve garantire che sia presente un fattore di divisione sufficiente

scelto se la sorgente di clock selezionata ha una frequenza superiore alla frequenza massima del dispositivo nelle attuali condizioni di funzionamento. Il dispositivo viene spedito con il fusibile CKDIV8 programmato.

Tabella 6-15. Prescaler orologio Selezionare

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Fattore di divisione dell'orologio
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 Prenotato
1 0 1 0 Prenotato
1 0 1 1 Prenotato
1 1 0 0 Prenotato
1 1 0 1 Prenotato
1 1 1 0 Prenotato
1 1 1 1 Prenotato

Nota: il prescaler è disabilitato in modalità di compatibilità ATtiny15 e né la scrittura su CLKPR né la programmazione del fusibile CKDIV8 hanno alcun effetto sull'orologio di sistema (che sarà sempre 1.6 MHz).

Risparmio energetico e modalità di sospensione

Le elevate prestazioni e l'efficienza del codice leader del settore rendono i microcontrollori AVR la scelta ideale per applicazioni a bassa potenza. Inoltre, le modalità di sospensione consentono all'applicazione di spegnere i moduli inutilizzati nell'MCU, risparmiando così energia. L'AVR fornisce varie modalità di sospensione che consentono all'utente di adattare il consumo energetico ai requisiti dell'applicazione.

Modalità di sonno

Figura 6-1 a pagina 23 presenta i diversi sistemi di clock e la loro distribuzione in ATtiny25 / 45/85. La figura è utile per selezionare una modalità di sospensione appropriata. Tabella 7-1 mostra le diverse modalità di sonno e le loro fonti di risveglio.

Tabella 7-1. Domini di clock attivi e fonti di risveglio nelle diverse modalità di sospensione

Domini di clock attivi Oscillatori Fonti di risveglio
Modalità di sospensione clkCPU clkFLASH clkIO clkADC clkPCK Sorgente orologio principale abilitata INT0 e cambio pin SPM / EEPROM

Pronto

 

Condizione di partenza USI

ADC Altri I/O Cane da guardia Interrompere
Oziare X X X X X X X X X X
Riduzione del rumore ADC X X X(1) X X X X
Spegnimento X(1) X X

Nota: per INT0, solo interrupt di livello.

Per entrare in una delle tre modalità sleep, il bit SE in MCUCR deve essere scritto in uno logico e deve essere eseguita un'istruzione SLEEP. I bit SM [1: 0] nel registro MCUCR selezionano la modalità di sospensione (Idle, Riduzione rumore ADC o Spegnimento) che verrà attivata dall'istruzione SLEEP. Vedere Tabella 7-2 per un riepilogo.

Se si verifica un interrupt abilitato mentre l'MCU è in modalità di sospensione, l'MCU si riattiva. L'MCU viene quindi arrestato per quattro cicli oltre al tempo di avvio, esegue la routine di interrupt e riprende l'esecuzione dall'istruzione successiva a SLEEP. Il contenuto del Registro File e SRAM non vengono alterati quando il dispositivo si riattiva dallo stato di sospensione. Se si verifica un ripristino durante la modalità di sospensione, l'MCU si riattiva ed esegue il vettore di ripristino.

Nota: se per il risveglio viene utilizzato un interrupt attivato dal livello, il livello modificato deve essere mantenuto per un po' di tempo per riattivare l'MCU (e affinché l'MCU entri nella routine di servizio dell'interruzione). Vedere "Interrupt esterni" a pagina 49 per maggiori dettagli.

Modalità stand-by

Quando i bit SM[1:0] vengono scritti su 00, l'istruzione SLEEP fa entrare l'MCU in modalità Idle, arrestando la CPU ma consentendo a Analog Comparator, ADC, USI, Timer/Counter, Watchdog e al sistema di interrupt di continuare a funzionare. ating. Questa modalità di sospensione sostanzialmente blocca clkCPU e clkFLASH, consentendo l'esecuzione degli altri clock.

La modalità inattiva consente all'MCU di riattivarsi da interruzioni attivate dall'esterno e da interruzioni interne come l'overflow del timer. Se non è richiesta la riattivazione dall'interrupt del comparatore analogico, il comparatore analogico può essere spento impostando il bit ACD in "ACSR - Controllo del comparatore analogico e registro di stato" a pagina 120. Ciò ridurrà il consumo di energia in modalità inattiva. Se l'ADC è abilitato, una conversione inizia automaticamente quando si entra in questa modalità.

Modalità di riduzione del rumore ADC

Quando i bit SM[1:0] vengono scritti su 01, l'istruzione SLEEP fa entrare l'MCU in modalità ADC Noise Reduction, arrestando la CPU ma consentendo all'ADC, agli interrupt esterni e al Watchdog di continuare a funzionare (se abilitato). Questa modalità di sospensione arresta clkI/O, clkCPU e clkFLASH, consentendo l'esecuzione degli altri clock.

Ciò migliora l'ambiente di rumore per l'ADC, consentendo misurazioni a risoluzione più elevata. Se l'ADC è abilitato, una conversione inizia automaticamente quando si entra in questa modalità. A parte l'interrupt Conversion Complete ADC, solo un Reset Esterno, un Watchdog Reset, un Brown-out Reset, un SPM / EEPROM ready interrupt, un interrupt di livello esterno su INT0 o un pin change interrupt possono riattivare l'MCU dalla riduzione del rumore ADC modalità.

Modalità di spegnimento

Quando i bit SM [1: 0] vengono scritti su 10, l'istruzione SLEEP fa entrare l'MCU in modalità di spegnimento. In questa modalità, l'oscillatore viene arrestato, mentre gli interrupt esterni, il rilevamento della condizione di avvio dell'USI e il Watchdog continuano a funzionare (se abilitato). Solo un ripristino esterno, un ripristino watchdog, un ripristino brown-out, un interrupt della condizione di avvio USI, un interrupt di livello esterno su INT0 o un interrupt di cambio pin possono riattivare l'MCU. Questa modalità di sospensione arresta tutti gli orologi generati, consentendo il funzionamento solo dei moduli asincroni.

Disabilita BOD software

Quando il rilevatore di Brown-out (BOD) è abilitato dai fusibili BODLEVEL (vedere Tabella 20-4 a pagina 148), il CdA sta monitorando attivamente la fornitura voltage durante un periodo di sonno. In alcuni dispositivi è possibile risparmiare energia disabilitando il BOD via software in modalità di sospensione Power-Down. Il consumo energetico in modalità di sospensione sarà quindi allo stesso livello di quando BOD è disabilitato globalmente dai fusibili.

Se BOD è disabilitato dal software, la funzione BOD viene disattivata immediatamente dopo l'attivazione della modalità di sospensione. Al risveglio dalla sospensione, BOD viene nuovamente abilitato automaticamente. Ciò garantisce un funzionamento sicuro nel caso in cui il livello VCC sia sceso durante il periodo di sospensione.

Quando il BOD è stato disabilitato, il tempo di risveglio dalla modalità sleep sarà lo stesso di quello per il risveglio da RESET. L'utente deve configurare manualmente i tempi di riattivazione in modo tale che il riferimento bandgap abbia il tempo di avviarsi e il BOD funzioni correttamente prima che l'MCU continui a eseguire il codice. Vedere i bit dei fusibili SUT [1: 0] e CKSEL [3: 0] nella tabella "Fuse Low Byte" a pagina 149

La disabilitazione BOD è controllata dal bit BODS (BOD Sleep) del registro di controllo MCU, vedere "MCUCR - Controllo MCU Registrati "a pagina 37. Scrivere questo bit a uno disattiva BOD in Power-Down, mentre scrivere uno zero mantiene il BOD attivo. L'impostazione predefinita è zero, ovvero BOD attivo.

La scrittura sul bit BODS è controllata da una sequenza temporizzata e da un bit di abilitazione, vedere "MCUCR - MCU Control Regis- ter ”a pagina 37.

Limitazioni

La funzionalità di disabilitazione BOD è stata implementata solo nei seguenti dispositivi:

ATtiny25, revisione E e versioni successive

ATtiny45, revisione D e versioni successive

ATtiny85, revisione C e versioni successive

Le revisioni sono contrassegnate sulla confezione del dispositivo e possono essere individuate come segue:

Lato inferiore dei pacchetti 8P3 e 8S2

Lato superiore della confezione 20M1

Registro di riduzione della potenza

Il registro di riduzione della potenza (PRR), vedere "PRR - Registro di riduzione della potenza" a pagina 38, fornisce un metodo per ridurre il consumo energetico arrestando l'orologio delle singole periferiche. Lo stato corrente della periferica è congelato e i registri I / O non possono essere letti o scritti. Le risorse utilizzate dalla periferica quando si ferma l'orologio rimarranno occupate, quindi la periferica nella maggior parte dei casi dovrebbe essere disabilitata prima di arrestare l'orologio. La riattivazione di un modulo, che viene eseguita cancellando il bit in PRR, pone il modulo nello stesso stato in cui si trovava prima dell'arresto.

L'arresto del modulo può essere utilizzato in modalità Idle e Active per ridurre in modo significativo il consumo energetico complessivo. In tutte le altre modalità di sospensione, l'orologio è già fermo. Vedere "Corrente di alimentazione dei moduli I / O" a pagina 177 per esempioampmeno.

Riduzione al minimo del consumo energetico

Ci sono diversi problemi da considerare quando si cerca di ridurre al minimo il consumo energetico in un sistema controllato da AVR. In generale, le modalità di sospensione dovrebbero essere utilizzate il più possibile e la modalità di sospensione dovrebbe essere selezionata in modo che siano operative il minor numero possibile di funzioni del dispositivo. Tutte le funzioni non necessarie dovrebbero essere disabilitate. In particolare, i seguenti moduli potrebbero richiedere una considerazione speciale quando si cerca di ottenere il minor consumo energetico possibile.

Convertitore analogico-digitale

Se abilitato, l'ADC sarà abilitato in tutte le modalità di sospensione. Per risparmiare energia, l'ADC deve essere disabilitato prima di entrare in qualsiasi modalità di sospensione. Quando l'ADC viene spento e riacceso, la conversione successiva sarà una conversione estesa. Fare riferimento a "Convertitore da analogico a digitale" a pagina 122 per i dettagli sul funzionamento dell'ADC.

Comparatore analogico

Quando si entra in modalità Idle, il comparatore analogico deve essere disabilitato se non utilizzato. Quando si accede alla modalità di riduzione del rumore ADC, il comparatore analogico deve essere disabilitato. Nelle altre modalità di sospensione, il comparatore analogico viene disabilitato automaticamente. Tuttavia, se il comparatore analogico è impostato per utilizzare il volume internotage Riferimento come input, il comparatore analogico deve essere disabilitato in tutte le modalità di sospensione. In caso contrario, il volume internotage Riferimento sarà abilitato, indipendentemente dalla modalità di sospensione. Fare riferimento a "Comparatore analogico" a pagina 119 per i dettagli su come configurare il comparatore analogico.

Rilevatore di Brown-out

Se il rilevatore di Brown-out non è necessario nell'applicazione, questo modulo deve essere spento. Se il rilevatore di Brown-out è abilitato dai fusibili BODLEVEL, sarà abilitato in tutte le modalità di sospensione e quindi consumerà sempre energia. Nelle modalità di sonno più profondo, ciò contribuirà in modo significativo al consumo totale di corrente. Vedere "Brown-out Detec- zione "a pagina 41 "Disabilitazione BOD software" a pagina 35 per i dettagli su come configurare il rilevatore di Brown-out.

Volume internotage Riferimento

Il volume internotage Il riferimento sarà abilitato quando richiesto dal rilevamento del Brown-out, dal comparatore analogico o dall'ADC. Se questi moduli sono disabilitati come descritto nelle sezioni precedenti, il volume internotagIl riferimento sarà disabilitato e non consumerà energia. Alla riaccensione, l'utente deve consentire l'avvio del riferimento prima di utilizzare l'uscita. Se il riferimento viene mantenuto in modalità di sospensione, l'uscita può essere utilizzata immediatamente. Fare riferimento a “Volume Internotage Riferimento” a pagina 42 per i dettagli sull'orario di avvio.

Timer di controllo

Se il timer watchdog non è necessario nell'applicazione, questo modulo deve essere disattivato. Se il timer watchdog è abilitato, sarà abilitato in tutte le modalità di sospensione e, quindi, consumerà sempre energia. Nelle modalità di sonno più profondo, ciò contribuirà in modo significativo al consumo totale di corrente. Fare riferimento a "Watchdog Timer" a pagina 42 per i dettagli su come configurare Watchdog Timer.

Perni della porta

Quando si entra in una modalità di sospensione, tutti i pin della porta devono essere configurati per utilizzare la potenza minima. La cosa più importante è quindi assicurarsi che nessun perno guidi carichi resistivi. Nelle modalità di sospensione in cui sono interrotti sia il clock I/O (clkI/O) che il clock ADC (clkADC), i buffer di input del dispositivo saranno disabilitati. Ciò garantisce che non venga consumata energia

dalla logica di ingresso quando non necessario. In alcuni casi, la logica di input è necessaria per rilevare le condizioni di attivazione e

sarà quindi abilitato. Fare riferimento alla sezione "Abilitazione dell'ingresso digitale e modalità di sospensione" a pagina 57 per i dettagli su quali pin sono abilitati. Se il buffer di ingresso è abilitato e il segnale di ingresso è lasciato flottante o ha un livello di segnale analogico vicino a VCC/2, il buffer di ingresso utilizzerà una potenza eccessiva.

Per i pin di ingresso analogico, il buffer di ingresso digitale deve essere sempre disabilitato. Un livello di segnale analogico vicino a VCC/2 su un pin di ingresso può causare una corrente significativa anche in modalità attiva. I buffer degli ingressi digitali possono essere disabilitati scrivendo nel registro di disabilitazione degli ingressi digitali (DIDR0). Fare riferimento a "DIDR0 - Registro di disabilitazione ingresso digitale 0" a pagina 121 per maggiori dettagli.

Descrizione registro

MCUCR - Registro di controllo MCU

Il registro di controllo MCU contiene bit di controllo per la gestione dell'alimentazione.

Morso 7 6 5 4 3 2 1 0
0x35 CORPI PUD SE SM1 SM0 CORPO ISC01 ISC00 MCUCR
Leggere/scrivere R R/N R/N R/N R/N R R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

Bit 7 - BODS: BOD Sleep

La funzionalità di disabilitazione BOD è disponibile solo in alcuni dispositivi. Vedere "Limitazioni" a pagina 36.

Per disabilitare BOD durante il sonno (vedi Tabella 7-1 a pagina 34) il bit BODS deve essere scritto in uno logico. Questo è controllato da una sequenza temporizzata e dal bit di abilitazione, BODSE in MCUCR. Innanzitutto, sia BODS che BODSE devono essere impostati su uno. In secondo luogo, entro quattro cicli di clock, BODS deve essere impostato su uno e BODSE deve essere impostato su zero. Il bit BODS è attivo tre cicli di clock dopo l'impostazione. Un'istruzione sleep deve essere eseguita mentre BODS è attivo per disattivare BOD per la modalità sleep effettiva. Il bit BODS viene cancellato automaticamente dopo tre cicli di clock.

Nei dispositivi in ​​cui Sleeping BOD non è stato implementato, questo bit non è utilizzato e leggerà sempre zero.

Bit 5 - SE: Abilita sospensione

Il bit SE deve essere scritto su uno logico per far entrare l'MCU in modalità sleep quando viene eseguita l'istruzione SLEEP. Per evitare che l'MCU entri in modalità sleep a meno che non sia lo scopo del programmatore, si consiglia di scrivere il bit Sleep Enable (SE) in uno appena prima dell'esecuzione dell'istruzione SLEEP e di cancellarlo immediatamente dopo il risveglio.

Bit 4: 3 - SM [1: 0]: modalità di sospensione Seleziona bit 1 e 0

Questi bit selezionano tra le tre modalità di sospensione disponibili come mostrato in Tabella 7-2.

Tabella 7-2. Modalità sospensione Seleziona

SM1 SM0 Modalità di sospensione
0 0 Oziare
0 1 Riduzione del rumore ADC
1 0 Spegnimento
1 1 Prenotato

Bit 2 - BODSE: BOD Sleep Enable

La funzionalità di disabilitazione BOD è disponibile solo in alcuni dispositivi. Vedere "Limitazioni" a pagina 36.

Il bit BODSE consente l'impostazione del bit di controllo BODS, come spiegato nella descrizione del bit BODS. La disabilitazione del BOD è controllata da una sequenza temporizzata.

Questo bit non è utilizzato nei dispositivi in ​​cui la disabilitazione BOD del software non è stata implementata e verrà letto come zero in quei dispositivi.

PRR - Registro di riduzione della potenza

Il registro di riduzione della potenza fornisce un metodo per ridurre il consumo energetico consentendo la disabilitazione dei segnali di clock delle periferiche.

Morso 7 6 5 4 3 2 1 0
0x20 PRIM1 PRIM0 prusia PRAD PRR
Leggere/scrivere R R R R R/N R/N R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

Bit 7: 4 - Ris: Bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 3 - PRTIM1: Timer / contatore di riduzione della potenza1

Scrivendo uno logico a questo bit si arresta il modulo Timer / Counter1. Quando il Timer / Contatore1 è abilitato, il funzionamento continuerà come prima dello spegnimento.

Bit 2 - PRTIM0: Timer / contatore di riduzione della potenza0

Scrivendo uno logico a questo bit si arresta il modulo Timer / Counter0. Quando il Timer / Contatore0 è abilitato, il funzionamento continuerà come prima dello spegnimento.

Bit 1 - PRUSI: Power Reduction USI

Scrivendone uno logico a questo bit, l'USI arresta l'orologio del modulo. Quando si riattiva l'USI, l'USI deve essere inizializzato di nuovo per garantire il corretto funzionamento.

Bit 0 - PRADC: ADC con riduzione della potenza

Scrivendo uno logico a questo bit si arresta l'ADC. L'ADC deve essere disabilitato prima dello spegnimento. Si noti che l'orologio dell'ADC viene utilizzato anche da alcune parti del comparatore analogico, il che significa che il comparatore analogico non può essere utilizzato quando questo bit è alto.

Controllo e ripristino del sistema

Ripristino dell'AVR

Durante il ripristino, tutti i registri di I / O vengono impostati sui valori iniziali e il programma inizia l'esecuzione da Reset Vector. L'istruzione inserita nel vettore di ripristino deve essere un'istruzione RJMP - Salto relativo - per la routine di gestione del ripristino. Se il programma non abilita mai una sorgente di interrupt, i vettori di interrupt non vengono utilizzati e il codice del programma regolare può essere posizionato in queste posizioni. Lo schema del circuito in Figura 8-1 mostra la logica di ripristino. Vengono forniti i parametri elettrici del circuito di ripristino "Caratteristiche del sistema e del ripristino" a pagina 165.

Figura 8-1 Reimposta logica Logica di ripristino

Le porte I / O dell'AVR vengono immediatamente ripristinate al loro stato iniziale quando una sorgente di ripristino diventa attiva. Ciò non richiede l'esecuzione di alcuna sorgente di clock.

Dopo che tutte le sorgenti di ripristino sono diventate inattive, viene richiamato un contatore di ritardo, allungando il ripristino interno. Ciò consente alla potenza di raggiungere un livello stabile prima che inizi il normale funzionamento. Il periodo di timeout del contatore di ritardo è definito dall'utente tramite i fusibili SUT e CKSEL. Le diverse selezioni per il periodo di ritardo sono presentate in "Orologio Fonti ”a pagina 25.

Reimposta sorgenti

L'ATtiny25 / 45/85 ha quattro fonti di ripristino:

Ripristino all'accensione. L'MCU viene ripristinato quando l'alimentazione voltage è inferiore alla soglia di ripristino all'accensione (VPOT).

Reset esterno. L'MCU viene ripristinato quando un livello basso è presente sul pin RESET per un tempo superiore alla lunghezza minima dell'impulso.

Ripristino watchdog. L'MCU viene ripristinato quando il periodo del timer watchdog scade e il watchdog è abilitato.

Ripristino del Brown-out. L'MCU viene ripristinato quando l'alimentazione voltage VCC è al di sotto della soglia di Brown-out Reset (VBOT) e il Rilevatore di Brown-out è abilitato.

Ripristino all'accensione

Un impulso di ripristino all'accensione (POR) viene generato da un circuito di rilevamento su chip. Il livello di rilevamento è definito in "Sys- caratteristiche e azzeramento ”a pagina 165. Il POR viene attivato ogni volta che VCC è al di sotto del livello di rilevamento. Il circuito POR può essere utilizzato per attivare il ripristino all'avvio, nonché per rilevare un'interruzione dell'alimentazione voltage.

Un circuito Power-on Reset (POR) assicura che il dispositivo venga ripristinato dall'accensione. Raggiungimento della soglia di ripristino all'accensione voltage richiama il contatore di ritardo, che determina per quanto tempo il dispositivo viene mantenuto in RESET dopo l'aumento di VCC. Il segnale di RESET viene riattivato, senza alcun ritardo, quando VCC scende al di sotto del livello di rilevamento.

Figura 8-2. Avvio MCU, RESET Legato a VCC

RIPRISTINO INTERNO

Figura 8-3. Avvio MCU, RESET esteso esternamente

Reset esterno

Un Reset Esterno è generato da un livello basso sul pin RESET se abilitato. Resettare impulsi più lunghi della durata minima dell'impulso (vedere "Caratteristiche del sistema e del ripristino" a pagina 165) genererà un reset, anche se l'orologio non è in funzione. Non è garantito che impulsi più brevi generino un reset. Quando il segnale applicato raggiunge la soglia di ripristino Voltage – VRST – sul suo fronte positivo, il contatore di ritardo avvia l'MCU dopo che il periodo di Timeout è scaduto.

Figura 8-4. Ripristino esterno durante il funzionamento Figura 8.4

Rilevamento di Brown-out

ATtiny25/45/85 dispone di un circuito BOD (On-chip Brown-out Detection) per il monitoraggio del livello VCC durante il funzionamento confrontandolo con un livello di trigger fisso. Il livello di trigger per il BOD può essere selezionato dai fusibili BODLEVEL. Il livello di trigger ha un'isteresi per garantire il rilevamento del brown-out senza picchi. L'isteresi sul livello di rilevamento deve essere interpretata come VBOT+ = VBOT + VHYST/2 e VBOT- = VBOT – VHYST/2.

Quando il BOD è abilitato e VCC scende a un valore inferiore al livello di trigger (VBOT-in Figura 8-5), viene immediatamente attivato il Brown-out Reset. Quando VCC aumenta al di sopra del livello di trigger (VBOT+ in Figura 8-5), il contatore di ritardo avvia l'MCU allo scadere del periodo di timeout tTOUT.

Il circuito BOD rileverà solo un calo di VCC se il voltage rimane al di sotto del livello di trigger più a lungo di tBOD dato "Caratteristiche del sistema e del ripristino" a pagina 165. Figura 8.5

Ripristino watchdog

Quando il Watchdog scade, genererà un breve impulso di ripristino della durata di un ciclo CK. Sul fronte di discesa di questo impulso, il timer di ritardo inizia a contare il periodo di timeout tTOUT. Fare riferimento a "Watchdog Timer" a pagina 42 per i dettagli sul funzionamento del Watchdog Timer.

Voltage Segnali di abilitazione riferimento e tempo di avvio

il volumetagIl riferimento ha un tempo di avvio che può influenzare il modo in cui dovrebbe essere utilizzato. Il tempo di avvio è dato in "Caratteristiche del sistema e del ripristino" a pagina 165. Per risparmiare energia, il riferimento non è sempre attivato. Il riferimento è attivo nelle seguenti situazioni:

Quando il BOD è abilitato (programmando i bit fusibile BODLEVEL [2: 0]).

Quando il riferimento bandgap è collegato al comparatore analogico (impostando il bit ACBG in ACSR).

Quando l'ADC è abilitato.

Pertanto, quando il BOD non è abilitato, dopo aver impostato il bit ACBG o abilitato l'ADC, l'utente deve sempre consentire l'avvio del riferimento prima che venga utilizzata l'uscita dal comparatore analogico o dall'ADC. Per ridurre il consumo di energia in modalità di spegnimento, l'utente può evitare le tre condizioni sopra per assicurarsi che il riferimento sia spento prima di entrare in modalità di spegnimento.

Timer di controllo

Il Watchdog Timer è sincronizzato da un oscillatore su chip che funziona a 128 kHz. Controllando il prescaler Watchdog Timer, l'intervallo di ripristino watchdog può essere regolato come mostrato in Tabella 8-3 a pagina 46. L'istruzione WDR - Watchdog Reset - reimposta il Watchdog Timer. Anche il timer watchdog viene resettato quando è disabilitato e quando si verifica un reset del chip. È possibile selezionare dieci diversi periodi del ciclo di clock per determinare il periodo di ripristino. Se il periodo di ripristino scade senza un altro ripristino watchdog, ATtiny25 / 45/85 si ripristina ed esegue dal vettore di ripristino. Per i dettagli sui tempi del ripristino del watchdog, fare riferimento a Tabella 8-3 a pagina 46.

Il Watchdog Timer può anche essere configurato per generare un interrupt invece di un reset. Questo può essere molto utile quando si utilizza Watchdog per riattivarsi dallo spegnimento.

Per evitare la disattivazione involontaria del Watchdog o la modifica involontaria del periodo di time-out, due diversi livelli di sicurezza vengono selezionati dal fusibile WDTON come mostrato in Tabella 8-1 Fare riferimento a "Sequenze temporizzate per cambiare la configurazione rappresentazione del Watchdog Timer "a pagina 43 per maggiori dettagli.

Tabella 8-1. Configurazione WDT in funzione delle impostazioni dei fusibili di WDTON

WDTON Livello di sicurezza Stato iniziale WDT Come disabilitare WDT Come modificare il timeout
Non programmato 1 Disabilitato Sequenza temporizzata Nessuna limitazione
Programmato 2 Abilitato Sempre abilitato Sequenza temporizzata

Figura 8-7. Timer cane da guardia Cane da guardia

Sequenze temporizzate per la modifica della configurazione del timer watchdog

La sequenza per modificare la configurazione differisce leggermente tra i due livelli di sicurezza. Procedure separate sono descritte per ogni livello.

Livello di sicurezza 1: in questa modalità, il Watchdog Timer è inizialmente disabilitato, ma può essere abilitato scrivendo il bit WDE su uno senza alcuna restrizione. È necessaria una sequenza temporizzata quando si disabilita un Watchdog Timer abilitato. Per disabilitare un Watchdog Timer abilitato, è necessario seguire la seguente procedura:

Nella stessa operazione, scrivere uno logico in WDCE e WDE. Uno logico deve essere scritto in WDE indipendentemente dal valore precedente del bit WDE.

Entro i successivi quattro cicli di clock, nella stessa operazione, scrivere i bit WDE e WDP come desiderato, ma con il bit WDCE azzerato.

Livello di sicurezza 2: in questa modalità, il Watchdog Timer è sempre abilitato e il bit WDE sarà sempre letto come uno. È necessaria una sequenza temporizzata quando si modifica il periodo di timeout watchdog. Per modificare il Watchdog Time-out è necessario seguire la seguente procedura:

Nella stessa operazione, scriverne uno logico in WDCE e WDE. Anche se il WDE è sempre impostato, il WDE deve essere scritto su uno per avviare la sequenza temporizzata.

Entro i successivi quattro cicli di clock, nella stessa operazione, scrivere i bit WDP come desiderato, ma con il bit WDCE azzerato. Il valore scritto nel bit WDE è irrilevante.

Codice Example

Il seguente codice esample mostra un assembly e una funzione C per disattivare il WDT. L'example presuppone che gli interrupt siano controllati (ad esempio, disabilitandoli globalmente) in modo che non si verifichino interrupt durante l'esecuzione di queste funzioni.

Codice assemblaggio Example(1)
WDT_off:

sdr

; Cancella WDRF in MCUSR

ldi r16, (0<

fuori MCUSR, r16

; Scrivi uno logico in WDCE e WDE

; Mantieni la vecchia impostazione del prescaler per evitare un ripristino involontario del watchdog

in r16, WDTCR

ori r16, (1<

fuori WDTCR, r16

; Disattiva WDT

ldi r16, (0<

fuori WDTCR, r16

ritirare

Codice C Example(1)
void WDT_off(void)

{

_WDR ();

/* Cancella WDRF in MCUSR */ MCUSR = 0x00

/* Scrive uno logico in WDCE e WDE */ WDTCR |= (1<

/ * Disattiva WDT * / WDTCR = 0x00;

}

Nota: 1. Vedi “Codice Example” a pagina 6.

Descrizione registro

MCUSR - Registro di stato MCU

Il registro di stato dell'MCU fornisce informazioni su quale sorgente di ripristino ha causato un ripristino dell'MCU.

Morso 7 6 5 4 3 2 1 0
0x34 WDRF BORF EST PORFO MCUSR
Leggere/scrivere R R R R R/N R/N R/N R/N

Valore iniziale 0 0 0 0 Vedere la descrizione dei bit

Bit 7: 4 - Ris: Bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 3 - WDRF: flag di ripristino watchdog

Questo bit viene impostato se si verifica un ripristino del watchdog. Il bit viene resettato da un Power-on Reset o scrivendo uno zero logico nel flag.

Bit 2 - BORF: Flag di ripristino brown-out

Questo bit viene impostato se si verifica un ripristino brown-out. Il bit viene resettato da un Power-on Reset o scrivendo uno zero logico nel flag.

Bit 1 - EXTRF: Flag di ripristino esterno

Questo bit viene impostato se si verifica un ripristino esterno. Il bit viene resettato da un Power-on Reset o scrivendo uno zero logico nel flag.

Bit 0 - PORF: Flag di ripristino all'accensione

Questo bit viene impostato se si verifica un ripristino all'accensione. Il bit viene resettato solo scrivendo uno zero logico nel flag.

Per utilizzare i flag di ripristino per identificare una condizione di ripristino, l'utente deve leggere e quindi ripristinare l'MCUSR il prima possibile nel programma. Se il registro viene cancellato prima che si verifichi un altro ripristino, è possibile trovare l'origine del ripristino esaminando i flag di ripristino.

WDTCR - Watchdog Timer Control Register

Morso 7 6 5 4 3 2 1 0
0x21 WDIF WDI WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
Leggere/scrivere R/N R/N R/N R/N R/N R/N R/N R/N
Valore iniziale 0 0 0 0 X 0 0 0

Bit 7 - WDIF: Flag di interruzione del timeout del watchdog

Questo bit viene impostato quando si verifica un timeout nel timer watchdog e il timer watchdog è configurato per l'interrupt. WDIF viene cancellato dall'hardware durante l'esecuzione del vettore di gestione degli interrupt corrispondente. In alternativa, WDIF viene cancellato scrivendone uno logico nel flag. Quando sono impostati i bit I in SREG e WDIE, viene eseguito l'interrupt di timeout del watchdog.

Bit 6 - WDIE: abilitazione interrupt timeout watchdog

Quando questo bit viene scritto su uno, WDE viene azzerato e viene impostato il bit I nel registro di stato, viene abilitato l'interrupt di timeout del watchdog. In questa modalità viene eseguito il corrispondente interrupt invece di un reset se si verifica un timeout nel Watchdog Timer.

Se è impostato WDE, WDIE viene automaticamente cancellato dall'hardware quando si verifica un timeout. Ciò è utile per mantenere la sicurezza Watchdog Reset durante l'utilizzo dell'interrupt. Dopo che il bit WDIE è stato cancellato, il timeout successivo genererà un ripristino. Per evitare il ripristino del watchdog, è necessario impostare WDIE dopo ogni interruzione.

Tabella 8-2. Configurazione del timer watchdog

WDE WDI Stato del timer watchdog Azione in caso di timeout
0 0 Fermato Nessuno
0 1 Corsa Interrompere
1 0 Corsa Reset
1 1 Corsa Interrompere

Bit 4 - WDCE: Watchdog Change Enable

Questo bit deve essere impostato quando il bit WDE viene scritto sullo zero logico. In caso contrario, il Watchdog non verrà disabilitato. Una volta scritto su uno, l'hardware cancellerà questo bit dopo quattro cicli di clock. Fare riferimento alla descrizione del bit WDE per una procedura di disabilitazione Watchdog. Questo bit deve essere impostato anche quando si cambiano i bit del prescaler. Vedere “Sequenze temporizzate per modificare la configurazione del timer watchdog "a pagina 43.

Bit 3 - WDE: Watchdog Enable

Quando il WDE viene scritto in uno logico, il Watchdog Timer è abilitato e se il WDE viene scritto in uno logico, la funzione Watchdog Timer è disabilitata. WDE può essere cancellato solo se il bit WDCE ha il livello logico uno. Per disabilitare un Watchdog Timer abilitato, è necessario seguire la seguente procedura:

Nella stessa operazione, scrivere uno logico in WDCE e WDE. Uno logico deve essere scritto in WDE anche se è impostato su uno prima dell'inizio dell'operazione di disabilitazione.

Entro i successivi quattro cicli di clock, scrivere uno 0 logico in WDE. Questo disabilita il Watchdog.

Nel livello di sicurezza 2 non è possibile disabilitare il Watchdog Timer, anche con l'algoritmo sopra descritto. Vedere "Sequenze temporizzate per la modifica della configurazione del timer watchdog" a pagina 43.

Nel livello di sicurezza 1, WDE viene sovrascritto da WDRF in MCUSR. Vedere "MCUSR - Registro di stato MCU" a pagina 44 per la descrizione di WDRF. Ciò significa che WDE è sempre impostato quando è impostato WDRF. Per cancellare WDE, è necessario cancellare WDRF prima di disabilitare Watchdog con la procedura sopra descritta. Questa funzione garantisce più ripristini durante le condizioni che causano il guasto e un avvio sicuro dopo il guasto.

Nota: se il timer watchdog non verrà utilizzato nell'applicazione, è importante eseguire una procedura di disabilitazione watchdog durante l'inizializzazione del dispositivo. Se il Watchdog viene accidentalmente abilitato, ad esample da un puntatore fuori controllo o da una condizione di brown-out, il dispositivo verrà ripristinato, il che a sua volta porterà a un nuovo ripristino del watchdog. Per evitare questa situazione, il software applicativo dovrebbe sempre cancellare il flag WDRF e il bit di controllo WDE nella routine di inizializzazione.

Bit 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 e 0

I bit WDP [3: 0] determinano il prescaling del timer watchdog quando il timer watchdog è abilitato. I diversi valori di prescaling e i rispettivi periodi di timeout corrispondenti vengono visualizzati in Tabella 8-3.

Tabella 8-3. Selezione prescala timer watchdog

WDP3 WDP2 WDP1 WDP0 Numero di cicli dell'oscillatore WDT Timeout tipico a VCC = 5.0 V
0 0 0 0 Cicli 2K (2048) 16 millisecondi
0 0 0 1 Cicli 4K (4096) 32 millisecondi
0 0 1 0 Cicli 8K (8192) 64 millisecondi
0 0 1 1 Cicli 16K (16384) Anno 0.125
0 1 0 0 Cicli 32K (32764) Anno 0.25
0 1 0 1 Cicli 64K (65536) Anno 0.5
0 1 1 0 Cicli 128K (131072) Anno 1.0
0 1 1 1 Cicli 256K (262144) Anno 2.0
1 0 0 0 Cicli 512K (524288) Anno 4.0
1 0 0 1 Cicli 1024K (1048576) Anno 8.0

Tabella 8-3. Watchdog Timer Prescale Select (continua)

WDP3 WDP2 WDP1 WDP0 Numero di cicli dell'oscillatore WDT Timeout tipico a VCC = 5.0 V
1 0 1 0 Prenotato(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Nota: 1. Se selezionata, verrà utilizzata una delle impostazioni valide inferiori a 0b1010.

interrupt

Questa sezione descrive le specifiche della gestione degli interrupt come eseguita in ATtiny25 / 45/85. Per una spiegazione generale della gestione delle interruzioni dell'AVR, fare riferimento a "Gestione del ripristino e dell'interruzione" a pagina 12.

Interrompi i vettori in ATtiny25 / 45/85

I vettori di interrupt di ATtiny25 / 45/85 sono descritti in Tabella 9-1sotto.

Tabella 9-1. Ripristina e interrompi i vettori

Vettore n. Indirizzo del programma Fonte Definizione di interruzione
1 0x0000 RESET Pin esterno, reset all'accensione, reset brown-out, reset watchdog
2 0x0001 INT0 Richiesta di interrupt esterno 0
3 0x0002 PCINT0 Richiesta di interruzione modifica pin 0
4 0x0003 TIMER1_COMPA Confronto timer / contatore1 Corrispondenza A
5 0x0004 TIMER1_OVF Overflow timer / contatore1
6 0x0005 TIMER0_OVF Overflow timer / contatore0
7 0x0006 EE_RDY EEPROM pronto
8 0x0007 ANA_COMP Comparatore analogico
9 0x0008 ADC Conversione ADC completata
10 0x0009 TIMER1_COMP Corrispondenza confronto timer / contatore1 B
11 0x000Un TIMER0_COMPA Confronto timer / contatore0 Corrispondenza A
12 0x000B TIMER0_COMP Corrispondenza confronto timer / contatore0 B
13 0x000C Giorno di riposo Timeout watchdog
14 0x000D USI_INIZIO INIZIO USI
15 0x000E USI_OVF Straripamento dell'USI

Se il programma non abilita mai una sorgente di interrupt, i vettori di interrupt non vengono utilizzati e il codice del programma regolare può essere posizionato in queste posizioni.

Una configurazione tipica e generale per gli indirizzi del vettore di interrupt in ATtiny25/45/85 è mostrata nel programma exampqui sotto.

Codice assemblaggio Example
.org0x0000 ; Imposta indirizzo del prossimo dichiarazione
RESETTARE la riga ; Indirizzo 0x0000
rjmp INT0_ISR ; Indirizzo 0x0001
rjmpPCINT0_ISR ; Indirizzo 0x0002
rjmp TIM1_COMPA_ISR ; Indirizzo 0x0003
rjmp TIM1_OVF_ISR ; Indirizzo 0x0004
rjmp TIM0_OVF_ISR ; Indirizzo 0x0005
rjmp EE_RDY_ISR ; Indirizzo 0x0006
rjmp ANA_COMP_ISR ; Indirizzo 0x0007
rjmp ADC_ISR ; Indirizzo 0x0008
rjmp TIM1_COMPB_ISR ; Indirizzo 0x0009
rjmp TIM0_COMPA_ISR ; Indirizzo 0x000A
rjmp TIM0_COMPB_ISR ; Indirizzo 0x000B
rjmpWDT_ISR ; Indirizzo 0x000C
rjmp USI_START_ISR ; Indirizzo 0x000D
rjmp USI_OVF_ISR ; Indirizzo 0x000E
RIPRISTINA: ; Inizio del programma principale
; Indirizzo 0x000F

Nota: vedere “Codice Example” a pagina 6.

Interrupt esterni

Gli interrupt esterni vengono attivati ​​dal pin INT0 o da uno qualsiasi dei pin PCINT [5: 0]. Si osservi che, se abilitato, gli interrupt si attiveranno anche se i pin INT0 o PCINT [5: 0] sono configurati come uscite. Questa funzione fornisce un modo per generare un interrupt software. Interruzioni di cambio pin PCI si attiverà se uno qualsiasi dei pin PCINT [5: 0] abilitato si alterna. Il registro PCMSK controlla quali pin contribuiscono agli interrupt di cambio pin. Gli interrupt di cambio pin su PCINT [5: 0] vengono rilevati in modo asincrono. Ciò implica che queste interruzioni possono essere utilizzate per riattivare la parte anche da modalità di sospensione diverse dalla modalità di inattività.

Gli interrupt INT0 possono essere attivati ​​da un fronte di salita o discesa o da un livello basso. Questo è impostato come indicato nelle specifiche per il registro di controllo MCU - MCUCR. Quando l'interrupt INT0 è abilitato ed è configurato come trigger a livello, l'interrupt si attiverà fintanto che il pin viene tenuto basso. Si noti che il riconoscimento degli interrupt del fronte di discesa o di salita su INT0 richiede la presenza di un clock I / O, descritto in "Sistemi di clock e loro distribuzione" su pagina 23.

Interruzione di basso livello

Un interrupt di basso livello su INT0 viene rilevato in modo asincrono. Ciò implica che questa interruzione può essere utilizzata per riattivare la parte anche da modalità di sospensione diverse dalla modalità di inattività. L'orologio I / O viene interrotto in tutte le modalità di sospensione eccetto in modalità di inattività.

Si noti che se un'interruzione attivata dal livello viene utilizzata per il risveglio dallo spegnimento, il livello richiesto deve essere mantenuto abbastanza a lungo da consentire all'MCU di completare il risveglio per attivare l'interruzione del livello. Se il livello scompare prima della fine del tempo di avvio, l'MCU si riattiverà comunque, ma non verrà generato alcun interrupt. Il tempo di avvio è definito dai fusibili SUT e CKSEL come descritto in "Orologio di sistema e opzioni dell'orologio" a pagina 23.

Se il livello basso sul pin di interrupt viene rimosso prima che il dispositivo si sia riattivato, l'esecuzione del programma non verrà deviata alla routine di servizio di interrupt ma continuerà dall'istruzione che segue il comando SLEEP.

Temporizzazione interruzione modifica pin

un exampil le di temporizzazione di un interrupt di cambio pin è mostrato in Figura 9-1.

Descrizione registro

MCUCR - Registro di controllo MCU

Il registro di controllo interrupt esterno A contiene bit di controllo per il controllo del rilevamento degli interrupt.

Morso 7 6 5 4 3 2 1 0
0x35 CORPI PUD SE SM1 SM0 CORPO ISC01 ISC00 MCUCR
Leggere/scrivere R R/N R/N R/N R/N R R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

Bit 1: 0 - ISC0 [1: 0]: Controllo rilevamento interrupt 0 Bit 1 e Bit 0

L'interrupt esterno 0 viene attivato dal pin esterno INT0 se sono impostati il ​​flag SREG I e la maschera di interrupt corrispondente. Il livello e i bordi sul pin INT0 esterno che attivano l'interrupt sono definiti in Tabella 9-2. Il valore sul pin INT0 è sampled prima di rilevare i bordi. Se si seleziona un'interruzione fronte o interruttore, gli impulsi che durano più a lungo di un periodo di clock genereranno un'interruzione. Non è garantito che impulsi più brevi generino un interrupt. Se è selezionato un interrupt di livello basso, il livello basso deve essere mantenuto fino al completamento dell'istruzione attualmente in esecuzione per generare un interrupt.

Tabella 9-2. Interrompere il controllo del rilevamento 0

ISC01 ISC00 Descrizione
0 0 Il livello basso di INT0 genera una richiesta di interrupt.
0 1 Qualsiasi modifica logica su INT0 genera una richiesta di interruzione.
1 0 Il fronte di discesa di INT0 genera una richiesta di interrupt.
1 1 Il fronte di salita di INT0 genera una richiesta di interrupt.

GIMSK - Registro maschera interruzione generale

Morso 7 6 5 4 3 2 1 0
0x3B INT0 PCIE GIMSK
Leggere/scrivere R R/N R/N R R R R R
Valore iniziale 0 0 0 0 0 0 0 0

Bit 7, 4: 0 - Ris: bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 6 - INT0: richiesta di interrupt esterno 0 abilitata

Quando il bit INT0 è impostato (uno) e il bit I nel registro di stato (SREG) è impostato (uno), l'interrupt del pin esterno è abilitato. I bit 0/1 di controllo rilevamento interrupt 0/01 (ISC00 e ISC0) nel registro di controllo MCU (MCUCR) definiscono se l'interrupt esterno viene attivato al fronte di salita e / o discesa del pin INT0 o al livello rilevato. L'attività sul pin provocherà una richiesta di interrupt anche se INT0 è configurato come uscita. L'interrupt corrispondente della richiesta di interrupt esterno 0 viene eseguito dal vettore di interrupt INTXNUMX.

Bit 5 - PCIE: abilitazione interrupt cambio pin

Quando il bit PCIE è impostato (uno) e il bit I nel registro di stato (SREG) è impostato (uno), l'interrupt di cambio pin è abilitato. Qualsiasi modifica su qualsiasi pin PCINT [5: 0] abilitato causerà un interrupt. L'interrupt corrispondente della richiesta di interrupt di modifica del pin viene eseguito dal vettore di interrupt PCI. I pin PCINT [5: 0] sono abilitati individualmente dal registro PCMSK0.

GIFR - Registro flag di interrupt generale

Morso 7 6 5 4 3 2 1 0
0x3Un INTF0 PCIF GIFR
Leggere/scrivere R R/N R/N R R R R R
Valore iniziale 0 0 0 0 0 0 0 0

Bit 7, 4: 0 - Ris: bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 6 - INTF0: Flag di interrupt esterno 0

Quando un fronte o una modifica logica sul pin INT0 attiva una richiesta di interrupt, INTF0 diventa impostato (uno). Se il bit I in SREG e il bit INT0 in GIMSK sono impostati (uno), l'MCU salterà al corrispondente vettore di interrupt. Il flag viene cancellato quando viene eseguita la routine di interrupt. In alternativa, il flag può essere cancellato scrivendovi uno logico. Questo flag viene sempre cancellato quando INT0 è configurato come interrupt di livello.

Bit 5 - PCIF: flag di interruzione modifica pin

Quando una modifica della logica su qualsiasi pin PCINT [5: 0] attiva una richiesta di interrupt, PCIF diventa impostato (uno). Se il bit I in SREG e il bit PCIE in GIMSK sono impostati (uno), l'MCU salterà al corrispondente vettore di interrupt. Il flag viene cancellato quando viene eseguita la routine di interrupt. In alternativa, il flag può essere cancellato scrivendovi uno logico.

PCMSK - Registro cambio maschera pin

Morso 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Leggere/scrivere R R R/N R/N R/N R/N R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

Bit 7: 6 - Ris: Bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 5: 0 - PCINT [5: 0]: maschera di abilitazione modifica pin 5: 0

Ogni bit PCINT [5: 0] seleziona se l'interrupt di cambio pin è abilitato sul pin I / O corrispondente. Se è impostato PCINT [5: 0] e il bit PCIE in GIMSK è impostato, l'interrupt di cambio pin è abilitato sul pin I / O corrispondente. Se PCINT [5: 0] è azzerato, l'interrupt di cambio pin sul pin I / O corrispondente è disabilitato.

Porte I/O

Introduzione

Tutte le porte AVR hanno una vera funzionalità di lettura-modifica-scrittura se utilizzate come porte I/O digitali generali. Ciò significa che la direzione di un pin della porta può essere modificata senza cambiare involontariamente la direzione di qualsiasi altro pin con le istruzioni SBI e CBI. Lo stesso vale per la modifica del valore dell'azionamento (se configurato come uscita) o l'abilitazione/disabilitazione delle resistenze di pull-up (se configurata come ingresso). Ogni buffer di uscita ha caratteristiche di unità simmetriche con capacità sia di sink che di source elevate. Il pin driver è abbastanza potente da pilotare direttamente i display a LED. Tutti i pin delle porte hanno resistori di pull-up selezionabili individualmente con un volume di alimentazionetage resistenza invariante. Tutti i pin I/O hanno diodi di protezione sia per VCC che per Ground come indicato in Figura 10-1Fare riferimento a "Caratteristiche elettriche" a pagina 161 per un elenco completo dei parametri.

Figura 10-1. Schema equivalente pin I/O

Figura 10

Tutti i registri e i riferimenti di bit in questa sezione sono scritti in forma generale. Una "x" minuscola rappresenta la lettera di numerazione per la porta e una "n" minuscola rappresenta il numero di bit. Tuttavia, quando si utilizza il registro o le definizioni di bit in un programma, è necessario utilizzare la forma precisa. Ad esempioample, PORTB3 per il bit n. 3 nella porta B, qui documentata generalmente come PORTxn. I registri di I/O fisici e le posizioni dei bit sono elencati in "Registra descrizione" su pagina 64.

Tre posizioni degli indirizzi di memoria I / O sono allocate per ciascuna porta, una per il registro dati - PORTx, il registro di direzione dati - DDRx e i pin di ingresso della porta - PINx. La posizione I / O dei pin di ingresso della porta è di sola lettura, mentre il registro dei dati e il registro della direzione dei dati sono in lettura / scrittura. Tuttavia, scrivendone uno logico su un bit nel registro PINx, si otterrà una commutazione nel bit corrispondente nel registro dati. Inoltre, il bit Pull-up Disable - PUD in MCUCR disabilita la funzione pull-up per tutti i pin in tutte le porte quando impostato.

L'utilizzo della porta I / O come I / O digitale generale è descritto in "Porte come I / O digitale generale" a pagina 53. La maggior parte dei pin delle porte è multiplexata con funzioni alternative per le funzioni periferiche del dispositivo. Il modo in cui ciascuna funzione alternativa interferisce con il pin della porta è descritto in "Funzioni della porta alternativa" a pagina 57. Fare riferimento alle sezioni dei singoli moduli per una descrizione completa delle funzioni alternative.

Si noti che l'abilitazione della funzione alternativa di alcuni dei pin della porta non influisce sull'uso degli altri pin nella porta come I / O digitale generale.

Porte come I / O digitale generale

Le porte sono porte I / O bidirezionali con pull-up interni opzionali. Figura 10-2 mostra una descrizione funzionale di un pin della porta I / O, qui chiamato genericamente Pxn.

Figura 10-2. I/O digitali generali(1)

Figura 10

Configurazione del Pin

Ciascun pin della porta è costituito da tre bit di registro: DDxn, PORTxn e PINxn. Come mostrato in "Registra descrizione" su pagina 64, si accede ai bit DDxn all'indirizzo I / O DDRx, ai bit PORTxn all'indirizzo I / O PORTx e ai bit PINxn all'indirizzo I / O PINx.

Il bit DDxn nel registro DDRx seleziona la direzione di questo pin. Se DDxn è uno logico, Pxn è configurato come pin di uscita. Se DDxn è scritto con zero logico, Pxn è configurato come pin di ingresso.

Se PORTxn è uno logico quando il pin è configurato come pin di ingresso, viene attivata la resistenza di pull-up. Per disattivare la resistenza di pull-up, PORTxn deve essere scritto come zero logico o il pin deve essere configurato come pin di uscita. I pin della porta vengono dichiarati in tre quando la condizione di ripristino diventa attiva, anche se nessun orologio è in esecuzione.

Se PORTxn è scritto logico uno quando il pin è configurato come un pin di uscita, il pin della porta è guidato alto (uno). Se PORTxn è scritto come zero logico quando il pin è configurato come pin di uscita, il pin della porta è impostato su un valore basso (zero).

Commutazione del Pin

Scrivendo uno logico in PINxn si alterna il valore di PORTxn, indipendentemente dal valore di DDRxn. Si noti che l'istruzione SBI può essere utilizzata per alternare un singolo bit in una porta.

Commutazione tra ingresso e uscita

Quando si passa dal tri-state ({DDxn, PORTxn} = 0b00) all'output high ({DDxn, PORTxn} = 0b11), uno stato intermedio con pull-up abilitato {DDxn, PORTxn} = 0b01) o output low ({DDxn, PORTxn} = 0b10) deve verificarsi. Normalmente, lo stato pull-up abilitato è del tutto accettabile, in quanto un ambiente ad alta impedenza non noterà la differenza tra un forte driver alto e un pull-up. In caso contrario, è possibile impostare il bit PUD nel registro MCUCR per disabilitare tutti i pull-up in tutte le porte.

Il passaggio tra input con pull-up e output basso genera lo stesso problema. L'utente deve utilizzare lo stato triplo ({DDxn, PORTxn} = 0b00) o lo stato alto dell'uscita ({DDxn, PORTxn} = 0b10) come passaggio intermedio.

Tabella 10-1 riassume i segnali di controllo per il valore del pin.

Tabella 10-1. Configurazioni pin porta

GGxn PORTXn PUD

(nel MCUCR)

Entrata/uscita Trazione Commento
0 0 X Ingresso NO Tri-stato (Hi-Z)
0 1 0 Ingresso Pxn genererà corrente se ext. tirato basso.
0 1 1 Ingresso NO Tri-stato (Hi-Z)
1 0 X Produzione NO Uscita bassa (Sink)
1 1 X Produzione NO Uscita alta (sorgente)

Lettura del valore del pin

Indipendentemente dall'impostazione del bit di direzione dei dati DDxn, il pin della porta può essere letto tramite il bit di registro PINxn. Come mostrato in Figura 10-2, il bit di registro PINxn e il latch precedente costituiscono un sincronizzatore. Questo è necessario per evitare la metastabilità se il pin fisico cambia valore vicino al limite del clock interno, ma introduce anche un ritardo. Figura 10-3 mostra un diagramma di temporizzazione della sincronizzazione durante la lettura di un valore pin applicato esternamente. I ritardi di propagazione massimo e minimo sono indicati rispettivamente con tpd,max e tpd,min.

Considera il periodo di clock che inizia poco dopo il primo fronte di discesa dell'orologio di sistema. Il latch è chiuso quando il clock è basso e diventa trasparente quando il clock è alto, come indicato dalla regione ombreggiata del segnale "SYNC LATCH". Il valore del segnale viene bloccato quando l'orologio di sistema diventa basso. Viene sincronizzato nel registro PINxn al successivo fronte di clock positivo. Come indicato dalle due frecce tpd, max e tpd, min, una singola transizione del segnale sul pin verrà ritardata tra ½ e 1½ periodo di clock di sistema a seconda del tempo dell'asserzione.

Quando si rilegge un valore pin assegnato dal software, è necessario inserire un'istruzione nop come indicato in Figura 10-4. L'istruzione out imposta il segnale "SYNC LATCH" sul fronte positivo del clock. In questo caso, il ritardo tpd attraverso il sincronizzatore è un periodo di clock di sistema.

Il seguente codice esample mostra come impostare i pin 0 e 1 della porta B in alto, 2 e 3 in basso e definire i pin della porta da 4 a 5 come input con un pull-up assegnato al pin della porta 4. I valori dei pin risultanti vengono riletti di nuovo, ma come discusso in precedenza, è inclusa un'istruzione nop per poter rileggere il valore recentemente assegnato ad alcuni pin.

Codice assemblaggio Example(1)

; Definisci i pull-up e imposta gli output alti

; Definire le direzioni per i pin delle porte

ldi        r16,(1<<PB4)|(1<<PB1)|(1<<PB0)

ldi        r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

fuori PORTB,r16

fuori DDRB,r17

; Inserisci nop per la sincronizzazione

nooo

; Leggi i pin delle porte

in r16,PINB

Nota: per il programma assembly, vengono utilizzati due registri temporanei per ridurre al minimo il tempo dai pull-up impostati sui pin 0, 1 e 4, fino a quando i bit di direzione non vengono impostati correttamente, definendo i bit 2 e 3 come bassi e ridefinendo i bit 0 e 1 come forti guidatori alti.

Codice C Example
carattere senza segno i;

/* Definisce i pull-up e imposta gli output alti */

/* Definisce le direzioni per i pin delle porte */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* Inserisci nop per la sincronizzazione*/

_NOP ();

/* Legge i pin della porta */ i = PINB;

Abilitazione ingresso digitale e modalità di sospensione

Come mostrato in Figura 10-2, il segnale di ingresso digitale può essere clampmesso a terra all'ingresso dello schmitt-trigger. Il segnale indicato con SLEEP nella figura è impostato dal controller MCU Sleep in modalità Power-down per evitare un elevato consumo energetico se alcuni segnali di ingresso sono lasciati fluttuanti o hanno un livello di segnale analogico vicino a VCC/2.

SLEEP viene sovrascritto per i pin della porta abilitati come pin di interrupt esterni. Se la richiesta di interrupt esterno non è abilitata, SLEEP è attivo anche per questi pin. SLEEP è anche sovrascritto da varie altre funzioni alternative come descritto in "Funzioni della porta alternativa" a pagina 57.

Se un livello logico alto ("uno") è presente su un pin di interrupt esterno asincrono configurato come "Interrupt on Rising Edge, Falling Edge o Any Logic Change on Pin" mentre l'interrupt esterno non è abilitato, il flag di interrupt esterno corrispondente verrà essere impostato alla ripresa dalla suddetta modalità Sleep, in quanto il clamping in queste modalità di sospensione produce la modifica logica richiesta.

Pin non collegati

Se alcuni pin non sono utilizzati, si consiglia di assicurarsi che questi pin abbiano un livello definito. Anche se la maggior parte degli ingressi digitali sono disabilitati nelle modalità deep sleep come descritto sopra, gli ingressi flottanti dovrebbero essere evitati per ridurre il consumo di corrente in tutte le altre modalità in cui gli ingressi digitali sono abilitati (Reset, modalità attiva e modalità Idle).

Il metodo più semplice per garantire un livello definito di un pin inutilizzato è abilitare il pull-up interno. In questo caso il pull-up sarà disabilitato durante il reset. Se è importante un basso consumo energetico durante il ripristino, si consiglia di utilizzare un pull-up o un pull-down esterno. Si sconsiglia di collegare i pin inutilizzati direttamente a VCC o GND, poiché ciò potrebbe causare correnti eccessive se il pin viene configurato accidentalmente come uscita.

Funzioni della porta alternativa

La maggior parte dei pin delle porte ha funzioni alternative oltre ad essere I / O digitali generali. Figura 10-5 mostra come i segnali di controllo dei pin della porta dal file semplificato Figura 10-2 può essere sovrascritto da funzioni alternative. I segnali di override potrebbero non essere presenti in tutti i pin della porta, ma la figura serve come descrizione generica applicabile a tutti i pin della porta nella famiglia di microcontrollori AVR.

Tabella 10-2. Descrizione generica dei segnali di override per le funzioni alternative

Nome del segnale Nome e cognome Descrizione
PUO Abilita override pull-up Se questo segnale è impostato, l'abilitazione pull-up è controllata dal segnale PUOV. Se questo segnale viene cancellato, il pull-up viene abilitato quando

{DDxn, PORTxn, PUD} = 0b010.

PUOV Valore di sostituzione pull-up Se PUOE è impostato, il pull-up viene abilitato / disabilitato quando PUOV viene impostato / cancellato, indipendentemente dall'impostazione dei bit DDxn, PORTxn e PUD Register.
DDOE Abilita sovrascrittura direzione dati Se questo segnale è impostato, l'uscita Driver Enable è controllata dal segnale DDOV. Se questo segnale viene cancellato, il driver di uscita viene abilitato dal bit DDxn Register.
DDOV Valore di sostituzione della direzione dei dati Se è impostato DDOE, il driver di uscita viene abilitato / disabilitato quando DDOV viene impostato / cancellato, indipendentemente dall'impostazione del bit del registro DDxn.
PVOE Abilita override valore porta Se questo segnale è impostato e il driver di uscita è abilitato, il valore della porta è controllato dal segnale PVOV. Se PVOE è azzerato e il driver di uscita è abilitato, il valore della porta è controllato dal bit di registro PORTxn.
PVV Valore di porta sovrascrivere il valore Se è impostato PVOE, il valore della porta è impostato su PVOV, indipendentemente dall'impostazione del bit di registro PORTxn.
PTO Abilita override commutazione porta Se è impostato PTOE, il bit di registro PORTxn è invertito.
DIOE Abilita ingresso digitale Abilita override Se questo bit è impostato, l'abilitazione dell'ingresso digitale è controllata dal segnale DIEOV. Se questo segnale viene cancellato, l'abilitazione dell'ingresso digitale è determinata dallo stato dell'MCU (modalità normale, modalità di sospensione).
DIEOV Valore di sostituzione abilitazione ingresso digitale Se DIEOE è impostato, l'ingresso digitale è abilitato / disabilitato quando DIEOV è impostato / cancellato, indipendentemente dallo stato della MCU (modalità normale, modalità sleep).
DI Input digitale Questo è l'ingresso digitale per alternare le funzioni. Nella figura, il segnale è collegato all'uscita dello schmitt-trigger ma prima del sincronizzatore. A meno che l'ingresso digitale non venga utilizzato come sorgente di clock, il modulo con la funzione alternativa utilizzerà il proprio sincronizzatore.
Tutto in uno Ingresso / uscita analogica Questo è l'ingresso / uscita analogico a / da funzioni alternative. Il segnale è collegato direttamente al pad e può essere utilizzato in modo bidirezionale.

Le seguenti sottosezioni descrivono brevemente le funzioni alternative per ciascuna porta e mettono in relazione i segnali di priorità alla funzione alternativa. Fare riferimento alla descrizione della funzione alternativa per ulteriori dettagli.

Funzioni alternative della porta B

I pin della porta B con funzione alternativa sono mostrati in Tabella 10-3.

Tabella 10-3. Funzioni alternative dei pin della porta B

Perno porta Funzione alternativa
PB5

RESET: reimposta il pin

dW: debugWIRE I / O ADC0: canale di ingresso ADC 0

PCINT5: interruzione cambio pin, sorgente 5

PB4 XTAL2: uscita oscillatore a cristallo CLKO: uscita clock di sistema ADC2: canale di ingresso ADC 2

OC1B: Timer / Counter1 Compare Match B Output PCINT4: Pin Change Interrupt 0, Source 4

PB3 XTAL1: ingresso oscillatore a cristallo CLKI: ingresso clock esterno ADC3: canale 3 ingresso ADC

OC1B: Complementary Timer / Counter1 Compare Match B Output PCINT3: Pin Change Interrupt 0, Source 3

PB2 SCK: ingresso orologio seriale ADC1: canale di ingresso ADC 1

T0: Timer / Counter0 Clock Source USCK: USI Clock (Three Wire Mode) SCL: USI Clock (Two Wire Mode) INT0: External Interrupt 0 Input PCINT2: Pin Change Interrupt 0, Source 2

PB1 MISO: ingresso dati master SPI / uscita dati slave AIN1: comparatore analogico, ingresso negativo OC0B: uscita confronto timer / contatore0 corrispondenza B OC1A: uscita confronto timer / contatore1 corrispondenza A DO: uscita dati USI (modalità a tre fili) PCINT1: interrupt cambio pin 0, sorgente 1
PB0 MOSI :: SPI Uscita dati master / Ingresso dati slave AIN0: comparatore analogico, ingresso positivo

OC0A: timer/contatore0 Confronta corrispondenza A uscita

OC1A: Complementary Timer / Counter1 Compare Match A Output A DI: USI Data Input (Three Wire Mode)

SDA: USI Data Input (Two Wire Mode) AREF: External Analog Reference PCINT0: Pin Change Interrupt 0, Source 0

Porta B, bit 5 - RESET / dW / ADC0 / PCINT5

RESET: l'ingresso di reset esterno è attivo basso e abilitato non programmando ("1") il fusibile RSTDISBL. Il pullup viene attivato e il driver di uscita e l'ingresso digitale vengono disattivati ​​quando il pin viene utilizzato come pin RESET.

dW: quando il fusibile debugWIRE Enable (DWEN) è programmato e i bit di blocco non sono programmati, il sistema debugWIRE all'interno del dispositivo di destinazione viene attivato. Il pin della porta RESET è configurato come un pin I / O bidirezionale con cavo AND (open-drain) con pull-up abilitato e diventa il gateway di comunicazione tra il target e l'emulatore.

ADC0: convertitore da analogico a digitale, canale 0.

PCINT5: sorgente interrupt cambio pin 5.

Porta B, Bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: pin dell'oscillatore del chip clock 2. Utilizzato come pin del clock per tutte le sorgenti di clock del chip eccetto l'oscillatore RC calibrabile interno e il clock esterno. Quando viene utilizzato come pin dell'orologio, il pin non può essere utilizzato come pin I / O. Quando si utilizza un oscillatore RC interno calibrabile o un clock esterno come sorgenti di clock del chip, PB4 funge da pin di I / O ordinario.

CLKO: L'orologio di sistema diviso può essere emesso sul pin PB4. L'orologio di sistema diviso verrà emesso se il fusibile CKOUT è programmato, indipendentemente dalle impostazioni PORTB4 e DDB4. Verrà emesso anche durante il ripristino.

ADC2: convertitore da analogico a digitale, canale 2.

OC1B: Output Compare Match output: Il pin PB4 può servire come uscita esterna per Timer / Counter1 Compare Match B quando configurato come uscita (DDB4 set). Il pin OC1B è anche il pin di uscita per la funzione timer della modalità PWM.

PCINT4: sorgente interrupt cambio pin 4.

Porta B, Bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: pin dell'oscillatore del chip clock 1. Utilizzato per tutte le sorgenti di clock del chip tranne l'oscillatore RC calibrabile interno. Quando viene utilizzato come pin dell'orologio, il pin non può essere utilizzato come pin I / O.

CLKI: Ingresso di clock da una sorgente di clock esterna, vedere "Orologio esterno" a pagina 26.

ADC3: convertitore da analogico a digitale, canale 3.

OC1B: Uscita di confronto dell'uscita invertita Uscita: il pin PB3 può servire come uscita esterna per la corrispondenza di confronto B del timer / contatore1 quando configurato come uscita (set DDB3). Il pin OC1B è anche il pin di uscita invertito per la funzione timer della modalità PWM.

PCINT3: sorgente interrupt cambio pin 3.

Porta B, Bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: uscita Master Clock, pin di ingresso Slave Clock per canale SPI. Quando l'SPI è abilitato come Slave, questo pin è configurato come ingresso indipendentemente dall'impostazione di DDB2. Quando l'SPI è abilitato come Master, la direzione dei dati di questo pin è controllata da DDPB2. Quando il pin è forzato dall'SPI come ingresso, il pull-up può ancora essere controllato dal bit PORTB2.

ADC1: convertitore da analogico a digitale, canale 1.

T0: sorgente contatore Timer / Counter0.

USCK: orologio con interfaccia seriale universale in modalità a tre fili.

SCL: orologio seriale in modalità a due fili per la modalità a due fili USI.

INT0: sorgente interrupt esterno 0.

PCINT2: sorgente interrupt cambio pin 2.

Porta B, Bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: ingresso dati master, pin di uscita dati slave per canale SPI. Quando l'SPI è abilitato come Master, questo pin è configurato come ingresso indipendentemente dall'impostazione di DDB1. Quando l'SPI è abilitato come Slave, la direzione dei dati di questo pin è controllata da DDB1. Quando il pin è forzato dall'SPI come input, il pull-up può ancora essere controllato dal bit PORTB1.

AIN1: ingresso negativo comparatore analogico. Configurare il pin della porta come ingresso con il pull-up interno disattivato per evitare che la funzione della porta digitale interferisca con la funzione del comparatore analogico.

OC0B: Output Compare Match output. Il pin PB1 può fungere da uscita esterna per la corrispondenza di confronto Timer / Counter0 B. Il pin PB1 deve essere configurato come un'uscita (DDB1 impostato (uno)) per svolgere questa funzione. Il pin OC0B è anche il pin di uscita per la funzione timer della modalità PWM.

OC1A: Uscita Match Compare Output: Il pin PB1 può servire come uscita esterna per Timer / Counter1 Compare Match B quando configurato come uscita (DDB1 set). Il pin OC1A è anche il pin di uscita per la funzione timer della modalità PWM.

DO: Uscita dati interfaccia seriale universale modalità a tre fili. Modalità a tre fili L'output dei dati ha la precedenza sul valore PORTB1 e viene pilotato sulla porta quando il bit di direzione dei dati DDB1 è impostato (uno). PORTB1 abilita ancora il pull-up, se la direzione è inserita e PORTB1 è impostato (uno).

PCINT1: sorgente interrupt cambio pin 1.

Porta B, Bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: uscita dati master SPI, ingresso dati slave per canale SPI. Quando l'SPI è abilitato come Slave, questo pin è configurato come ingresso indipendentemente dall'impostazione di DDB0. Quando l'SPI è abilitato come Master, la direzione dei dati di questo pin è controllata da DDB0. Quando il pin è forzato dall'SPI come input, il pull-up può ancora essere controllato dal bit PORTB0.

AIN0: ingresso positivo del comparatore analogico. Configurare il pin della porta come ingresso con il pull-up interno disattivato per evitare che la funzione della porta digitale interferisca con la funzione del comparatore analogico.

OC0A: Output Compare Match output. Il pin PB0 può fungere da uscita esterna per la corrispondenza di confronto timer / contatore0 A quando configurato come uscita (DDB0 impostato (uno)). Il pin OC0A è anche il pin di uscita per la funzione timer della modalità PWM.

OC1A: Uscita corrispondenza confronto uscita invertita: il pin PB0 può fungere da uscita esterna per la corrispondenza confronto timer / contatore1 B quando configurato come uscita (set DDB0). Il pin OC1A è anche il pin di uscita invertito per la funzione timer della modalità PWM.

SDA: dati dell'interfaccia seriale in modalità a due fili.

AREF: Riferimento analogico esterno per ADC. Il pullup e il driver di uscita sono disabilitati su PB0 quando il pin viene utilizzato come riferimento esterno o Volume internotage Riferimento con condensatore esterno al pin AREF.

DI: ingresso dati in modalità USI a tre fili. La modalità USI a tre fili non sovrascrive le normali funzioni della porta, quindi il pin deve essere configurato come ingresso per la funzione DI.

PCINT0: sorgente interrupt cambio pin 0.

Tabella 10-4 Tabella 10-5 mettere in relazione le funzioni alternative della porta B con i segnali prioritari mostrati in Figura 10-5 su pagina 58.

Tabella 10-4. Segnali di override per funzioni alternative in PB[5:3]

Nome del segnale PB5 / RESET / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUO

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Trasmissione 0 0
PVOE 0 Abilita OC1B

Abilita OC1B

PVV 0 OC1B OC1B
PTO 0 0 0
DIOE

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIEOV ADC0D ADC2D ADC3D
DI Ingresso PCINT5 Ingresso PCINT4 Ingresso PCINT3
Tutto in uno Ingresso RESET, Ingresso ADC0 Ingresso ADC2 Ingresso ADC3

Nota: quando il Fusibile è “0” (Programmato).

Tabella 10-5. Segnali di override per funzioni alternative in PB[2:0]

Nome del segnale PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AREF/OC1A/OC0A/

PCINT0

PUO USI_TWO_WIRE 0 USI_TWO_WIRE
PUOV 0 0 0
DDOE USI_TWO_WIRE 0 USI_TWO_WIRE
DDOV (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTAB0) • DDB0

PVOE USI_DUE_FILI • DDB2 OC0B Abilita + OC1A Abilita + USI_THREE_WIRE

OC0A Abilita + OC1A Abilita + (USI_TWO_WIRE

DDB0)

PVV 0 OC0B + OC1A + DO

OC0A + OC1A

PTO USITC 0 0
DIOE PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
DIEOV ADC1D AIN1D AIN0D
DI T0 / USCK / SCL / INT0 /

Ingresso PCINT2

Ingresso PCINT1 Ingresso DI / SDA / PCINT0
Tutto in uno Ingresso ADC1 Ingresso negativo comparatore analogico Ingresso positivo comparatore analogico

Descrizione registro

MCUCR - Registro di controllo MCU

Morso 7 6 5 4 3 2 1 0
0x35 CORPI PUD SE SM1 SM0 CORPO ISC01 ISC00 MCUCR
Leggere/scrivere R R/N R/N R/N R/N R R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

Bit 6 - PUD: pull-up disabilitato

Quando questo bit viene scritto su uno, i pull-up nelle porte I / O sono disabilitati anche se i registri DDxn e PORTxn sono configurati per abilitare i pull-up ({DDxn, PORTxn} = 0b01). Vedere "Configurazione del PIN" a pagina 54 per maggiori dettagli su questa funzione.

PORTB - Registro dati della porta B.

Morso 7 6 5 4 3 2 1 0
0x18 PORTAB5 PORTAB4 PORTAB3 PORTAB2 PORTAB1 PORTAB0 PORTO
Leggere/scrivere R R R/N R/N R/N R/N R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

DDRB - Registro di direzione dati porta B.

Morso 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
Leggere/scrivere R R R/N R/N R/N R/N R/N R/N
Valore iniziale 0 0 0 0 0 0 0 0

PINB - Indirizzo pin di ingresso porta B.

Morso 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PIL
Leggere/scrivere R R R/N R/N R/N R/N R/N R/N
Valore iniziale 0 0 N / A N / A N / A N / A N / A N / A

Timer / contatore 8 a 0 bit con PWM

Caratteristiche

Due unità di confronto delle uscite indipendenti

Registri di confronto delle uscite con doppio buffer

Azzera timer durante confronto partita (ricaricamento automatico)

Modulatore di larghezza di impulso (PWM) a correzione di fase senza glitch

Periodo PWM variabile

Generatore di frequenza

Tre sorgenti di interrupt indipendenti (TOV0, OCF0A e OCF0B)

Sopraview

Timer / Counter0 è un modulo Timer / Counter a 8 bit per uso generico, con due unità di confronto uscite indipendenti e con supporto PWM. Consente tempi di esecuzione del programma accurati (gestione degli eventi) e generazione di onde.

Uno schema a blocchi semplificato del timer / contatore a 8 bit è mostrato in Figura 11-1. Per il posizionamento effettivo dei pin I / O, fare riferimento a "Pinout ATtiny25 / 45/85" a pagina 2. I registri di I / O accessibili dalla CPU, inclusi i bit di I / O e i pin di I / O, sono mostrati in grassetto. Il registro I / O specifico del dispositivo e le posizioni dei bit sono elencati nel file "Descrizione registro" a pagina 77.

I registri Timer/Counter (TCNT0) e Output Compare Registers (OCR0A e OCR0B) sono registri a 8 bit. I segnali di richiesta di interrupt (abbreviati in Int.Req. nella figura) sono tutti visibili nel Timer Interrupt Flag Register (TIFR). Tutti gli interrupt sono mascherati individualmente con il Timer Interrupt Mask Register (TIMSK). TIFR e TIMSK non sono mostrati nella figura.

Il timer/contatore può essere sincronizzato internamente, tramite il prescaler o da una sorgente di clock esterna sul pin T0. Il blocco logico Clock Select controlla la sorgente di clock e il fronte che il Timer/Counter utilizza per incrementare (o decrementare) il suo valore. Il timer/contatore è inattivo quando non è selezionata alcuna sorgente di clock. L'uscita dalla logica di selezione dell'orologio viene definita orologio del timer (clkT0).

I registri di confronto delle uscite con doppio buffer (OCR0A e OCR0B) vengono sempre confrontati con il valore del timer / contatore. Il risultato del confronto può essere utilizzato dal generatore di forme d'onda per generare un'uscita PWM o a frequenza variabile sui pin di confronto dell'uscita (OC0A e OC0B). Vedere "Unità di confronto delle uscite" a pagina 69. per dettagli. L'evento Compare Match imposterà anche il flag di confronto (OCF0A o OCF0B) che può essere utilizzato per generare una richiesta di interrupt di confronto output.

Definizioni

Molti registri e riferimenti di bit in questa sezione sono scritti in forma generale. Una "n" minuscola sostituisce il numero di timer / contatore, in questo caso 0. Una "x" minuscola sostituisce il modulo di confronto delle uscite, in questo caso il modulo di confronto A o B. Tuttavia, quando si utilizza il registro o il bit definisce in un programma, deve essere usata la forma precisa, cioè TCNT0 per accedere al valore del contatore Timer / Counter0 e così via.

Le definizioni in Tabella 11-1 sono anche ampiamente utilizzati in tutto il documento.

Tabella 11-1. Definizioni

Costante Descrizione
METTER IL FONDO A Il contatore raggiunge BOTTOM quando diventa 0x00
Massimo Il contatore raggiunge il suo valore MAX quando diventa 0xFF (decimale 255)
SUPERIORE Il contatore raggiunge il TOP quando diventa uguale al valore più alto nella sequenza di conteggio. Il valore TOP può essere assegnato al valore fisso 0xFF (MAX) o al valore memorizzato nel registro OCR0A. L'assegnazione dipende dalla modalità di funzionamento

Prescaler timer / contatore e sorgenti orologio

Il timer / contatore può essere sincronizzato da una sorgente di clock interna o esterna. La sorgente del clock viene selezionata dalla logica di selezione dell'orologio controllata dai bit di selezione dell'orologio (c) situati nel registro di controllo del timer / contatore0 (TCCR0B).

Sorgente di clock interna con Prescaler

Timer/Counter0 può essere sincronizzato direttamente dall'orologio di sistema (impostando CS0[2:0] = 1). Ciò fornisce il funzionamento più veloce, con una frequenza di clock massima del timer/contatore uguale alla frequenza di clock del sistema (fCLK_I/O). In alternativa, uno dei quattro tap del prescaler può essere utilizzato come sorgente di clock. Il clock prescalato ha una frequenza di entrambi

Ripristino prescrittore

Il prescaler è free running, cioè opera indipendentemente dalla logica di Clock Select di Timer/Contatore0. Poiché il prescaler non è influenzato dalla selezione dell'orologio del timer/contatore, lo stato del prescaler avrà implicazioni per le situazioni in cui viene utilizzato un orologio prescalato. un exampil le di un artefatto di prescaling è quando il timer/contatore è abilitato e sincronizzato dal prescaler (6 > CS0[2:0] > 1). Il numero di cicli di clock di sistema da quando il timer è abilitato al primo conteggio può essere compreso tra 1 e N+1 cicli di clock di sistema, dove N è uguale al divisore di prescaler (8, 64, 256 o 1024).

È possibile utilizzare il ripristino del prescaler per sincronizzare il timer / contatore all'esecuzione del programma.

Sorgente di clock esterna

Una sorgente di clock esterna applicata al pin T0 può essere utilizzata come timer/counter clock (clkT0). Il pin T0 è sampguidato una volta ogni ciclo di clock di sistema dalla logica di sincronizzazione dei pin. Il sincronizzato (sampled) il segnale viene quindi passato

attraverso il rilevatore di bordi. Figura 11-2 mostra uno schema a blocchi funzionale equivalente della logica di sincronizzazione T0 e del rilevatore di fronti. I registri sono sincronizzati sul fronte positivo del clock di sistema interno (clkI/O). Il fermo è trasparente nel periodo alto dell'orologio di sistema interno.

Il rilevatore di fronti genera un impulso clkT0 per ogni fronte positivo (CS0[2:0] = 7) o negativo (CS0[2:0] = 6) che rileva.

I registri OCR0x hanno un doppio buffer quando si utilizza una delle modalità Pulse Width Modulation (PWM). Per le modalità di funzionamento normale e Clear Timer on Compare (CTC), il doppio buffering è disabilitato. Il doppio buffer sincronizza l'aggiornamento dei registri di confronto OCR0x all'inizio o alla fine della sequenza di conteggio. La sincronizzazione impedisce il verificarsi di impulsi PWM di lunghezza dispari e non simmetrici, rendendo così l'uscita senza problemi.

L'accesso al registro OCR0x può sembrare complesso, ma non è così. Quando il doppio buffering è abilitato, la CPU ha accesso al registro del buffer OCR0x, e se il doppio buffering è disabilitato la CPU accederà direttamente all'OCR0x.

Forza confronto output

Nelle modalità di generazione della forma d'onda non PWM, l'uscita di corrispondenza del comparatore può essere forzata scrivendone uno nel bit Force Output Compare (FOC0x). Forzare la corrispondenza del confronto non imposterà il flag OCF0x o ricaricherà / azzererà il timer, ma il pin OC0x verrà aggiornato come se si fosse verificata una vera corrispondenza del confronto (le impostazioni dei bit COM0x [1: 0] definiscono se il pin OC0x è impostato, cancellato o alternato).

Confronta Match Blocking per TCNT0 Write

Tutte le operazioni di scrittura della CPU nel registro TCNT0 bloccheranno qualsiasi confronto di confronto che si verifica nel successivo ciclo di clock del timer, anche quando il timer viene arrestato. Questa funzione consente di inizializzare OCR0x allo stesso valore di TCNT0 senza attivare un interrupt quando è abilitato il timer / contatore.

Utilizzo dell'Unità di confronto delle uscite

Poiché la scrittura di TCNT0 in qualsiasi modalità operativa bloccherà tutte le corrispondenze di confronto per un ciclo di clock del timer, ci sono dei rischi quando si modifica TCNT0 quando si utilizza il modulo di confronto delle uscite, indipendentemente dal fatto che il timer / contatore sia in esecuzione o meno. Se il valore scritto in TCNT0 è uguale al valore OCR0x, la corrispondenza del confronto verrà persa, determinando una generazione di forma d'onda errata. Allo stesso modo, non scrivere il valore TCNT0 uguale a BOTTOM quando il contatore esegue il conteggio indietro.

La configurazione dell'OC0x deve essere eseguita prima di impostare il registro di direzione dei dati per l'uscita del pin della porta. Il modo più semplice per impostare il valore OC0x è utilizzare i bit stroboscopici Force Output Compare (FOC0x) in modalità Normale. I registri OC0x mantengono i propri valori anche quando si cambia tra le modalità di generazione della forma d'onda.

Tenere presente che i bit COM0x [1: 0] non vengono memorizzati nel doppio buffer insieme al valore di confronto. La modifica dei bit COM0x [1: 0] avrà effetto immediato.

Confronta unità di output della corrispondenza

I bit della modalità Compare Output (COM0x [1: 0]) hanno due funzioni. Il generatore di forme d'onda utilizza i bit COM0x [1: 0] per definire lo stato Output Compare (OC0x) al successivo confronto Match Match. Inoltre, i bit COM0x [1: 0] controllano la sorgente di uscita del pin OC0x. Figura 11-6 mostra uno schema semplificato della logica influenzata dall'impostazione del bit COM0x [1: 0]. I registri I / O, i bit I / O e i pin I / O nella figura sono mostrati in grassetto. Vengono visualizzate solo le parti dei registri di controllo delle porte I / O generali (DDR e PORT) che sono influenzate dai bit COM0x [1: 0]. Quando si fa riferimento allo stato OC0x, il riferimento è per il registro OC0x interno, non per il pin OC0x. Se si verifica un ripristino del sistema, il registro OC0x viene ripristinato su "0".

Quando OC0A / OC0B è collegato al pin I / O, la funzione dei bit COM0A [1: 0] / COM0B [1: 0] dipende dall'impostazione del bit WGM0 [2: 0]. Tabella 11-2 mostra la funzionalità bit COM0x [1: 0] quando i bit WGM0 [2: 0] sono impostati su una modalità normale o CTC (non PWM).

Tabella 11-2. Confronta la modalità di uscita, la modalità non PWM

COM0A1 COM0B1 COM0A0 COM0B0 Descrizione
0 0 Normale funzionamento della porta, OC0A / OC0B scollegato.
0 1 Attiva OC0A / OC0B su Confronta corrispondenza
1 0 Cancella OC0A / OC0B su Compare Match
1 1 Imposta OC0A / OC0B su Confronta corrispondenza

Tabella 11-3 mostra la funzionalità bit COM0x [1: 0] quando i bit WGM0 [2: 0] sono impostati sulla modalità PWM veloce.

Tabella 11-3. Confronta la modalità di uscita, la modalità PWM veloce(1)

COM0A1 COM0B1 COM0A0 COM0B0 Descrizione
0 0 Normale funzionamento della porta, OC0A / OC0B scollegato.
0 1 Prenotato
1 0 Cancella OC0A / OC0B su Compare Match, imposta OC0A / OC0B su BOTTOM (modalità non invertente)
1 1 Imposta OC0A / OC0B su Compare Match, cancella OC0A / OC0B in BOTTOM (modalità di inversione)

Nota: un caso speciale si verifica quando OCR0A o OCR0B è uguale a TOP ed è impostato COM0A1/COM0B1. In questo caso, la corrispondenza di confronto viene ignorata, ma il set o il clear viene eseguito in BOTTOM. Vedere "Modalità PWM veloce" a pagina 73 per maggiori dettagli.

Tabella 11-4 mostra la funzionalità del bit COM0x [1: 0] quando i bit WGM0 [2: 0] sono impostati sulla modalità PWM corretta per la fase.

Tabella 11-4. Confronta la modalità di uscita, la modalità PWM a correzione di fase(1)

COM0A1 COM0B1 COM0A0 COM0B0 Descrizione
0 0 Normale funzionamento della porta, OC0A / OC0B scollegato.
0 1 Prenotato
1 0 Cancella OC0A / OC0B su Confronta Match durante il conteggio. Impostare OC0A / OC0B su Confronta corrispondenza durante il conteggio indietro.
1 1 Impostare OC0A / OC0B su Confronta corrispondenza durante il conteggio. Cancella OC0A / OC0B su Confronta Match durante il conteggio indietro.

Nota: 1. Un caso speciale si verifica quando OCR0A o OCR0B è uguale a TOP ed è impostato COM0A1/COM0B1. In questo caso, il Compare Match viene ignorato, ma il set o il clear viene eseguito in TOP. Vedere "Modalità PWM con correzione di fase" a pagina 74 per maggiori dettagli.

Bit 3: 2 - Ris: Bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 1: 0 - WGM0 [1: 0]: modalità di generazione della forma d'onda

Combinati con il bit WGM02 trovato nel registro TCCR0B, questi bit controllano la sequenza di conteggio del contatore, la sorgente del valore massimo (TOP) del contatore e il tipo di generazione della forma d'onda da utilizzare, vedere Tabella 11-5. Le modalità di funzionamento supportate dall'unità Timer / Counter sono: modalità normale (contatore), modalità Clear Timer on Compare Match (CTC) e due tipi di modalità Pulse Width Modulation (PWM) (vedere "Modalità di funzionamento" a pagina 71).

Tabella 11-5. Bit della modalità di generazione della forma d'onda Descrizione

Modalità GMG 02 GMG 01 GMG 00 Modalità di funzionamento timer / contatore SUPERIORE Aggiornamento di OCRx a Flag TOV impostato su
0 0 0 0 Normale 0xFF Immediato Massimo(1)
1 0 0 1 PWM, correzione di fase 0xFF SUPERIORE METTER IL FONDO A(2)
2 0 1 0 CTC OCRA Immediato Massimo(1)
3 0 1 1 PWM veloce 0xFF METTER IL FONDO A(2) Massimo(1)
4 1 0 0 Prenotato
5 1 0 1 PWM, correzione di fase OCRA SUPERIORE METTER IL FONDO A(2)
6 1 1 0 Prenotato
7 1 1 1 PWM veloce OCRA METTER IL FONDO A(2) SUPERIORE

Bit 7 - FOC0A: Force Output Compare A

Il bit FOC0A è attivo solo quando i bit WGM specificano una modalità non PWM.

Tuttavia, per garantire la compatibilità con i dispositivi futuri, questo bit deve essere impostato su zero quando TCCR0B viene scritto quando si opera in modalità PWM. Quando si scrive uno logico nel bit FOC0A, viene forzato un confronto immediato del confronto sull'unità di generazione della forma d'onda. L'uscita OC0A viene modificata in base all'impostazione dei bit COM0A [1: 0]. Notare che il bit FOC0A è implementato come strobo. Pertanto è il valore presente nei bit COM0A [1: 0] che determina l'effetto del confronto forzato.

Uno strobo FOC0A non genererà alcun interrupt, né cancellerà il timer in modalità CTC utilizzando OCR0A come TOP. Il bit FOC0A viene sempre letto come zero.

Bit 6 - FOC0B: Force Output Compare B

Il bit FOC0B è attivo solo quando i bit WGM specificano una modalità non PWM.

Tuttavia, per garantire la compatibilità con i dispositivi futuri, questo bit deve essere impostato su zero quando TCCR0B viene scritto quando si opera in modalità PWM. Quando si scrive uno logico nel bit FOC0B, viene forzato un confronto immediato del confronto sull'unità di generazione della forma d'onda. L'uscita OC0B viene modificata in base all'impostazione dei bit COM0B [1: 0]. Notare che il bit FOC0B è implementato come strobo. Pertanto è il valore presente nei bit COM0B [1: 0] che determina l'effetto del confronto forzato.

Uno strobo FOC0B non genererà alcun interrupt, né cancellerà il timer in modalità CTC utilizzando OCR0B come TOP.

Il bit FOC0B viene sempre letto come zero.

Bit 5: 4 - Ris: Bit riservati

Questi bit sono bit riservati nell'ATtiny25 / 45/85 e saranno sempre letti come zero.

Bit 3 - WGM02: modalità di generazione della forma d'onda

Vedere la descrizione in "TCCR0A - Registro di controllo timer / contatore A" a pagina 77.

Bit 2: 0 - CS0 [2: 0]: selezione orologio

I tre bit di selezione dell'orologio selezionano la sorgente dell'orologio che deve essere utilizzata dal timer / contatore.

Tabella 11-6. Bit di selezione dell'orologio Descrizione

CS02 CS01 CS00 Descrizione
0 0 0 Nessuna sorgente di clock (timer / contatore fermi)
0 0 1 clkI/O/(Nessuna prescalatura)
0 1 0 clkI/O/8 (dal prescaler)
0 1 1 clkI/O/64 (dal prescaler)
1 0 0 clkI/O/256 (dal prescaler)
1 0 1 clkI/O/1024 (dal prescaler)
1 1 0 Sorgente di clock esterna sul pin T0. Orologio sul fronte di caduta.
1 1 1 Sorgente di clock esterna sul pin T0. Orologio sul fronte di salita.

Se vengono utilizzate modalità pin esterne per Timer / Counter0, le transizioni sul pin T0 eseguiranno il clock del contatore anche se il pin è configurato come uscita. Questa funzione consente il controllo software del conteggio.

Contare e confrontare le unità

Il funzionamento generale del Timer / Contatore1 è descritto nella modalità asincrona e il funzionamento nel modo sincrono è menzionato solo se ci sono differenze tra queste due modalità. Figura 12-2 mostra lo schema a blocchi del registro di sincronizzazione Timer / Contatore 1 ei ritardi di sincronizzazione tra i registri. Notare che tutti i dettagli di clock gating non sono mostrati nella figura. I valori del registro Timer / Counter1 passano attraverso i registri di sincronizzazione interni, che causano il ritardo di sincronizzazione dell'ingresso, prima di influenzare il funzionamento del contatore. I registri TCCR1, GTCCR, OCR1A, OCR1B e OCR1C possono essere riletti subito dopo la scrittura del registro. I valori di rilettura sono ritardati per il registro e i flag (OCF1A, OCF1B e TOV1) Timer / Contatore1 (TCNT1), a causa della sincronizzazione di ingresso e uscita.

Il timer / contatore1 offre un'elevata risoluzione e un utilizzo ad alta precisione con le minori opportunità di prescaling. Può anche supportare due modulatori di larghezza di impulso a 8 bit accurati e ad alta velocità che utilizzano velocità di clock fino a 64 MHz (o 32 MHz in modalità a bassa velocità). In questa modalità, Timer / Counter1 e i registri di confronto delle uscite fungono da PWM indipendenti doppi con uscite non invertite e invertite non sovrapposte. Fare riferimento a pagina 86 per una descrizione dettagliata di questa funzione. Allo stesso modo, le elevate opportunità di prescaling rendono questa unità utile per funzioni a velocità inferiore o funzioni di temporizzazione esatte con azioni poco frequenti.

Figura 12-2. Diagramma a blocchi del registro di sincronizzazione del timer/contatore 1.

Timer / Counter1 e il prescaler consentono di eseguire la CPU da qualsiasi sorgente di clock mentre il prescaler opera sul veloce clock PCK a 64 MHz (o 32 MHz in modalità a bassa velocità) in modalità asincrona.

Notare che la frequenza di clock del sistema deve essere inferiore a un terzo della frequenza PCK. Il meccanismo di sincronizzazione del Timer / Counter1 asincrono necessita di almeno due fronti del PCK quando il clock di sistema è alto. Se la frequenza dell'orologio di sistema è troppo alta, c'è il rischio che i dati o i valori di controllo vadano persi.

Il seguente Figura 12-3 mostra lo schema a blocchi per Timer / Counter1.

Tabella 12-1. Modalità di confronto Selezionare in modalità PWM

COM1x1 COM1x0 Effetto sui pin di confronto dell'output
0 0 OC1x non connesso. OC1x non connesso.
0 1 OC1x cancellato durante il confronto. Impostato quandoTCNT1 = $ 00. OC1x impostato sulla corrispondenza di confronto. Cancellato quando TCNT1 = $ 00.
1 0 OC1x cancellato durante il confronto. Impostato quando TCNT1 = $ 00. OC1x non connesso.
1 1 OC1x Impostato sulla corrispondenza di confronto. Cancellato quando TCNT1 = $ 00. OC1x non connesso.

Caratteristiche dell'ADC

Tabella 21-8. Caratteristiche ADC, canali single-ended. TA = da -40°C a +85°C

Simbolo Parametro Condizione Minimo Tipo Massimo Unità
Risoluzione 10 Pezzi
Precisione assoluta (inclusi errori INL, DNL e quantizzazione, guadagno e offset) VREF = 4V, VCC = 4V,

Orologio ADC = 200 kHz

2 LSB
VREF = 4V, VCC = 4V,

Orologio ADC = 1 MHz

3 LSB
VREF = 4V, VCC = 4V,

Orologio ADC = 200 kHz

Modalità di riduzione del rumore

1.5 LSB
VREF = 4V, VCC = 4V,

Orologio ADC = 1 MHz

Modalità di riduzione del rumore

2.5 LSB
Non linearità integrale (INL) (precisione dopo offset e calibrazione del guadagno) VREF = 4V, VCC = 4V,

Orologio ADC = 200 kHz

1 LSB
Non linearità differenziale (DNL) VREF = 4V, VCC = 4V,

Orologio ADC = 200 kHz

0.5 LSB
Guadagna errore VREF = 4V, VCC = 4V,

Orologio ADC = 200 kHz

2.5 LSB
Errore di offset VREF = 4V, VCC = 4V,

Orologio ADC = 200 kHz

1.5 LSB
Tempo di conversione Conversione in esecuzione gratuita 14 280 ms
Frequenza dell'orologio 50 1000 kHz
Numero di telaio Ingresso volumetage Terra VREF V
Larghezza di banda in ingresso 38.4 kHz
RIF. Volume di riferimento esternotage 2.0 VCC V
Vint Volume internotage Riferimento 1.0 1.1 1.2 V
Riferimento interno 2.56 V. (1) VCC > 3.0 V 2.3 2.56 2.8 V
RIF 32
PIOVERE Resistenza ingresso analogico 100
Uscita ADC 0 1023 LSB

Nota: 1. I valori sono solo linee guida.

Tabella 21-9. Caratteristiche ADC, canali differenziali (modalità unipolare). TA = da -40°C a +85°C

Simbolo Parametro Condizione Minimo Tipo Massimo Unità
Risoluzione Guadagno = 1x 10 Pezzi
Guadagno = 20x 10 Pezzi
Precisione assoluta (inclusi INL, DNL e

Quantizzazione, guadagno e errori di offset)

Guadagno = 1x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

10.0 LSB
Guadagno = 20x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

20.0 LSB
Non linearità integrale (INL) (precisione dopo offset e calibrazione del guadagno) Guadagno = 1x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

4.0 LSB
Guadagno = 20x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

10.0 LSB
Guadagna errore Guadagno = 1x 10.0 LSB
Guadagno = 20x 15.0 LSB
Errore di offset Guadagno = 1x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

3.0 LSB
Guadagno = 20x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

4.0 LSB
Tempo di conversione Conversione in esecuzione gratuita 70 280 ms
Frequenza dell'orologio 50 200 kHz
Numero di telaio Ingresso volumetage Terra VCC V
VDIFF Differenziale di ingresso Voltage VREF/Guadagno V
Larghezza di banda in ingresso 4 kHz
RIF. Volume di riferimento esternotage 2.0 VCC – 1.0 V
Vint Volume internotage Riferimento 1.0 1.1 1.2 V
Riferimento interno 2.56 V. (1) VCC > 3.0 V 2.3 2.56 2.8 V
RIF Resistenza di ingresso di riferimento 32
PIOVERE Resistenza ingresso analogico 100
Uscita conversione ADC 0 1023 LSB

Nota: i valori sono solo linee guida.

Tabella 21-10. Caratteristiche ADC, canali differenziali (modalità bipolare). TA = da -40°C a +85°C

Simbolo Parametro Condizione Minimo Tipo Massimo Unità
Risoluzione Guadagno = 1x 10 Pezzi
Guadagno = 20x 10 Pezzi
Precisione assoluta (inclusi INL, DNL e

Quantizzazione, guadagno e errori di offset)

Guadagno = 1x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

8.0 LSB
Guadagno = 20x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

8.0 LSB
Non linearità integrale (INL) (precisione dopo offset e calibrazione del guadagno) Guadagno = 1x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

4.0 LSB
Guadagno = 20x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

5.0 LSB
Guadagna errore Guadagno = 1x 4.0 LSB
Guadagno = 20x 5.0 LSB
Errore di offset Guadagno = 1x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

3.0 LSB
Guadagno = 20x

VREF = 4V, VCC = 5V

Orologio ADC = 50-200 kHz

4.0 LSB
Tempo di conversione Conversione in esecuzione gratuita 70 280 ms
Frequenza dell'orologio 50 200 kHz
Numero di telaio Ingresso volumetage Terra VCC V
VDIFF Differenziale di ingresso Voltage VREF/Guadagno V
Larghezza di banda in ingresso 4 kHz
RIF. Volume di riferimento esternotage 2.0 VCC – 1.0 V
Vint Volume internotage Riferimento 1.0 1.1 1.2 V
Riferimento interno 2.56 V. (1) VCC > 3.0 V 2.3 2.56 2.8 V
RIF Resistenza di ingresso di riferimento 32
PIOVERE Resistenza ingresso analogico 100
Uscita conversione ADC -512 511 LSB

Riepilogo del set di istruzioni

Mnemonici Operandi Descrizione Operazione Bandiere #Orologi
ISTRUZIONI ARITMETICHE E LOGICHE
AGGIUNGERE Rd, Rr Aggiungi due registri Rd ← Rd + Rr Z, C, N, V, H 1
ADC Rd, Rr Aggiungi con Trasportare due registri Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW Rdl, K Aggiungi immediato a Word Tdh:Rdl ← Tdh:Rdl + K Z, C, N, V, S 2
SUB Rd, Rr Sottrai due registri Rd ← Rd – Rr Z, C, N, V, H 1
SUBITO Rd, K Sottrai costante dal registro Td ← Td – K Z, C, N, V, H 1
SBC Rd, Rr Sottrai con Riporta due registri Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI Rd, K Sottrarre con Carry Constant da Reg. Mid ← Mis – Re – Do Z, C, N, V, H 1
SBIW Rdl, K Sottrai immediato da Word Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
E Rd, Rr Registri AND logici Rd ← Rd ∙ Rr Z, N, V 1
EIO Rd, K Registro AND logico e costante Rd ← Rd ∙ K Z, N, V 1
OR Rd, Rr Registri OR logici Rd ← Rd v Rr Z, N, V 1
ORI Rd, K Registro OR logico e costante Rd ← Rd v K Z, N, V 1
EOR Rd, Rr Registri OR esclusivi Rd ← Rd ⊕ Rr Z, N, V 1
COM Rd Il proprio complemento Rd ← 0xFF − Rd Z, C, N, V 1
NEG Rd Complemento a due Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR Rd, K Imposta bit nel registro Rd ← Rd v K Z, N, V 1
CBR Rd, K Cancella bit nel registro Rd ← Rd ∙ (0xFF – K) Z, N, V 1
INC Rd Incremento Rd ← Rd + 1 Z, N, V 1
DIC. Rd diminuzione Rd ← Rd − 1 Z, N, V 1
TST Rd Prova per zero o meno Rd ← Rd ∙ Rd Z, N, V 1
CLR Rd Cancella registro Rd ← Rd ⊕ Rd Z, N, V 1
SERBATOIO Rd Imposta registro Rd ← 0xFF Nessuno 1
ISTRUZIONI PER LA FILIALE
RJMP k Salto relativo PC ← PC + k + 1 Nessuno 2
IJMP Salto indiretto a (Z) PC ← Z Nessuno 2
RALL k Richiamo della subroutine relativa PC ← PC + k + 1 Nessuno 3
CHIAMO Chiamata indiretta a (Z) PC ← Z Nessuno 3
RITIRARE Ritorno subroutine PC ← STILE Nessuno 4
RETI Interrompi ritorno PC ← STILE I 4
CPSE Rd, Rr Confronta, salta se uguale se (Rd = Rr) PC ← PC + 2 o 3 Nessuno 1/2/3
CP Rd, Rr Confrontare Rd - Rr Z, N, V, C, H 1
PCC Rd, Rr Confronta con Carry Rd - Rr - C Z, N, V, C, H 1
CPI Rd, K Confronta Registrati con Immediato Rd-K Z, N, V, C, H 1
SBRC Rrr, b Salta se il bit nel registro è stato cancellato se (Rr(b)=0) PC ← PC + 2 o 3 Nessuno 1/2/3
SBR Rrr, b Salta se il bit nel registro è impostato se (Rr(b)=1) PC ← PC + 2 o 3 Nessuno 1/2/3
SBI p, b Salta se il bit nel registro I / O è azzerato se (P(b)=0) PC ← PC + 2 o 3 Nessuno 1/2/3
SBI p, b Salta se il bit nel registro I / O è impostato se (P(b)=1) PC ← PC + 2 o 3 Nessuno 1/2/3
BRBS s, k Ramo se flag di stato impostato se (SREG(s) = 1) allora PC←PC+k + 1 Nessuno 1/2
BRBC s, k Ramo se il flag di stato è deselezionato se (SREG(s) = 0) allora PC←PC+k + 1 Nessuno 1/2
BREQ k Ramo se uguale se (Z = 1) allora PC ← PC + k + 1 Nessuno 1/2
BRN k Branch se non uguale se (Z = 0) allora PC ← PC + k + 1 Nessuno 1/2
BRCS k Ramo se porta insieme se (C = 1) allora PC ← PC + k + 1 Nessuno 1/2
BRCC k Ramo se il trasporto è stato cancellato se (C = 0) allora PC ← PC + k + 1 Nessuno 1/2
BRSH k Ramo se uguale o superiore se (C = 0) allora PC ← PC + k + 1 Nessuno 1/2
BRLO k Ramo se inferiore se (C = 1) allora PC ← PC + k + 1 Nessuno 1/2
BRM k Ramo se meno se (N = 1) allora PC ← PC + k + 1 Nessuno 1/2
BRPL k Ramo se Plus se (N = 0) allora PC ← PC + k + 1 Nessuno 1/2
BRGE k Ramo se maggiore o uguale, firmato se (N ⊕ V= 0) allora PC ← PC + k + 1 Nessuno 1/2
BRLT k Ramo se inferiore a zero, firmato se (N ⊕ V= 1) allora PC ← PC + k + 1 Nessuno 1/2
BRHS k Ramo se è impostata la bandierina per metà trasporto se (H = 1) allora PC ← PC + k + 1 Nessuno 1/2
BRHC k Ramo se la bandiera Half Carry è stata deselezionata se (H = 0) allora PC ← PC + k + 1 Nessuno 1/2
BRTS k Ramo se flag T impostato se (T = 1) allora PC ← PC + k + 1 Nessuno 1/2
BRTC k Ramo se flag T deselezionato se (T = 0) allora PC ← PC + k + 1 Nessuno 1/2
BRVS k Ramo se il flag di overflow è impostato se (V = 1) allora PC ← PC + k + 1 Nessuno 1/2
BRVC k Ramo se il flag di overflow è cancellato se (V = 0) allora PC ← PC + k + 1 Nessuno 1/2
BRIE k Ramo se interrupt abilitato se ( I = 1) allora PC ← PC + k + 1 Nessuno 1/2
SPOSA k Ramo se interruzione disabilitata se ( I = 0) allora PC ← PC + k + 1 Nessuno 1/2
ISTRUZIONI PER BIT E BIT-TEST
SBI P, b Imposta bit nel registro I / O I/O(P,b) ← 1 Nessuno 2
CBI P, b Cancella bit nel registro I / O I/O(P,b) ← 0 Nessuno 2
LSL Rd Spostamento logico a sinistra Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd Spostamento logico a destra Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
ROL Rd Ruota a sinistra attraverso il trasporto Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd Ruota a destra attraverso il trasporto Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd Spostamento aritmetico a destra Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Mnemonici Operandi Descrizione Operazione Bandiere #Orologi
SCAMBIO Rd Scambia stuzzichini Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Nessuno 1
BSET s Flag impostato SREG(i) ← 1 SREG 1
BCR (Breve Rinascita) s Cancella bandiera SREG(i) ← 0 SREG 1
Ora legale Rrr, b Memorizza bit da Register a T T ← Rr(b) T 1
BLD Rd, b Caricamento bit da T a registro Rd(b) ← T Nessuno 1
SEC Imposta il trasporto DO ← 1 C 1
CLC Cancella Carry DO ← 0 C 1
SEN Imposta flag negativo N ← 1 N 1
CLN Cancella flag negativo N ← 0 N 1
Zona Economica Speciale Imposta Zero Flag Z ← 1 Z 1
CLZ Cancella flag zero Z ← 0 Z 1
Sei tu Abilitazione interruzione globale Io ← 1 I 1
Interfaccia a riga di comando Disabilita interrupt globale Io ← 0 I 1
SES Imposta flag di prova firmato S ← 1 S 1
CLS Flag di prova firmato chiaro S ← 0 S 1
SEV Imposta l'overflow del complemento a due. V ← 1 V 1
CLV Clear Twos Complemento Overflow V ← 0 V 1
IMPOSTATO Imposta T in SREG T ← 1 T 1
CLT Cancella T in SREG T ← 0 T 1
SEH Impostare Half Carry Flag in SREG H ← 1 H 1
CLH Cancella Half Carry Flag in SREG H ← 0 H 1
ISTRUZIONI PER IL TRASFERIMENTO DEI DATI
Movimento Rd, Rr Spostarsi tra i registri Rd ← Rr Nessuno 1
MOV Rd, Rr Copia registro parola Rd+1:Rd ← Rr+1:Rr Nessuno 1
LDI Rd, K Carica immediata Rd ← K Nessuno 1
LD Rd, X Carica indiretta Rd ← (X) Nessuno 2
LD Rd, X + Carica indiretta e post-inc. Rd ← (X), X ← X + 1 Nessuno 2
LD Rd, - X Carica indiretta e pre-dec. X ← X – 1, Rd ← (X) Nessuno 2
LD Rd, Sì Carica indiretta Rd ← (Y) Nessuno 2
LD Rd, Y + Carica indiretta e post-inc. Rd ← (Y), Y ← Y + 1 Nessuno 2
LD Rd, - Y Carica indiretta e pre-dec. Y ← Y – 1, Rd ← (Y) Nessuno 2
LDD Rd, Y + q Carico indiretto con spostamento Rd ← (Y + q) Nessuno 2
LD Rd, Z Carica indiretta Rd ← (Z) Nessuno 2
LD Rd, Z + Carica indiretta e post-inc. Rd ← (Z), Z ← Z+1 Nessuno 2
LD Rd, -Z Carica indiretta e pre-dec. Z ← Z – 1, Rd ← (Z) Nessuno 2
LDD Rd, Z + q Carico indiretto con spostamento Rd ← (Z + q) Nessuno 2
LDS Rd, k Carica direttamente da SRAM Rd ← (k) Nessuno 2
ST X, R Store indiretto (X) ← Rr Nessuno 2
ST X +, Rr Store Indirect e Post-Inc. (X) ← Rr, X ← X + 1 Nessuno 2
ST - X, Rr Store indiretto e pre-dic. X ← X – 1, (X) ← Rr Nessuno 2
ST Sì, Rr Store indiretto (Y) ← Rr Nessuno 2
ST Y +, Rr Store Indirect e Post-Inc. (Y) ← Rr, Y ← Y + 1 Nessuno 2
ST - Y, Rr Store indiretto e pre-dic. Y ← Y – 1, (Y) ← Rr Nessuno 2
Malattia sessualmente trasmissibile Y + q, Rr Immagazzinamento indiretto con spostamento (Y + q) ← Rr Nessuno 2
ST Z, Rr Store indiretto (Z) ← Rr Nessuno 2
ST Z +, Rr Store Indirect e Post-Inc. (Z) ← Rr, Z ← Z + 1 Nessuno 2
ST -Z, Rr Store indiretto e pre-dic. Z ← Z – 1, (Z) ← Rr Nessuno 2
Malattia sessualmente trasmissibile Z + q, Rr Immagazzinamento indiretto con spostamento (Z + q) ← Rr Nessuno 2
Servizio Clienti k, rr Memorizza direttamente su SRAM (k) ← Rr Nessuno 2
LPM Carica la memoria del programma R0 ← (Z) Nessuno 3
LPM Rd, Z Carica la memoria del programma Rd ← (Z) Nessuno 3
LPM Rd, Z + Carica la memoria del programma e Post-Inc Rd ← (Z), Z ← Z+1 Nessuno 3
SPM Memorizza la memoria del programma (z) ← R1:R0 Nessuno
IN Rd, p In porto Rd ← P Nessuno 1
FUORI P, Rr Fuori porto P ← Rr Nessuno 1
SPINGERE Rr Spingere il registro sullo stack PILE ← Rr Nessuno 2
POP Rd Registro pop dallo stack Rd ← PILE Nessuno 2
ISTRUZIONI DI CONTROLLO MCU
NOP Nessuna operazione Nessuno 1
SONNO Sonno (vedi descrizione specifica per la funzione Sleep) Nessuno 1
WDR Ripristino watchdog (vedi descrizione specifica per WDR / Timer) Nessuno 1
ROTTURA Rottura
Velocità (MHz) (1) Volume di fornituratage(V) Intervallo di temperatura Pacchetto (2) Codice di ordinazione (3)
10 1.8 – 5.5 Industriale

(Da -40 ° C a + 85 ° C) (4)

8P3 A Tiny45V-10PU
8S2 ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR
8X ATtiny45V-10XU ATtiny45V-10XUR
20M1 ATtiny45V-10MU ATtiny45V-10MUR
20 2.7 – 5.5 Industriale

(Da -40 ° C a + 85 ° C) (4)

8P3 ATtiny45-20PU
8S2 ATtiny45-20SU ATtiny45-20SUR

ATtiny45-20SH ATtiny45-20SHR

8X ATtiny45-20XU ATtiny45-20XUR
20M1 ATtiny45-20MU ATtiny45-20MUR

Note: 1. Per velocità rispetto al volume di alimentazionetage, vedere la sezione 21.3 "Velocità" a pagina 163.

Tutti gli imballaggi sono privi di Pb, alogenuri e completamente ecologici e sono conformi alla direttiva europea per la restrizione delle sostanze pericolose (RoHS).

Indicatori di codice

H: finitura piombo NiPdAu

U: latta opaca

R: nastro e bobina

Questi dispositivi possono essere forniti anche sotto forma di wafer. Contattare l'ufficio vendite Atmel locale per informazioni dettagliate sugli ordini e quantità minime.

errore di stampa

Errata ATtiny25

La lettera di revisione in questa sezione si riferisce alla revisione del dispositivo ATtiny25.

Rev D - F

Nessun errata noto.

Rev B - C

La lettura della EEPROM potrebbe non riuscire a basso volume di alimentazionetage / frequenza di clock bassa

La lettura della EEPROM potrebbe non riuscire a basso volume di alimentazionetage / frequenza di clock bassa

Tentativo di leggere EEPROM a basse frequenze di clock e/o basso volume di alimentazionetage può causare dati non validi.

Risoluzione dei problemi / soluzione alternativa

Non utilizzare la EEPROM quando la frequenza di clock è inferiore a 1 MHz e fornire voltage è inferiore a 2V. Se la frequenza operativa non può essere aumentata oltre 1 MHz, fornire voltage dovrebbe essere superiore a 2V. Allo stesso modo, se l'offerta voltage non può essere aumentato oltre 2 V, quindi la frequenza operativa deve essere superiore a 1 MHz.

Questa caratteristica è nota per essere dipendente dalla temperatura ma non è stata caratterizzata. Le linee guida sono fornite solo per la temperatura ambiente.

Reverendo A

Non sampguidato.

Errata ATtiny45

La lettera di revisione in questa sezione si riferisce alla revisione del dispositivo ATtiny45.

Rev F - G

Nessun errata noto

Rev D - E

La lettura della EEPROM potrebbe non riuscire a basso volume di alimentazionetage / frequenza di clock bassa

La lettura della EEPROM potrebbe non riuscire a basso volume di alimentazionetage / frequenza di clock bassa

Tentativo di leggere EEPROM a basse frequenze di clock e/o basso volume di alimentazionetage può causare dati non validi.

Risoluzione dei problemi / soluzione alternativa

Non utilizzare la EEPROM quando la frequenza di clock è inferiore a 1 MHz e fornire voltage è inferiore a 2V. Se la frequenza operativa non può essere aumentata oltre 1 MHz, fornire voltage dovrebbe essere superiore a 2V. Allo stesso modo, se l'offerta voltage non può essere aumentato oltre 2 V, quindi la frequenza operativa deve essere superiore a 1 MHz.

Questa caratteristica è nota per essere dipendente dalla temperatura ma non è stata caratterizzata. Le linee guida sono fornite solo per la temperatura ambiente.

Rev B - C

PLL non si blocca

La EEPROM letta dal codice dell'applicazione non funziona in Lock Bit Mode 3

La lettura della EEPROM potrebbe non riuscire a basso volume di alimentazionetage / frequenza di clock bassa

La generazione dell'uscita PWM del contatore del timer 1 su OC1B-XOC1B non funziona correttamente

PLL non si blocca

Quando a frequenze inferiori a 6.0 MHz, il PLL non si bloccherà

Risoluzione dei problemi / soluzione alternativa

Quando si utilizza il PLL, eseguire a 6.0 MHz o superiore.

La EEPROM letta dal codice dell'applicazione non funziona in Lock Bit Mode 3

Quando i bit di blocco memoria LB2 e LB1 sono programmati in modalità 3, la lettura della EEPROM non funziona dal codice dell'applicazione.

Risoluzione dei problemi / aggirare

Non impostare Lock Bit Protection Mode 3 quando il codice dell'applicazione deve essere letto dalla EEPROM.

La lettura della EEPROM potrebbe non riuscire a basso volume di alimentazionetage / frequenza di clock bassa

Tentativo di leggere EEPROM a basse frequenze di clock e/o basso volume di alimentazionetage può causare dati non validi.

Risoluzione dei problemi / soluzione alternativa

Non utilizzare la EEPROM quando la frequenza di clock è inferiore a 1 MHz e fornire voltage è inferiore a 2V. Se la frequenza operativa non può essere aumentata oltre 1 MHz, fornire voltage dovrebbe essere superiore a 2V. Allo stesso modo, se l'offerta voltage non può essere aumentato oltre 2 V, quindi la frequenza operativa deve essere superiore a 1 MHz.

Questa caratteristica è nota per essere dipendente dalla temperatura ma non è stata caratterizzata. Le linee guida sono fornite solo per la temperatura ambiente.

La generazione dell'uscita PWM del contatore del timer 1 su OC1B - XOC1B non funziona correttamente

L'uscita PWM del contatore del timer1 OC1B-XOC1B non funziona correttamente. Solo nel caso in cui i bit di controllo, COM1B1 e COM1B0 siano nella stessa modalità rispettivamente di COM1A1 e COM1A0, l'uscita OC1B-XOC1B funziona correttamente.

Risoluzione dei problemi / aggirare

L'unica soluzione è utilizzare la stessa impostazione di controllo sui bit di controllo COM1A [1: 0] e COM1B [1: 0], vedere la tabella 14-4 nella scheda tecnica. Il problema è stato risolto per Tiny45 rev D.

Reverendo A

Consumo energetico troppo elevato

DebugWIRE perde la comunicazione quando si accede a interrupt

PLL non si blocca

La EEPROM letta dal codice dell'applicazione non funziona in Lock Bit Mode 3

La lettura della EEPROM potrebbe non riuscire a basso volume di alimentazionetage / frequenza di clock bassa

Consumo energetico troppo elevato

Tre situazioni porteranno a un consumo energetico troppo elevato. Questi sono:

Un clock esterno viene selezionato dai fusibili, ma la PORTA I / O è ancora abilitata come uscita.

La EEPROM viene letta prima di passare allo spegnimento.

VCC è di 4.5 volt o superiore.

Dichiarazione di non responsabilità: le informazioni contenute in questo documento sono fornite in relazione ai prodotti Atmel. Nessuna licenza, esplicita o implicita, per preclusione o altro, a qualsiasi diritto di proprietà intellettuale è concessa dal presente documento o in relazione alla vendita di prodotti Atmel. AD ECCEZIONE DI QUANTO STABILITO NEI TERMINI E CONDIZIONI DI VENDITA ATMEL SITUATI SU ATMEL WEBSITE, ATMEL NON SI ASSUME ALCUNA RESPONSABILITÀ E NEGA QUALSIASI GARANZIA ESPLICITA, IMPLICITA O LEGALE RELATIVA AI SUOI ​​PRODOTTI INCLUSE, MA NON LIMITATE A, GARANZIE IMPLICITE DI COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE O NON VIOLAZIONE. IN NESSUN CASO ATMEL SARÀ RESPONSABILE PER QUALSIASI DANNO DIRETTO, INDIRETTO, CONSEQUENZIALE, PUNITIVO, SPECIALE O ACCIDENTALE (INCLUSI, SENZA LIMITAZIONI, DANNI PER PERDITE E PROFITTI, INTERRUZIONE DI ATTIVITÀ O PERDITA DI INFORMAZIONI) DERIVANTI DALL'UTILIZZO O DALL'INCAPACITÀ D'USO QUESTO DOCUMENTO, ANCHE QUALORA ATMEL SIA STATA INFORMATA DELLA POSSIBILITÀ DI TALI DANNI.

Atmel non rilascia alcuna dichiarazione o garanzia in merito all'accuratezza o alla completezza dei contenuti di questo documento e si riserva il diritto di apportare modifiche alle specifiche e alle descrizioni dei prodotti in qualsiasi momento senza preavviso. Atmel non si impegna ad aggiornare le informazioni qui contenute. Se non diversamente specificato, i prodotti Atmel non sono adatti e non devono essere utilizzati in applicazioni automobilistiche. I prodotti Atmel non sono destinati, autorizzati o garantiti per l'uso come componenti in applicazioni destinate a supportare o sostenere la vita.

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *