Atmel

Microcontrôleur Atmel AVR 8 bits avec flash programmable intégré au système 2/4/8K octetsébrécher

 

Caractéristiques

  • Microcontrôleur AVR® 8 bits hautes performances et basse consommation
  • Architecture RISC avancée
  • 120 instructions puissantes - La plupart des exécutions de cycle d'horloge unique
  • 32 x 8 registres de travail à usage général
  • Fonctionnement entièrement statique
  • Programmes non volatils et mémoires de données
  • 2/4 / 8K octets de mémoire flash de programme programmable dans le système
  • Endurance: 10,000 XNUMX cycles d'écriture/effacement
  • 128/256/512 octets EEPROM programmable dans le système
  • Endurance: 100,000 XNUMX cycles d'écriture/effacement
  • 128/256/512 octets SRAM interne
  • Verrou de programmation pour le programme flash auto-programmé et la sécurité des données EEPROM

Caractéristiques périphériques

  • Minuterie / compteur 8 bits avec Prescaler et deux canaux PWM
  • Minuterie / compteur haute vitesse 8 bits avec prédaleur séparé
  • 2 sorties PWM haute fréquence avec registres de comparaison de sortie séparés
  • Générateur de temps mort programmable
  • USI - Interface série universelle avec détecteur de condition de démarrage
  • Convertisseur analogique-numérique 10 bits

4 canaux à extrémité unique

2 paires de canaux ADC différentiels avec gain programmable (1x, 20x)

Mesure de la température

Minuterie de surveillance programmable avec oscillateur sur puce séparé

Comparateur analogique sur puce

Caractéristiques spéciales du microcontrôleur

Système de débogage sur puce debugWIRE

Programmable dans le système via le port SPI

Sources d'interruption externes et internes

Mode veille à faible consommation, réduction du bruit ADC et modes de mise hors tension

Circuit de réinitialisation à la mise sous tension amélioré

Circuit de détection de baisse de tension programmable

Oscillateur calibré interne

E / S et packages

Six lignes d'E / S programmables

PDIP 8 broches, SOIC 8 broches, QFN / MLF 20 broches et TSSOP 8 broches (uniquement ATtiny45 / V)

Vol d'exploitationtage
- 1.8 - 5.5V pour ATtiny25V / 45V / 85V
- 2.7 - 5.5V pour ATtiny25 / 45/85

Grade de vitesse
- ATtiny25V / 45V / 85V: 0 à 4 MHz à 1.8 à 5.5 V, 0 à 10 MHz à 2.7 à 5.5 V
- ATtiny25 / 45/85: 0 à 10 MHz à 2.7 à 5.5 V, 0 à 20 MHz à 4.5 à 5.5 V

Gamme de température industrielle

Faible consommation d'énergie

Mode actif:

1 MHz, 1.8 V: 300 µA

Mode de mise hors tension:

Configurations des broches

Brochage ATtiny25 / 45/85 Configuration

Description des broches

VCC : volume d'alimentationtage.
GND : Terre.
Port B (PB5:PB0) : Le port B est un port d'E/S bidirectionnel 6 bits avec des résistances pull-up internes (sélectionnées pour chaque bit). Les tampons de sortie du port B ont des caractéristiques d'entraînement symétriques avec une capacité élevée de puits et de source. En tant qu'entrées, les broches du port B qui sont tirées vers le bas de l'extérieur fourniront du courant si les résistances de rappel sont activées. Les broches du port B sont à trois états lorsqu'une condition de réinitialisation devient active, même si l'horloge ne fonctionne pas.

Le port B sert également les fonctions de diverses caractéristiques spéciales de l'ATtiny25 / 45/85 comme indiqué
Sur ATtiny25, les ports d'E / S programmables PB3 et PB4 (broches 2 et 3) sont échangés en mode de compatibilité ATtiny15 pour prendre en charge la rétrocompatibilité avec ATtiny15.

RÉINITIALISER : Réinitialiser l'entrée. Un niveau bas sur cette broche pendant plus longtemps que la longueur d'impulsion minimale générera une réinitialisation, même si l'horloge ne fonctionne pas et à condition que la broche de réinitialisation n'ait pas été désactivée. La longueur d'impulsion minimale est donnée en Tableau 21-4 à la page 165. Des impulsions plus courtes ne sont pas garanties pour générer une réinitialisation.

La broche de réinitialisation peut également être utilisée comme broche d'E / S (faible).

Surview

L'ATtiny25 / 45/85 est un microcontrôleur CMOS 8 bits basse consommation basé sur l'architecture RISC améliorée AVR. En exécutant des instructions puissantes en un seul cycle d'horloge, l'ATtiny25 / 45/85 atteint des débits approchant 1 MIPS par MHz, permettant au concepteur du système d'optimiser la consommation d'énergie par rapport à la vitesse de traitement.

Diagramme Diagramme en blocs

Le cœur de l'AVR combine un riche jeu d'instructions avec 32 registres de travail à usage général. Les 32 registres sont directement connectés à l'unité logique arithmétique (ALU), ce qui permet d'accéder à deux registres indépendants en une seule instruction exécutée en un cycle d'horloge. L'architecture résultante est plus efficace pour le code tout en atteignant des débits jusqu'à dix fois plus rapides que les microcontrôleurs CISC conventionnels.

L'ATtiny25 / 45/85 offre les fonctionnalités suivantes: 2/4 / 8K octets de mémoire flash programmable dans le système, 128/256/512 octets EEPROM, 128/256/256 octets SRAM, 6 lignes d'E / S à usage général, 32 registres de travail, une minuterie / compteur 8 bits avec modes de comparaison, une minuterie / compteur haute vitesse 8 bits, une interface série universelle, des interruptions internes et externes, un ADC à 4 canaux, 10 bits, une minuterie de surveillance programmable avec Oscillateur et trois modes d'économie d'énergie sélectionnables par logiciel. Le mode veille arrête le CPU tout en permettant à la SRAM, à la minuterie / au compteur, à l'ADC, au comparateur analogique et au système d'interruption de continuer à fonctionner. Le mode de mise hors tension enregistre le contenu du registre, désactivant toutes les fonctions de la puce jusqu'à la prochaine interruption ou réinitialisation matérielle. Le mode de réduction du bruit ADC arrête le CPU et tous les modules d'E / S sauf ADC, pour minimiser le bruit de commutation pendant les conversions ADC.

L'appareil est fabriqué à l'aide de la technologie de mémoire non volatile haute densité d'Atmel. Le flash ISP sur puce permet à la mémoire du programme d'être reprogrammée dans le système via une interface série SPI, par un programmeur de mémoire non volatile conventionnel ou par un code de démarrage sur puce fonctionnant sur le cœur de l'AVR.

L'AVR ATtiny25 / 45/85 est pris en charge par une suite complète d'outils de développement de programmes et de systèmes comprenant: des compilateurs C, des assembleurs de macros, des débogueurs / simulateurs de programmes et des kits d'évaluation.

À propos des ressources

Un ensemble complet d'outils de développement, de notes d'application et de fiches techniques est disponible en téléchargement sur http://www.atmel.com/avr.

CodeExamples

Cette documentation contient du code simple exampchiers qui montrent brièvement comment utiliser diverses parties de l'appareil. Ces codes examples supposent que l'en-tête spécifique à la partie file est inclus avant la compilation. Sachez que tous les fournisseurs de compilateurs C n'incluent pas de définitions de bits dans l'en-tête files et la gestion des interruptions en C dépend du compilateur. Veuillez confirmer avec la documentation du compilateur C pour plus de détails.

Pour les registres d'E / S situés dans le mappage d'E / S étendu, les instructions «IN», «OUT», «SBIS», «SBIC», «CBI» et «SBI» doivent être remplacées par des instructions qui permettent d'accéder à l'extension I / O. En général, cela signifie «LDS» et «STS» combiné avec «SBRS», «SBRC», «SBR» et «CBR». Notez que tous les appareils AVR n'incluent pas une carte d'E / S étendue.

Détection tactile capacitive

La bibliothèque Atmel QTouch fournit une solution simple à utiliser pour les interfaces tactiles sur les microcontrôleurs Atmel AVR. La bibliothèque QTouch inclut la prise en charge des méthodes d'acquisition QTouch® et QMatrix®.

La détection tactile est facilement ajoutée à n'importe quelle application en reliant la bibliothèque QTouch et en utilisant l'interface de programmation d'application (API) de la bibliothèque pour définir les canaux tactiles et les capteurs. L'application appelle ensuite l'API pour récupérer les informations de canal et déterminer l'état du capteur tactile.

La bibliothèque QTouch est gratuite et peut être téléchargée sur le site Atmel webplacer. Pour plus d'informations et de détails sur la mise en œuvre, reportez-vous au Guide de l'utilisateur de la bibliothèque QTouch - également disponible auprès d'Atmel website.

Conservation des données

Les résultats de la qualification de fiabilité montrent que le taux d'échec de rétention des données projeté est bien inférieur à 1 PPM sur 20 ans à 85 ° C ou 100 ans à 25 ° C.

Noyau du processeur AVR

Introduction

Cette section traite de l'architecture principale de l'AVR en général. La fonction principale du cœur de la CPU est d'assurer une exécution correcte du programme. Le CPU doit donc pouvoir accéder aux mémoires, effectuer des calculs, contrôler les périphériques et gérer les interruptions.

Plus d'architectureview Architecture

Afin de maximiser les performances et le parallélisme, l'AVR utilise une architecture Harvard - avec des mémoires et des bus séparés pour le programme et les données. Les instructions de la mémoire programme sont exécutées avec un pipelining à un seul niveau. Pendant qu'une instruction est en cours d'exécution, l'instruction suivante est pré-extraite de la mémoire programme. Ce concept permet d'exécuter des instructions à chaque cycle d'horloge. La mémoire programme est une mémoire flash reprogrammable dans le système.

Le Registre à accès rapide File contient 32 registres de travail à usage général de 8 bits avec un seul temps d'accès au cycle d'horloge. Cela permet un fonctionnement de l'unité arithmétique et logique (ALU) à cycle unique. Dans une opération ALU typique, deux opérandes sont sortis du registre File, l'opération est exécutée et le résultat est stocké dans le registre File- en un cycle d'horloge.

Six des 32 registres peuvent être utilisés comme trois pointeurs de registre d'adresse indirecte de 16 bits pour l'adressage de l'espace de données, ce qui permet des calculs d'adresse efficaces. L'un de ces pointeurs d'adresse peut également être utilisé comme pointeur d'adresse pour rechercher des tables dans la mémoire du programme Flash. Ces registres de fonctions ajoutés sont les registres X, Y et Z de 16 bits, décrits plus loin dans cette section.

L'ALU prend en charge les opérations arithmétiques et logiques entre les registres ou entre une constante et un registre. Les opérations de registre unique peuvent également être exécutées dans l'ALU. Après une opération arithmétique, le registre d'état est mis à jour pour refléter les informations sur le résultat de l'opération.

Le flux de programme est fourni par des instructions de saut et d'appel conditionnelles et inconditionnelles, capables d'adresser directement tout l'espace d'adressage. La plupart des instructions AVR ont un format de mot unique de 16 bits, mais il existe également des instructions de 32 bits.

Pendant les interruptions et les appels de sous-programmes, l'adresse de retour du compteur de programme (PC) est stockée sur la pile. La pile est effectivement allouée dans la SRAM de données générales et, par conséquent, la taille de la pile n'est limitée que par la taille totale de la SRAM et l'utilisation de la SRAM. Tous les programmes utilisateur doivent initialiser le SP dans la routine de réinitialisation (avant que les sous-programmes ou les interruptions ne soient exécutés). Le pointeur de pile (SP) est accessible en lecture / écriture dans l'espace d'E / S. Les données SRAM sont facilement accessibles via les cinq modes d'adressage différents pris en charge dans l'architecture AVR.

Les espaces mémoire dans l'architecture AVR sont tous des cartes mémoire linéaires et régulières.

Un module d'interruption flexible a ses registres de contrôle dans l'espace d'E / S avec un bit d'activation d'interruption globale supplémentaire dans le registre d'état. Toutes les interruptions ont un vecteur d'interruption distinct dans le tableau des vecteurs d'interruption. Les interruptions ont la priorité en fonction de leur position de vecteur d'interruption. Plus l'adresse du vecteur d'interruption est basse, plus la priorité est élevée.

L'espace mémoire d'E/S contient 64 adresses pour les fonctions périphériques de l'UC telles que les registres de contrôle, SPI et autres fonctions d'E/S. La mémoire d'E/S est accessible directement ou en tant qu'emplacements de l'espace de données suivant ceux du registre. File, 0x20 – 0x5F.

ALU - Unité logique arithmétique

L'AVR ALU haute performance fonctionne en connexion directe avec les 32 registres de travail à usage général. Dans un cycle d'horloge unique, des opérations arithmétiques entre des registres à usage général ou entre un registre et un immédiat sont exécutées. Les opérations ALU sont divisées en trois catégories principales - fonctions arithmétiques, logiques et binaires. Certaines implémentations de l'architecture fournissent également un multiplicateur puissant prenant en charge à la fois la multiplication signée / non signée et le format fractionnaire. Voir la section «Jeu ​​d'instructions» pour une description détaillée.

Registre d'état

Le registre d'état contient des informations sur le résultat de la dernière instruction arithmétique exécutée. Ces informations peuvent être utilisées pour modifier le déroulement du programme afin d'effectuer des opérations conditionnelles. Notez que le registre d'état est mis à jour après toutes les opérations ALU, comme spécifié dans la référence du jeu d'instructions. Dans de nombreux cas, cela supprimera le besoin d'utiliser les instructions de comparaison dédiées, ce qui se traduira par un code plus rapide et plus compact.

Le registre d'état n'est pas automatiquement stocké lors de l'entrée dans une routine d'interruption et restauré lors du retour d'une interruption. Cela doit être géré par un logiciel.

SREG - Registre d'état de l'AVR

Le registre d'état de l'AVR - SREG - est défini comme suit:

Peu 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
Lecture/écriture R/W R/W R/W R/W R/W R/W R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

Bit 7 - I: Activation d'interruption globale

Le bit Global Interrupt Enable doit être défini pour que les interruptions soient activées. La commande d'activation d'interruption individuelle est ensuite effectuée dans des registres de commande séparés. Si le registre d'activation d'interruption globale est effacé, aucune des interruptions n'est activée indépendamment des paramètres d'activation d'interruption individuels. Le bit I est effacé par le matériel après qu'une interruption s'est produite et est défini par l'instruction RETI pour activer les interruptions suivantes. Le bit I peut également être défini et effacé par l'application avec les instructions SEI et CLI, comme décrit dans la référence du jeu d'instructions.

Bit 6 - T: Stockage de copie de bits

Les instructions Bit Copy BLD (Bit LoaD) et BST (Bit STore) utilisent le bit T comme source ou destination du bit exploité. Un peu d'un registre dans le Registre File peut être copié dans T par l'instruction BST, et un bit de T peut être copié dans un bit d'un registre du registre File par l'instruction BLD.

Bit 5 - H: drapeau de demi-portage

Le drapeau Half Carry H indique un Half Carry dans certaines opérations arithmétiques. Half Carry est utile en arithmétique BCD. Voir la «Description du jeu d'instructions» pour des informations détaillées.

Bit 4 – S : Bit de signe, S = N ⊕ V

Le bit S est toujours une exclusivité ou entre le drapeau négatif N et le drapeau de débordement du complément à deux V. Voir la «Description du jeu d'instructions» pour des informations détaillées.

Bit 3 - V: indicateur de débordement du complément à deux

L'indicateur de débordement du complément à deux V prend en charge l'arithmétique du complément à deux. Voir la «Description du jeu d'instructions» pour des informations détaillées.

Bit 2 - N: drapeau négatif

L'indicateur négatif N indique un résultat négatif dans une opération arithmétique ou logique. Voir la «Description du jeu d'instructions» pour des informations détaillées.

Bit 1 - Z: drapeau zéro

L'indicateur Zéro Z indique un résultat nul dans une opération arithmétique ou logique. Voir la «Description du jeu d'instructions» pour des informations détaillées.

Bit 0 - C: drapeau de transport

L'indicateur Carry C indique une retenue dans une opération arithmétique ou logique. Voir la «Description du jeu d'instructions» pour des informations détaillées.

Registre à usage général File

Le registre File est optimisé pour le jeu d'instructions AVR Enhanced RISC. Afin d'obtenir les performances et la flexibilité requises, les schémas d'entrée/sortie suivants sont pris en charge par le registre File:

Un opérande de sortie 8 bits et une entrée résultat 8 bits

Deux opérandes de sortie 8 bits et une entrée résultat 8 bits

Deux opérandes de sortie 8 bits et une entrée résultat 16 bits

Un opérande de sortie 16 bits et une entrée résultat 16 bits

Figure 4-2 montre la structure des 32 registres de travail à usage général dans la CPU. Usage général

Comme indiqué dans Figure 4-2, chaque registre se voit également attribuer une adresse de mémoire de données, les mappant directement dans les 32 premiers emplacements de l'espace de données utilisateur. Bien qu'elle ne soit pas physiquement implémentée en tant qu'emplacements SRAM, cette organisation de la mémoire offre une grande flexibilité d'accès aux registres, car les registres des pointeurs X, Y et Z peuvent être configurés pour indexer n'importe quel registre dans le file.La plupart des instructions opérant sur le registre File ont un accès direct à tous les registres, et la plupart d'entre eux sont des instructions à cycle unique.

Le registre X, le registre Y et le registre Z

Les registres R26..R31 ont des fonctions supplémentaires à leur usage général. Ces registres sont des pointeurs d'adresse 16 bits pour l'adressage indirect de l'espace de données. Les trois registres d'adresses indirects X, Y et Z sont définis comme décrit dans Figure 4-3.

Registre

Dans les différents modes d'adressage, ces registres d'adresses ont des fonctions de déplacement fixe, d'incrémentation automatique et de décrémentation automatique (voir la référence du jeu d'instructions pour plus de détails).

Pointeur de pile

La pile est principalement utilisée pour stocker des données temporaires, pour stocker des variables locales et pour stocker des adresses de retour après des interruptions et des appels de sous-programmes. Le registre du pointeur de pile pointe toujours vers le haut de la pile. Notez que la pile est implémentée en passant d'emplacements de mémoire plus élevés vers des emplacements de mémoire inférieurs. Cela implique qu'une commande Stack PUSH diminue le pointeur de pile.

Le pointeur de pile pointe vers la zone de pile SRAM de données où se trouvent le sous-programme et les piles d'interruption. Cet espace de pile dans la SRAM de données doit être défini par le programme avant que tout appel de sous-programme ne soit exécuté ou que les interruptions ne soient activées. Le pointeur de pile doit être défini pour pointer au-dessus de 0x60. Le pointeur de pile est décrémenté de un lorsque les données sont poussées dans la pile avec l'instruction PUSH, et il est décrémenté de deux lorsque l'adresse de retour est poussée sur la pile avec un appel ou une interruption de sous-programme. Le pointeur de pile est incrémenté de un lorsque les données sont extraites de la pile avec l'instruction POP, et il est incrémenté de deux lorsque les données sont extraites de la pile avec retour du sous-programme RET ou retour de l'interruption RETI.

Le pointeur de pile AVR est implémenté sous la forme de deux registres 8 bits dans l'espace d'E / S. Le nombre de bits réellement utilisés dépend de l'implémentation. Notez que l'espace de données dans certaines implémentations de l'architecture AVR est si petit que seul SPL est nécessaire. Dans ce cas, le registre SPH ne sera pas présent.

SPH et SPL - Registre du pointeur de pile

Peu 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
Lecture/écriture R/W R/W R/W R/W R/W R/W R/W R/W
Lecture/écriture R/W R/W R/W R/W R/W R/W R/W R/W
Valeur initiale RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER
Valeur initiale RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER RAMENDER

Moment d'exécution des instructions

Cette section décrit les concepts généraux de temporisation d'accès pour l'exécution des instructions. Le processeur AVR est piloté par l'horloge du processeur clkCPU, directement générée à partir de la source d'horloge sélectionnée pour la puce. Aucune division d'horloge interne n'est utilisée.

Fig4.4

Figure 4-4 montre les extractions d'instructions parallèles et les exécutions d'instructions permises par l'architecture Harvard et le registre d'accès rapide File concept. C'est le concept de pipeline de base pour obtenir jusqu'à 1 MIPS par MHz avec les résultats uniques correspondants pour les fonctions par coût, les fonctions par horloges et les fonctions par unité de puissance.

Illustration 4-5. Fonctionnement ALU à cycle unique

Fig4.5

Réinitialisation et gestion des interruptions

L'AVR fournit plusieurs sources d'interruption différentes. Ces interruptions et le vecteur de réinitialisation séparé ont chacun un vecteur de programme distinct dans l'espace mémoire du programme. Toutes les interruptions se voient attribuer des bits d'activation individuels qui doivent être écrits en logique un avec le bit d'activation d'interruption globale dans le registre d'état afin d'activer l'interruption.

Les adresses les plus basses dans l'espace mémoire du programme sont définies par défaut comme les vecteurs de réinitialisation et d'interruption. La liste complète des vecteurs est affichée dans «Interruptions» à la page 48. La liste détermine également les niveaux de priorité des différentes interruptions. Plus l'adresse est basse, plus le niveau de priorité est élevé. RESET a la priorité la plus élevée, et le suivant est INT0 - la demande d'interruption externe 0.

Lorsqu'une interruption se produit, le bit I d'activation d'interruption globale est effacé et toutes les interruptions sont désactivées. Le logiciel utilisateur peut écrire la logique XNUMX sur le bit I pour activer les interruptions imbriquées. Toutes les interruptions activées peuvent alors interrompre la routine d'interruption en cours. Le bit I est automatiquement mis à XNUMX lorsqu'une instruction de retour d'interruption - RETI - est exécutée.

Il existe essentiellement deux types d'interruptions. Le premier type est déclenché par un événement qui définit l'indicateur d'interruption. Pour ces interruptions, le compteur de programme est dirigé vers le vecteur d'interruption réel afin d'exécuter le sous-programme de gestion des interruptions, et le matériel efface le drapeau d'interruption correspondant. Les indicateurs d'interruption peuvent également être effacés en écrivant un un logique sur la ou les positions de bit d'indicateur à effacer. Si une condition d'interruption se produit alors que le bit de validation d'interruption correspondant est effacé, l'indicateur d'interruption sera mis à XNUMX et mémorisé jusqu'à ce que l'interruption soit activée ou que l'indicateur soit effacé par le logiciel. De même, si une ou plusieurs conditions d'interruption se produisent alors que le bit d'activation d'interruption globale est effacé, le (s) drapeau (s) d'interruption correspondant (s) seront positionnés et mémorisés jusqu'à ce que le bit d'activation d'interruption globale soit défini, et seront ensuite exécutés par ordre de priorité.

Le deuxième type d'interruptions se déclenchera tant que la condition d'interruption est présente. Ces interruptions n'ont pas nécessairement de drapeaux d'interruption. Si la condition d'interruption disparaît avant que l'interruption soit activée, l'interruption ne sera pas déclenchée.

Lorsque l'AVR sort d'une interruption, il revient toujours au programme principal et exécute une instruction supplémentaire avant que toute interruption en attente ne soit servie.

Notez que le registre d'état n'est pas automatiquement stocké lors de l'entrée dans une routine d'interruption, ni restauré lors du retour d'une routine d'interruption. Cela doit être géré par un logiciel.

Lorsque vous utilisez l'instruction CLI pour désactiver les interruptions, les interruptions seront immédiatement désactivées. Aucune interruption ne sera exécutée après l'instruction CLI, même si elle se produit simultanément avec l'instruction CLI. L'ex suivantampLe chier montre comment cela peut être utilisé pour éviter les interruptions pendant la séquence d'écriture EEPROM temporisée.

Code d'assemblage Example
en r16, SREG ; stocker la valeur SREG

cli ; désactiver les interruptions pendant la séquence temporisée

sbi EECR, EEMPE ; démarrer l'écriture EEPROM

sbi EECR, EEPE

sortie SREG, r16 ; restaurer la valeur SREG (I-bit)

Code C Example
caractère cSREG ;

cSREG = SREG ; /* stocker la valeur SREG */

/* désactiver les interruptions pendant la séquence temporisée */

_CLI ();

ECR |= (1<

EECR | = (1 <

SREG = cSREG ; /* restaurer la valeur SREG (I-bit) */

Lors de l'utilisation de l'instruction SEI pour activer les interruptions, l'instruction suivant SEI sera exécutée avant toute interruption en attente, comme indiqué dans cet exemple.ample.

Code d'assemblage Example
sei ; définir l'activation de l'interruption globale

dormir; entrer en sommeil, en attente d'une interruption

; Remarque: entrera en veille avant toute attente

; interruption (s)

Code C Example
_SEI(); /* définit l'activation de l'interruption globale */

_DORMIR(); /* entre en veille, en attente d'interruption */

/ * note: entrera en veille avant toute interruption en attente * /

Temps de réponse d'interruption

La réponse d'exécution d'interruption pour toutes les interruptions AVR activées est de quatre cycles d'horloge minimum. Après quatre cycles d'horloge, l'adresse de vecteur de programme pour le sous-programme de traitement d'interruption réel est exécutée. Pendant cette période de quatre cycles d'horloge, le compteur de programme est poussé sur la pile. Le vecteur est normalement un saut vers la routine d'interruption, et ce saut prend trois cycles d'horloge. Si une interruption se produit pendant l'exécution d'une instruction multi-cycle, cette instruction est terminée avant que l'interruption ne soit servie. Si une interruption se produit lorsque la MCU est en mode veille, le temps de réponse de l'exécution de l'interruption est augmenté de quatre cycles d'horloge. Cette augmentation s'ajoute au temps de démarrage à partir du mode veille sélectionné.

Un retour d'une routine de gestion d'interruption prend quatre cycles d'horloge. Au cours de ces quatre cycles d'horloge, le compteur de programme (deux octets) est renvoyé de la pile, le pointeur de pile est incrémenté de deux et le bit I dans SREG est défini.

Mémoires AVR

Cette section décrit les différentes mémoires de l'ATtiny25 / 45/85. L'architecture AVR a deux espaces mémoire principaux, la mémoire de données et l'espace de mémoire programme. De plus, l'ATtiny25 / 45/85 dispose d'une mémoire EEPROM pour le stockage des données. Les trois espaces mémoire sont linéaires et réguliers.

Mémoire de programme flash reprogrammable intégrée au système

L'ATtiny25 / 45/85 contient une mémoire Flash reprogrammable intégrée au système de 2/4/8 Ko octets pour le stockage des programmes. Étant donné que toutes les instructions AVR ont une largeur de 16 ou 32 bits, le Flash est organisé en 1024/2048/4096 x 16.

La mémoire Flash a une autonomie d'au moins 10,000 25 cycles d'écriture / effacement. Le compteur de programmes (PC) ATtiny45 / 85/10 a une largeur de 11/12/1024 bits, adressant ainsi les emplacements de mémoire de programme 2048/4096/XNUMX. «Programme mémoire- ming »à la page 147 contient une description détaillée du téléchargement série de données Flash à l'aide des broches SPI.

Les tables de constantes peuvent être allouées dans tout l'espace d'adressage de la mémoire du programme (voir la description de l'instruction LPM - Charger la mémoire du programme).

Figure 5-1. Carte de mémoire de programme Carte mémoire

Mémoire de données SRAM

Figure 5-2 montre comment la mémoire SRAM ATtiny25 / 45/85 est organisée.

Les emplacements de mémoire de données inférieurs 224/352/607 adressent à la fois le registre File, la mémoire E/S et la SRAM de données interne. Les 32 premiers emplacements s'adressent au Registre File, les 64 emplacements suivants la mémoire d'E/S standard et les derniers 128/256/512 emplacements adressent la SRAM de données interne.

Les cinq modes d'adressage différents pour la mémoire de données couvrent : Direct, Indirect avec déplacement, Indirect, Indirect avec pré-décrément et Indirect avec post-incrément. Dans le registre File, les registres R26 à R31 comportent les registres pointeurs à adressage indirect.

L'adressage direct atteint tout l'espace de données.

Le mode indirect avec déplacement atteint 63 emplacements d'adresses à partir de l'adresse de base donnée par le registre Y ou Z.

Lors de l'utilisation de modes d'adressage indirect de registre avec pré-décrémentation et post-incrémentation automatiques, les registres d'adresses X, Y et Z sont décrémentés ou incrémentés.

Les 32 registres de travail à usage général, les 64 registres d'E/S et les 128/256/512 octets de SRAM de données internes dans l'ATtiny25/45/85 sont tous accessibles via tous ces modes d'adressage. Le registre File est décrit dans «Gen- Registre des finalités générales File» à la page 10.

Figure 5-2. Carte de mémoire de données Carte mémoire 2

Accès à la mémoire de données Fois

Cette section décrit les concepts généraux de temporisation d'accès pour l'accès à la mémoire interne. L'accès aux données internes SRAM est effectué en deux cycles clkCPU comme décrit dans Figure 5-3.

Figure 5-3. Cycles d'accès aux données SRAM sur puce Sur les données de la puce Mémoire de données EEPROM

L'ATtiny25 / 45/85 contient 128/256/512 octets de mémoire EEPROM de données. Il est organisé comme un espace de données séparé, dans lequel des octets uniques peuvent être lus et écrits. L'EEPROM a une endurance d'au moins 100,000 XNUMX cycles d'écriture / effacement. L'accès entre l'EEPROM et la CPU est décrit ci-après, en spécifiant les registres d'adresses EEPROM, le registre de données EEPROM et le registre de contrôle EEPROM. Pour plus de détails, voir «Téléchargement en série» à la page 151.

Accès en lecture / écriture EEPROM

Les registres d'accès EEPROM sont accessibles dans l'espace d'E / S.

Les temps d'accès en écriture pour l'EEPROM sont indiqués dans Tableau 5-1 à la page 21. Une fonction d'auto-synchronisation, cependant, permet au logiciel utilisateur de détecter quand l'octet suivant peut être écrit. Si le code utilisateur contient des instructions qui écrivent l'EEPROM, certaines précautions doivent être prises. Dans les alimentations fortement filtrées, VCC est susceptible d'augmenter ou de diminuer lentement sur

Mise sous/hors tension. Cela fait fonctionner l'appareil pendant un certain temps à un voltage inférieure à celle spécifiée comme minimum pour la fréquence d'horloge utilisée. Voir «Prévention de la corruption d'EEPROM» à la page 19 pour savoir comment éviter les problèmes dans ces situations.

Afin d'éviter les écritures EEPROM involontaires, une procédure d'écriture spécifique doit être suivie. Faire référence à "Atomique Programmation d'octets »à la page 17 et «Programmation Split Byte» à la page 17 pour plus de détails à ce sujet.

Lorsque l'EEPROM est lue, la CPU est arrêtée pendant quatre cycles d'horloge avant que l'instruction suivante ne soit exécutée. Lorsque l'EEPROM est écrite, la CPU est arrêtée pendant deux cycles d'horloge avant que l'instruction suivante ne soit exécutée.

Programmation d'octets atomiques

L'utilisation de la programmation d'octets atomiques est le mode le plus simple. Lors de l'écriture d'un octet dans l'EEPROM, l'utilisateur doit écrire l'adresse dans le registre EEAR et les données dans le registre EEDR. Si les bits EEPMn sont à zéro, l'écriture d'EEPE (dans les quatre cycles après l'écriture d'EEMPE) déclenchera l'opération d'effacement / d'écriture. Le cycle d'effacement et d'écriture se fait en une seule opération et le temps total de programmation est indiqué en Tableau 5-1 à la page 21. Le bit EEPE reste activé jusqu'à ce que les opérations d'effacement et d'écriture soient terminées. Pendant que l'appareil est occupé à programmer, il n'est pas possible d'effectuer d'autres opérations EEPROM.

Programmation d'octets fractionnés

Il est possible de diviser le cycle d'effacement et d'écriture en deux opérations différentes. Cela peut être utile si le système nécessite un temps d'accès court pendant une période de temps limitée (généralement si l'alimentation vol.tage tombe). Afin de profiter de tage de ce procédé, il est nécessaire que les emplacements à écrire aient été effacés avant l'opération d'écriture. Mais comme les opérations d'effacement et d'écriture sont séparées, il est possible d'effectuer les opérations d'effacement lorsque le système permet d'effectuer des opérations à temps critique (généralement après la mise sous tension).

Effacer

Pour effacer un octet, l'adresse doit être écrite dans EEAR. Si les bits EEPMn sont 0b01, l'écriture de l'EEPE (dans les quatre cycles après l'écriture de EEMPE) déclenchera l'opération d'effacement uniquement (le temps de programmation est Tableau 5-1 sur page 21). Le bit EEPE reste activé jusqu'à la fin de l'opération d'effacement. Pendant que l'appareil est en train de programmer, il n'est pas possible d'effectuer d'autres opérations EEPROM.

Écrire

Pour écrire un emplacement, l'utilisateur doit écrire l'adresse dans EEAR et les données dans EEDR. Si les bits EEPMn sont 0b10, l'écriture de l'EEPE (dans les quatre cycles après l'écriture de EEMPE) déclenchera l'opération d'écriture uniquement (le temps de programmation est indiqué en Tableau 5-1 à la page 21). Le bit EEPE reste activé jusqu'à la fin de l'opération d'écriture. Si l'emplacement à écrire n'a pas été effacé avant l'écriture, les données stockées doivent être considérées comme perdues. Pendant que l'appareil est occupé à programmer, il n'est pas possible d'effectuer d'autres opérations EEPROM.

L'oscillateur calibré est utilisé pour chronométrer les accès EEPROM. Assurez-vous que la fréquence de l'oscillateur est conforme aux exigences décrites dans «OSCCAL - Registre d'étalonnage de l'oscillateur» à la page 31.

Le code suivant exampLes chiers montrent un assembly et une fonction C pour l'effacement, l'écriture ou l'écriture atomique de l'EEPROM. Le EXampLes chiers supposent que les interruptions sont contrôlées (par exemple, en désactivant les interruptions globalement) afin qu'aucune interruption ne se produise pendant l'exécution de ces fonctions.

Code d'assemblage Example
EEPROM_write :

; Attendre la fin de l'écriture précédente

sbic EECR, EEPE

rjmp EEPROM_écriture

; Définir le mode de programmation

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

out ECR, r16

; Configurer l'adresse (r18: r17) dans le registre d'adresses

out EEARH, r18

out EEARL, r17

; Ecrire des données (r19) dans le registre de données

sortie EEDR, r19

; Ecrire un logique dans EEMPE

sbi EECR,EEMPE

; Démarrez eeprom write en définissant EEPE

sbi EECR, EEPE

ret

Code C Example
void EEPROM_write(char non signé ucAddress, char non signé ucData)

{

/* Attend la fin de l'écriture précédente */ while(EECR & (1<

;

/* Définir le mode de programmation */

EECR = (0 <

/ * Configurer les registres d'adresses et de données * / EEAR = ucAddress;

EEDR = ucDonnées ;

/* Ecrire un logique dans EEMPE */

EECR | = (1 <

/ * Démarrez eeprom write en définissant EEPE * /

EECR | = (1 <

}

Le prochain code examples chiers montrent l'assemblage et les fonctions C pour lire l'EEPROM. Le EXampLes chiers supposent que les interruptions sont contrôlées de manière à ce qu'aucune interruption ne se produise pendant l'exécution de ces fonctions.

Code d'assemblage Example
EEPROM_read :

; Attendre la fin de l'écriture précédente

sbic EECR, EEPE

rjmp EEPROM_read

; Configurer l'adresse (r18: r17) dans le registre d'adresses

out EEARH, r18

out EEARL, r17

; Démarrez eeprom read en écrivant EERE

sbi ECR, EERE

; Lire les données du registre de données

en r16,EEDR

ret

Code C Example
caractère non signé EEPROM_read (car non signé ucAddress)

{

/ * Attendre la fin de l'écriture précédente * /

tandis que (EECR & (1 <

;

/ * Configurer le registre d'adresses * / EEAR = ucAddress;

/* Lancer la lecture de l'eeprom en écrivant EERE */

EECR | = (1 <

/ * Renvoie les données du registre de données * /

retourner l'EEDR ;

}

Prévention de la corruption d'EEPROM

Pendant les périodes de faible VCC, les données EEPROM peuvent être corrompues car le vol d'alimentationtage est trop faible pour que le CPU et l'EEPROM fonctionnent correctement. Ces problèmes sont les mêmes que pour les systèmes au niveau de la carte utilisant l'EEPROM, et les mêmes solutions de conception doivent être appliquées.

Une corruption de données EEPROM peut être causée par deux situations lorsque le voltage est trop faible. Tout d'abord, une séquence d'écriture régulière dans l'EEPROM nécessite un volume minimumtage pour fonctionner correctement. Deuxièmement, le processeur lui-même peut exécuter des instructions de manière incorrecte, si le volume d'alimentationtage est trop bas.

La corruption des données EEPROM peut facilement être évitée en suivant cette recommandation de conception:

Maintenez l'AVR RESET actif (bas) pendant les périodes d'alimentation électrique insuffisante.tage. Cela peut être fait en activant le détecteur de baisse de tension (BOD) interne. Si le niveau de détection du DBO interne ne correspond pas au

niveau de détection nécessaire, un circuit externe de protection de réinitialisation à faible VCC peut être utilisé. Si une réinitialisation se produit alors qu'une opération d'écriture est en cours, l'opération d'écriture sera terminée à condition que le vol d'alimentationtage est suffisant.

Mémoire E / S

La définition de l'espace d'E / S de l'ATtiny25 / 45/85 est indiquée dans «Résumé du registre» à la page 200.

Toutes les E / S et périphériques ATtiny25 / 45/85 sont placés dans l'espace d'E / S. Tous les emplacements d'E / S sont accessibles par les instructions LD / LDS / LDD et ST / STS / STD, transférant des données entre les 32 registres de travail à usage général et l'espace d'E / S. Les registres d'E / S dans la plage d'adresses 0x00 - 0x1F sont directement accessibles en bits à l'aide des instructions SBI et CBI. Dans ces registres, la valeur de bits uniques peut être vérifiée en utilisant les instructions SBIS et SBIC. Reportez-vous à la section du jeu d'instructions pour plus de détails. Lors de l'utilisation des commandes spécifiques d'E / S IN et OUT, les adresses d'E / S 0x00 - 0x3F doivent être utilisées. Lors de l'adressage des registres d'E / S en tant qu'espace de données à l'aide d'instructions LD et ST, 0x20 doit être ajouté à ces adresses.

Pour la compatibilité avec les futurs périphériques, les bits réservés doivent être écrits à zéro en cas d'accès. Les adresses mémoire d'E / S réservées ne doivent jamais être écrites.

Certains des indicateurs d'état sont effacés en leur écrivant un indicateur logique. Notez que les instructions CBI et SBI ne fonctionneront que sur le bit spécifié, et peuvent donc être utilisées sur des registres contenant de tels indicateurs d'état. Les instructions CBI et SBI fonctionnent uniquement avec les registres 0x00 à 0x1F.

Les registres de contrôle des E / S et des périphériques sont expliqués dans les sections suivantes.

Description du registre

EEARH - Registre d'adresses EEPROM

Peu 7 6 5 4 3 2 1 0
0x1F ANNÉE8 EARTH
Lecture/écriture R R R R R R R R/W
Valeur initiale 0 0 0 0 0 0 0 X/0

Bits 7: 1 - Res: Bits réservés

Ces bits sont réservés pour une utilisation future et seront toujours lus comme zéro.

Bits 0 - EEAR8: Adresse EEPROM

Il s'agit du bit d'adresse EEPROM le plus significatif d'ATtiny85. Dans les appareils avec moins d'EEPROM, c'est-à-dire ATtiny25 / ATtiny45, ce bit est réservé et lira toujours zéro. La valeur initiale du registre d'adresses EEPROM (EEAR) n'est pas définie et une valeur correcte doit donc être écrite avant d'accéder à l'EEPROM.

EEARL - Registre d'adresses EEPROM

Peu

0x1E ANNÉE7 ANNÉE6 ANNÉE5 ANNÉE4 ANNÉE3 ANNÉE2 ANNÉE1 ANNÉE0 EARL
Arrière / écriture R/W R/W R/W R/W R/W R/W R/W R/W
Valeur initiale X X X X X X X X

Bit 7 - EEAR7: Adresse EEPROM

Il s'agit du bit d'adresse EEPROM le plus significatif d'ATtiny45. Dans les appareils avec moins d'EEPROM, c'est-à-dire ATtiny25, ce bit est réservé et lira toujours zéro. La valeur initiale du registre d'adresses EEPROM (EEAR) n'est pas définie et une valeur correcte doit donc être écrite avant l'accès à l'EEPROM.

Bits 6: 0 - EEAR [6: 0]: Adresse EEPROM

Ce sont les bits (bas) du registre d'adresses EEPROM. Les octets de données EEPROM sont adressés linéairement dans la plage 0… (128/256 / 512-1). La valeur initiale de EEAR n'est pas définie et une valeur correcte doit donc être écrite avant que l'EEPROM ne soit accessible.

EEDR - Registre de données EEPROM

Peu 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
Lecture/écriture R/W R/W R/W R/W R/W R/W R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

Pour l'opération d'écriture EEPROM, le registre EEDR contient les données à écrire dans l'EEPROM à l'adresse indiquée par le registre EEAR. Pour l'opération de lecture EEPROM, l'EEDR contient les données extraites du

EEPROM à l'adresse indiquée par EEAR.

 

5.5.4 EECR - Registre de contrôle EEPROM

Bit 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 ÉTRANGE EEMPE EEP ERE EECR
Lecture / Ecriture R R R / W R/W R/W R/W R/W R/W
Valeur initiale 0 0 X X 0 0 X 0

Bit 7 - Res: Bit réservé

Ce bit est réservé pour une utilisation future et sera toujours lu comme 0 dans ATtiny25 / 45/85. Pour la compatibilité avec les futurs appareils AVR, écrivez toujours ce bit à zéro. Après avoir lu, masquez ce bit.

Bit 6 - Res: Bit réservé

Ce bit est réservé dans l'ATtiny25 / 45/85 et sera toujours lu comme zéro.

Bits 5: 4 - EEPM [1: 0]: Bits du mode de programmation EEPROM

Le réglage des bits du mode de programmation EEPROM définit l'action de programmation qui sera déclenchée lors de l'écriture d'EEPE. Il est possible de programmer des données en une seule opération atomique (effacer l'ancienne valeur et programmer la nouvelle valeur) ou de fractionner les opérations d'effacement et d'écriture en deux opérations différentes. Les temps de programmation des différents modes sont indiqués dans Tableau 5-1. Tant que EEPE est défini, toute écriture dans EEPMn sera ignorée. Pendant la réinitialisation, les bits EEPMn seront réinitialisés à 0b00 à moins que l'EEPROM ne soit occupée à programmer.

Tableau 5-1. Bits de mode EEPROM

EEPM1 EEPM0 Temps de programmation Opération
0 0 3.4 ms Effacer et écrire en une seule opération (opération atomique)
0 1 1.8 ms Effacer uniquement
1 0 1.8 ms Écriture seulement
1 1 Réservé pour une utilisation future

Bit 3 - EERIE: Activation d'interruption EEPROM Ready

L'écriture de EERIE sur un active l'interruption EEPROM Ready si le bit I dans SREG est défini. Ecrire EERIE à zéro désactive l'interruption. L'interruption EEPROM Ready génère une interruption constante lorsque la mémoire non volatile est prête pour la programmation.

Bit 2 - EEMPE: Activation du programme maître EEPROM

Le bit EEMPE détermine si l'écriture d'EEPE sur l'un d'entre eux aura un effet ou non.

Lorsque EEMPE est réglé, le réglage de l'EEPE dans les quatre cycles d'horloge programmera l'EEPROM à l'adresse sélectionnée. Si EEMPE est égal à zéro, le réglage EEPE n'aura aucun effet. Lorsque EEMPE a été écrit sur un par logiciel, le matériel remet le bit à zéro après quatre cycles d'horloge.

Bit 1 - EEPE: Activation du programme EEPROM

Le signal d'activation de programme EEPROM EEPE est le signal d'activation de programmation vers l'EEPROM. Lors de l'écriture de l'EEPE, l'EEPROM sera programmée selon le réglage des bits EEPMn. Le bit EEMPE doit être écrit sur un avant qu'un bit logique ne soit écrit dans EEPE, sinon aucune écriture EEPROM n'a lieu. Lorsque le temps d'accès en écriture s'est écoulé, le bit EEPE est effacé par le matériel. Lorsque EEPE a été défini, la CPU est arrêtée pendant deux cycles avant que l'instruction suivante ne soit exécutée.

Bit 0 - EERE: Activation lecture EEPROM

Le signal d'activation de lecture EEPROM - EERE - est le stroboscope de lecture vers l'EEPROM. Lorsque l'adresse correcte est définie dans le registre EEAR, le bit EERE doit être écrit sur un pour déclencher la lecture de l'EEPROM. L'accès en lecture EEPROM prend une instruction et les données demandées sont immédiatement disponibles. Lors de la lecture de l'EEPROM, la CPU est arrêtée pendant quatre cycles avant que l'instruction suivante ne soit exécutée. L'utilisateur doit interroger le bit EEPE avant de lancer l'opération de lecture. Si une opération d'écriture est en cours, il n'est ni possible de lire l'EEPROM, ni de modifier le registre EEAR.

Horloge système et options d'horloge

Systèmes d'horloge et leur distribution

Distribution d'horloge

CPU Clock

L'horloge du CPU est acheminée vers les parties du système concernées par le fonctionnement du cœur de l'AVR. ExampLes fichiers de ces modules sont le registre à usage général File, le registre d'état et la mémoire de données contenant le pointeur de pile. L'arrêt de l'horloge du processeur empêche le cœur d'effectuer des opérations et des calculs généraux.

Horloge E / S - clkI / O

L'horloge d'E / S est utilisée par la majorité des modules d'E / S, comme la minuterie / compteur. L'horloge d'E / S est également utilisée par le module d'interruption externe, mais notez que certaines interruptions externes sont détectées par une logique asynchrone, ce qui permet de détecter de telles interruptions même si l'horloge d'E / S est arrêtée.

Horloge Flash - clkFLASH

L'horloge Flash contrôle le fonctionnement de l'interface Flash. L'horloge Flash est généralement active simultanément avec l'horloge du CPU.

Horloge ADC - clkADC

L'ADC est doté d'un domaine d'horloge dédié. Cela permet d'arrêter les horloges CPU et E / S afin de réduire le bruit généré par les circuits numériques. Cela donne des résultats de conversion ADC plus précis.

PLL interne pour la génération d'horloge périphérique rapide - clkPCK

La PLL interne dans ATtiny25 / 45/85 génère une fréquence d'horloge multipliée par 8 à partir d'une entrée source. Par défaut, la PLL utilise la sortie de l'oscillateur RC interne de 8.0 MHz comme source. En variante, si le bit LSM de PLLCSR est défini, la PLL utilisera la sortie de l'oscillateur RC divisée par deux. Ainsi à la sortie de la PLL, l'horloge périphérique rapide est de 64 MHz. L'horloge périphérique rapide, ou une horloge préréglée à partir de celle-ci, peut être sélectionnée comme source d'horloge pour Timer / Counter1 ou comme horloge système. Voir Figure 6-2. La fréquence de l'horloge périphérique rapide est divisée par deux lorsque le LSM de PLLCSR est défini, ce qui donne une fréquence d'horloge de 32 MHz. Notez que LSM ne peut pas être défini si PLLCLK est utilisé comme horloge système.

Illustration 6-2. Système d'horloge PCK. Horloge PCK

La PLL est verrouillée sur l'oscillateur RC et le réglage de l'oscillateur RC via le registre OSCCAL ajustera l'horloge périphérique rapide en même temps. Cependant, même si l'oscillateur RC est porté à une fréquence supérieure à 8 MHz, la fréquence d'horloge périphérique rapide sature à 85 MHz (pire des cas) et reste oscillante à la fréquence maximale. Il est à noter que la PLL dans ce cas n'est plus verrouillée avec l'horloge de l'oscillateur RC. Par conséquent, il est recommandé de ne pas amener les réglages OSCCAL à une fréquence supérieure à 8 MHz afin de maintenir la PLL dans la plage de fonctionnement correcte.

La PLL interne est activée lorsque:

Le bit PLLE dans le registre PLLCSR est mis à XNUMX.

Le fusible CKSEL est programmé sur «0001».

Le fusible CKSEL est programmé sur «0011».

Le bit PLLCSR PLOCK est activé lorsque PLL est verrouillé. L'oscillateur RC interne et la PLL sont tous deux éteints dans les modes de mise hors tension et de veille.

PLL interne en mode de compatibilité ATtiny15

Étant donné qu'ATtiny25 / 45/85 est un périphérique de migration pour les utilisateurs ATtiny15, il existe un mode de compatibilité ATtiny15 pour la compatibilité descendante. Le mode de compatibilité ATtiny15 est sélectionné en programmant les fusibles CKSEL sur «0011».

Dans le mode de compatibilité ATtiny15, la fréquence de l'oscillateur RC interne est étalonnée jusqu'à 6.4 MHz et le facteur de multiplication de la PLL est réglé sur 4x. Voir Figure 6-3. Avec ces réglages, le système d'horloge est compatible ATtiny15 et l'horloge périphérique rapide qui en résulte a une fréquence de 25.6 MHz (identique à ATtiny15).

Illustration 6-3. Système d'horloge PCK en mode de compatibilité ATtiny15. Système de pointage

Sources d'horloge

L'appareil dispose des options de source d'horloge suivantes, sélectionnables par les bits Flash Fuse comme indiqué ci-dessous. L'horloge de la source sélectionnée est entrée dans le générateur d'horloge de l'AVR et acheminée vers les modules appropriés.

Tableau 6-1. Options de synchronisation de l'appareil Sélectionnez

Option de synchronisation de l'appareil CKSEL[3:0](1)
Horloge externe (voir page 26) 0000
Horloge PLL haute fréquence (voir page 26) 0001
Oscillateur interne calibré (voir page 27) 0010(2)
Oscillateur interne calibré (voir page 27) 0011(3)
Oscillateur interne 128 kHz (voir page 28) 0100
Oscillateur à cristal basse fréquence (voir page 29) 0110
Oscillateur à cristal / résonateur en céramique (voir page 29) 1000 – 1111
Réservé 0101 0111

Pour tous les fusibles, «1» signifie non programmé tandis que «0» signifie programmé.

L'appareil est livré avec cette option sélectionnée.

Ceci sélectionnera le mode de compatibilité ATtiny15, où l'horloge système est divisée par quatre, ce qui donne une fréquence d'horloge de 1.6 MHz. Pour plus d'informations, voir «Oscillateur interne calibré» à la page 27.

Les différents choix pour chaque option de synchronisation sont donnés dans les sections suivantes. Lorsque le processeur sort de la mise hors tension, la source d'horloge sélectionnée est utilisée pour chronométrer le démarrage, garantissant un fonctionnement stable de l'oscillateur avant le début de l'exécution de l'instruction. Lorsque le CPU démarre à partir de la réinitialisation, il y a un délai supplémentaire permettant à la puissance d'atteindre un niveau stable avant de commencer le fonctionnement normal. L'oscillateur Watchdog est utilisé pour chronométrer cette partie en temps réel du temps de démarrage. Le nombre de cycles de l'oscillateur WDT utilisés pour chaque temporisation est indiqué dans Tableau 6-2.

Tableau 6-2. Nombre de cycles d'oscillateur de surveillance

Temporisation typ Nombre de cycles
4 ms 512
64 ms 8K (8,192)

Horloge externe

Pour piloter l'appareil à partir d'une source d'horloge externe, CLKI doit être piloté comme indiqué dans Figure 6-4. Pour faire fonctionner l'appareil sur une horloge externe, les fusibles CKSEL doivent être programmés sur «00».

Figure 6-4. Configuration du lecteur d'horloge externe

Fig6.4

Lorsque cette source d'horloge est sélectionnée, les heures de démarrage sont déterminées par les fusibles SUT comme indiqué dans Tableau 6-3.

Tableau 6-3. Heures de démarrage pour la sélection de l'horloge externe

SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire de réinitialisation Utilisation recommandée
00 6 CK 14CK BOD activé
01 6 CK 14CK + 4 ms Augmentation rapide de la puissance
10 6 CK 14CK + 64 ms Puissance en augmentation lente
11 Réservé

Lors de l'application d'une horloge externe, il est nécessaire d'éviter les changements brusques de la fréquence d'horloge appliquée pour assurer un fonctionnement stable du MCU. Une variation de fréquence de plus de 2% d'un cycle d'horloge à l'autre peut conduire à un comportement imprévisible. Il est nécessaire de s'assurer que la MCU est maintenue en réinitialisation pendant de tels changements de fréquence d'horloge.

Notez que la pré-vente de l'horloge système peut être utilisée pour implémenter des changements d'exécution de la fréquence d'horloge interne tout en garantissant un fonctionnement stable. Faire référence à «Prescaler de l'horloge système» à la page 31 pour plus de détails.

Horloge PLL haute fréquence

Il existe une PLL interne qui fournit une fréquence d'horloge nominale de 64 MHz verrouillée à l'oscillateur RC pour l'utilisation de la minuterie / compteur périphérique1 et pour la source d'horloge du système. Lorsqu'il est sélectionné comme source d'horloge système, en programmant les fusibles CKSEL sur '0001', il est divisé par quatre comme indiqué dans Tableau 6-4.

Tableau 6-4. Modes de fonctionnement de l'horloge PLL haute fréquence

CKSEL[3:0] Fréquence nominale
0001 16 MHz

Lorsque cette source d'horloge est sélectionnée, les heures de démarrage sont déterminées par les fusibles SUT comme indiqué dans Tableau 6-5.

Tableau 6-5. Heures de démarrage de l'horloge PLL haute fréquence

SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire à partir de la réinitialisation à la mise sous tension (VCC = 5.0 V) Utilisation recommandée
00 14CK + 1K (1024)CK + 4ms 4 ms BOD activé

Tableau 6-5. Heures de démarrage de l'horloge PLL haute fréquence

SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire à partir de la réinitialisation à la mise sous tension (VCC = 5.0 V) Utilisation recommandée
01 14CK + 16K (16384)CK + 4ms 4 ms Augmentation rapide de la puissance
10 14CK + 1K (1024)CK + 64ms 4 ms Puissance en augmentation lente
11 14CK + 16K (16384)CK + 64ms 4 ms Puissance en augmentation lente

Oscillateur interne calibré

Par défaut, l'oscillateur RC interne fournit une horloge d'environ 8.0 MHz. Bien que voltage et dépendante de la température, cette horloge peut être calibrée très précisément par l'utilisateur. Voir «Accumulateur d'oscillateur RC interne calibré racé »à la page 164 et «Vitesse de l'oscillateur interne» à la page 192 pour plus de détails. L'appareil est livré avec le fusible CKDIV8 programmé. Voir «Prescaler de l'horloge système» à la page 31 pour plus de détails.

Cette horloge peut être sélectionnée comme horloge système en programmant les fusibles CKSEL comme indiqué dans Tableau 6-6 à la page

27. S'il est sélectionné, il fonctionnera sans composants externes. Pendant la réinitialisation, le matériel charge la valeur d'étalonnage préprogrammée dans le registre OSCCAL et étalonne ainsi automatiquement l'oscillateur RC. La précision de cet étalonnage est indiquée comme étalonnage d'usine dans Tableau 21-2 à la page 164.

En changeant le registre OSCCAL de SW, voir «OSCCAL - Registre d'étalonnage de l'oscillateur» à la page 31, il est possible d'obtenir une précision d'étalonnage plus élevée qu'en utilisant l'étalonnage d'usine. La précision de cet étalonnage est indiquée par l'étalonnage utilisateur dans Tableau 21-2 à la page 164.

Lorsque cet oscillateur est utilisé comme horloge de puce, l'oscillateur Watchdog sera toujours utilisé pour la minuterie de surveillance et pour le délai de réinitialisation. Pour plus d'informations sur la valeur d'étalonnage préprogrammée, reportez-vous à la section «Cali- octets de bration »à la page 150.

L'oscillateur interne peut également être réglé pour fournir une horloge de 6.4 MHz en écrivant les fusibles CKSEL sur «0011», comme indiqué dans Tableau 6-6 au dessous de. Ce paramètre est appelé mode de compatibilité ATtiny15 et est destiné à fournir une source d'horloge calibrée à 6.4 MHz, comme dans ATtiny15. En mode de compatibilité ATtiny15, la PLL utilise l'oscillateur interne fonctionnant à 6.4 MHz pour générer un signal d'horloge périphérique de 25.6 MHz pour Timer / Counter1 (voir "Minuterie / Compteur 8 1 bits dans Mode ATtiny15 »à la page 95). Notez que dans ce mode de fonctionnement, le signal d'horloge de 6.4 MHz est toujours divisé par quatre, fournissant une horloge système de 1.6 MHz.

Tableau 6-6. Modes de fonctionnement de l'oscillateur RC calibré interne

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

L'appareil est livré avec cette option sélectionnée.

Ce paramètre sélectionne le mode de compatibilité ATtiny15, où l'horloge système est divisée par quatre, ce qui donne une fréquence d'horloge de 1.6 MHz.

Lorsque l'oscillateur interne étalonné de 8 MHz est sélectionné comme source d'horloge, les heures de démarrage sont déterminées par les fusibles SUT comme indiqué dans Tableau 6-7 ci-dessous.

Tableau 6-7. Heures de démarrage pour l'horloge de l'oscillateur RC calibré interne

SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire à partir de la réinitialisation (VCC = 5.0 V) Utilisation recommandée
00 6 CK 14CK(1) BOD activé
01 6 CK 14CK + 4 ms Augmentation rapide de la puissance
10(2) 6 CK 14CK + 64 ms Puissance en augmentation lente
11 Réservé

1. Si le fusible RSTDISBL est programmé, ce temps de démarrage sera augmenté à 14CK + 4 ms pour garantir l'accès au mode de programmation.
2. L'appareil est livré avec cette option sélectionnée.

En mode de compatibilité ATtiny15, les temps de démarrage sont déterminés par les fusibles SUT comme indiqué dans Tableau 6-8 ci-dessous.

Tableau 6-8. Heures de démarrage pour l'horloge de l'oscillateur RC calibré interne (en mode ATtiny15)

SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire à partir de la réinitialisation (VCC = 5.0 V) Utilisation recommandée
00 6 CK 14CK + 64 ms
01 6 CK 14CK + 64 ms
10 6 CK 14CK + 4 ms
11 1 CK 14CK(1)

Remarque : Si le fusible RSTDISBL est programmé, ce temps de démarrage sera augmenté à 14CK + 4 ms pour garantir l'accès au mode de programmation.

En résumé, plus d'informations sur le mode de compatibilité ATtiny15 peuvent être trouvées dans les sections «Port B (PB5: PB0)» activé page 2«PLL interne en mode de compatibilité ATtiny15», page 24"Minuterie / Compteur 8 1 bits en mode ATtiny15" activé page 95«Limitations de debugWIRE» à la page 140«Octets d'étalonnage» à la page 150 et en table "Clock Prescaler Sélectionnez »à la page 33.

Oscillateur interne 128 kHz

L'oscillateur interne 128 kHz est un oscillateur basse consommation fournissant une horloge de 128 kHz. La fréquence est nominale à 3V et 25°C. Cette horloge peut être sélectionnée comme horloge système en programmant les fusibles CKSEL sur "0100".

Lorsque cette source d'horloge est sélectionnée, les heures de démarrage sont déterminées par les fusibles SUT comme indiqué dans Tableau 6-9.

Tableau 6-9. Temps de démarrage de l'oscillateur interne 128 kHz

SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire de réinitialisation Utilisation recommandée
00 6 CK 14CK(1) BOD activé
01 6 CK 14CK + 4 ms Augmentation rapide de la puissance
10 6 CK 14CK + 64 ms Puissance en augmentation lente
11 Réservé

Remarque : Si le fusible RSTDISBL est programmé, ce temps de démarrage sera augmenté à 14CK + 4 ms pour garantir l'accès au mode de programmation.

Oscillateur à cristal basse fréquence

Pour utiliser un cristal de montre à 32.768 kHz comme source d'horloge pour l'appareil, l'oscillateur à cristal basse fréquence doit être sélectionné en réglant les fusibles CKSEL sur «0110». Le cristal doit être connecté comme indiqué dans Figure 6-5. Pour trouver la capacité de charge appropriée pour un crysal 32.768 kHz, veuillez consulter la fiche technique du fabricant.

Lorsque cet oscillateur est sélectionné, les temps de démarrage sont déterminés par les fusibles SUT comme indiqué dans Tableau 6-10.

Tableau 6-10. Heures de démarrage pour la sélection de l'horloge de l'oscillateur à cristal basse fréquence

SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire à partir de la réinitialisation (VCC = 5.0 V) Utilisation recommandée
00 1K (1024)CK(1) 4 ms Puissance ascendante rapide ou BOD activée
01 1K (1024)CK(1) 64 ms Puissance en augmentation lente
10 32K (32768)CK 64 ms Fréquence stable au démarrage
11 Réservé

Remarque : Ces options ne doivent être utilisées que si la stabilité de la fréquence au démarrage n'est pas importante.

L'oscillateur à cristal basse fréquence fournit une capacité de charge interne, voir Tableau 6-11 à chaque broche TOSC.

Tableau 6-11. Capacité de l'oscillateur à cristal basse fréquence

Appareil Osc de 32 kHz. Taper Casquette (Xtal1 / Tosc1) Casquette (Xtal2 / Tosc2)
ATtiny25 / 45/85 Osc système. 16 pF 6 pF

Oscillateur à cristal / résonateur en céramique

XTAL1 et XTAL2 sont respectivement l'entrée et la sortie d'un inverseur amplifier qui peut être configuré pour être utilisé comme oscillateur sur puce, comme indiqué dans Figure 6-5. Un cristal de quartz ou un résonateur en céramique peuvent être utilisés.

C1 et C2 doivent toujours être égaux pour les cristaux et les résonateurs. La valeur optimale des condensateurs dépend du cristal ou du résonateur utilisé, de la quantité de capacité parasite et du bruit électromagnétique de l'environnement. Quelques lignes directrices initiales pour le choix des condensateurs à utiliser avec des cristaux sont données dans Tableau 6-12 au dessous de. Pour les résonateurs céramiques, les valeurs de condensateur données par le fabricant doivent être utilisées.

Tableau 6-12. Modes de fonctionnement de l'oscillateur à cristal

CKSEL[3:1] Plage de fréquences (MHz) Plage recommandée pour les condensateurs C1 et C2 à utiliser avec des cristaux (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

Remarques : Cette option ne doit pas être utilisée avec des cristaux, uniquement avec des résonateurs en céramique.

L'oscillateur peut fonctionner dans trois modes différents, chacun optimisé pour une plage de fréquences spécifique. Le mode de fonctionnement est sélectionné par les fusibles CKSEL [3: 1] comme indiqué dans Tableau 6-12.

Le fusible CKSEL0 et les fusibles SUT [1: 0] sélectionnent les heures de démarrage comme indiqué dans Tableau 6-13.

Tableau 6-13. Heures de démarrage pour la sélection de l'horloge de l'oscillateur à quartz

CKSEL0 SUT[1:0] Temps de démarrage à partir de la mise hors tension Délai supplémentaire de réinitialisation Utilisation recommandée
0 00 258 CK(1) 14CK + 4 ms Résonateur en céramique, puissance à montée rapide
0 01 258 CK(1) 14CK + 64 ms Résonateur en céramique, puissance lentement croissante
0 10 1K (1024)CK(2) 14CK Résonateur en céramique, activé BOD
0 11 1K (1024) CK(2) 14CK + 4 ms Résonateur en céramique, puissance à montée rapide
1 00 1K (1024) CK(2) 14CK + 64 ms Résonateur en céramique, puissance lentement croissante
1 01 16K (16384)CK 14CK Oscillateur à cristal, BOD activé
1 10 16K (16384)CK 14CK + 4 ms Oscillateur à cristal, puissance à montée rapide
1 11 16K (16384)CK 14CK + 64 ms Oscillateur à cristal, puissance qui monte lentement

Remarques

Ces options ne doivent être utilisées que lorsqu'elles ne fonctionnent pas à proximité de la fréquence maximale de l'appareil, et uniquement si la stabilité de fréquence au démarrage n'est pas importante pour l'application. Ces options ne conviennent pas aux cristaux.

Ces options sont destinées à être utilisées avec des résonateurs céramiques et assureront la stabilité de fréquence au démarrage. Ils peuvent également être utilisés avec des cristaux lorsqu'ils ne fonctionnent pas à proximité de la fréquence maximale de l'appareil, et si la stabilité de fréquence au démarrage n'est pas importante pour l'application.

Source d'horloge par défaut

L'appareil est expédié avec CKSEL = "0010", SUT = "10" et CKDIV8 programmé. Le réglage de la source d'horloge par défaut est donc l'oscillateur RC interne fonctionnant à 8 MHz avec le temps de démarrage le plus long et une pré-échelle initiale de l'horloge système de 8, ce qui donne une horloge système de 1.0 MHz. Ce paramètre par défaut garantit que tous les utilisateurs peuvent effectuer le réglage de source d'horloge souhaité à l'aide d'un système In-System ou High-Vol.tage Programmeur.

Prescaler d'horloge système

L'horloge système ATtiny25 / 45/85 peut être divisée en réglant «CLKPR - Registre de pré-échelle de l'horloge» à la page 32. Cette fonctionnalité peut être utilisée pour réduire la consommation d'énergie lorsque les besoins en puissance de traitement sont faibles. Cela peut être utilisé avec toutes les options de source d'horloge, et cela affectera la fréquence d'horloge du CPU et de tous les périphériques synchrones. clkI/O, clkADC, clkCPU et clkFLASH sont divisés par un facteur comme indiqué dans Tableau 6-15 à la page 33.

Heure de commutation

Lors de la commutation entre les paramètres du préréglage, le préréglage d'horloge système garantit qu'aucun problème ne se produit dans le système d'horloge et qu'aucune fréquence intermédiaire n'est supérieure à la fréquence d'horloge correspondant au réglage précédent, ni à la fréquence d'horloge correspondant au nouveau réglage.

Le compteur d'ondulation qui implémente le prescaler fonctionne à la fréquence de l'horloge non divisée, qui peut être plus rapide que la fréquence d'horloge du processeur. Par conséquent, il n'est pas possible de déterminer l'état du prescaler - même s'il était lisible, et le temps exact qu'il faut pour passer d'une division d'horloge à une autre ne peut pas être exactement prédit.

A partir du moment où les valeurs CLKPS sont écrites, il faut entre T1 + T2 et T1 + 2 * T2 avant que la nouvelle fréquence d'horloge ne soit active. Dans cet intervalle, 2 fronts d'horloge actifs sont produits. Ici, T1 est la période d'horloge précédente et T2 est la période correspondant au nouveau réglage du prescaler.

Tampon de sortie d'horloge

L'appareil peut émettre l'horloge système sur la broche CLKO (lorsqu'il n'est pas utilisé comme broche XTAL2). Pour activer la sortie, le fusible CKOUT doit être programmé. Ce mode convient lorsque l'horloge de la puce est utilisée pour piloter d'autres circuits du système. Notez que l'horloge ne sera pas sortie pendant la réinitialisation et que le fonctionnement normal de la broche d'E / S sera annulé lorsque le fusible est programmé. L'oscillateur RC interne, l'oscillateur WDT, le PLL et l'horloge externe (CLKI) peuvent être sélectionnés lorsque l'horloge est émise sur CLKO. Les oscillateurs à cristal (XTAL1, XTAL2) ne peuvent pas être utilisés pour la sortie d'horloge sur CLKO. Si le Prescaler d'horloge système est utilisé, c'est l'horloge système divisée qui est émise.

Description du registre

OSCCAL - Registre d'étalonnage de l'oscillateur

Peu 7 6 5 4 3 2 1 0
0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCAL
Lecture/écriture R/W R/W R/W R/W R/W R/W R/W R/W

Bits 7: 0 - CAL [7: 0]: Valeur d'étalonnage de l'oscillateur

Le registre d'étalonnage de l'oscillateur est utilisé pour ajuster l'oscillateur RC interne étalonné afin de supprimer les variations de processus de la fréquence de l'oscillateur. Une valeur d'étalonnage préprogrammée est automatiquement écrite dans ce registre lors de la réinitialisation de la puce, donnant la fréquence étalonnée en usine comme spécifié dans Tableau 21-2 à la page 164. Le logiciel d'application peut écrire ce registre pour changer la fréquence de l'oscillateur. L'oscillateur peut être étalonné aux fréquences spécifiées dans Tableau 21-2 à la page 164. L'étalonnage en dehors de cette plage n'est pas garanti.

Notez que cet oscillateur est utilisé pour chronométrer les accès en écriture EEPROM et Flash, et ces temps d'écriture seront affectés en conséquence. Si l'EEPROM ou le Flash sont écrits, ne calibrez pas à plus de 8.8 MHz. Sinon, l'écriture EEPROM ou Flash peut échouer.

Le bit CAL7 détermine la plage de fonctionnement de l'oscillateur. La définition de ce bit sur 0 donne la plage de fréquences la plus basse, la définition de ce bit sur 1 donne la plage de fréquences la plus élevée. Les deux gammes de fréquences se chevauchent, c'est-à-dire qu'un réglage OSCCAL = 0x7F donne une fréquence plus élevée que OSCCAL = 0x80.

Les bits CAL [6: 0] sont utilisés pour régler la fréquence dans la plage sélectionnée. Un réglage de 0x00 donne la fréquence la plus basse dans cette gamme, et un réglage de 0x7F donne la fréquence la plus élevée dans la gamme.

Pour assurer un fonctionnement stable du MCU, la valeur d'étalonnage doit être modifiée en petit. Une variation de fréquence de plus de 2% d'un cycle à l'autre peut conduire à des comportements imprévisibles. Les modifications d'OSCCAL ne doivent pas dépasser 0x20 pour chaque étalonnage. Il est nécessaire de s'assurer que le MCU est maintenu en réinitialisation pendant de tels changements dans la fréquence d'horloge

Tableau 6-14. Plage de fréquences de l'oscillateur RC interne

Valeur OSCCAL Fréquence la plus basse typique par rapport à la fréquence nominale Fréquence la plus élevée typique par rapport à la fréquence nominale
0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR - Registre de pré-échelle d'horloge

Peu 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Lecture/écriture R/W R R R R/W R/W R/W R/W

Valeur initiale 0 0 0 0 Voir la description du bit

Bit 7 - CLKPCE: Activation du changement de prescaler d'horloge

Le bit CLKPCE doit être écrit dans le premier logique pour permettre la modification des bits CLKPS. Le bit CLKPCE n'est mis à jour que lorsque les autres bits de CLKPR sont écrits simultanément à zéro. CLKPCE est effacé par le matériel quatre cycles après son écriture ou lorsque les bits CLKPS sont écrits. La réécriture du bit CLKPCE dans cette période de temporisation ne prolonge pas la période de temporisation, ni n'efface le bit CLKPCE.

Bits 6: 4 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bits 3: 0 - CLKPS [3: 0]: Bits de sélection du Prescaler d'horloge 3 - 0

Ces bits définissent le facteur de division entre la source d'horloge sélectionnée et l'horloge système interne. Ces bits peuvent être écrits au moment de l'exécution pour faire varier la fréquence d'horloge en fonction des exigences de l'application. Lorsque le diviseur divise l'entrée d'horloge principale de la MCU, la vitesse de tous les périphériques synchrones est réduite lorsqu'un facteur de division est utilisé. Les facteurs de division sont donnés en Tableau 6-15.

Pour éviter les changements involontaires de fréquence d'horloge, une procédure d'écriture spéciale doit être suivie pour changer les bits CLKPS:

Ecrivez le bit d'activation du changement de prescaler d'horloge (CLKPCE) sur un et tous les autres bits de CLKPR sur zéro.

Dans les quatre cycles, écrivez la valeur souhaitée dans CLKPS tout en écrivant un zéro dans CLKPCE.

Les interruptions doivent être désactivées lors de la modification du paramètre de prédécaleur pour s'assurer que la procédure d'écriture n'est pas interrompue.

Le fusible CKDIV8 détermine la valeur initiale des bits CLKPS. Si CKDIV8 n'est pas programmé, les bits CLKPS seront réinitialisés à "0000". Si CKDIV8 est programmé, les bits CLKPS sont réinitialisés à "0011", donnant un facteur de division de huit au démarrage. Cette fonction doit être utilisée si la source d'horloge sélectionnée a une fréquence supérieure à la fréquence maximale de l'appareil dans les conditions de fonctionnement actuelles. Notez que n'importe quelle valeur peut être écrite dans les bits CLKPS quel que soit le réglage du fusible CKDIV8. Le logiciel d'application doit garantir qu'un facteur de division suffisant est

choisi si la source d'horloge sélectionnée a une fréquence supérieure à la fréquence maximale de l'appareil dans les conditions de fonctionnement actuelles. L'appareil est livré avec le fusible CKDIV8 programmé.

Tableau 6-15. Sélection du Prescaler d'Horloge

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Facteur de division d'horloge
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 Réservé
1 0 1 0 Réservé
1 0 1 1 Réservé
1 1 0 0 Réservé
1 1 0 1 Réservé
1 1 1 0 Réservé
1 1 1 1 Réservé

Remarque : Le prédiviseur est désactivé en mode de compatibilité ATtiny15 et ni l'écriture sur CLKPR, ni la programmation du fusible CKDIV8 n'ont d'effet sur l'horloge système (qui sera toujours de 1.6 MHz).

Gestion de l'alimentation et modes de veille

Les hautes performances et l'efficacité du code à la pointe de l'industrie font des microcontrôleurs AVR un choix idéal pour les applications à faible puissance. De plus, les modes de veille permettent à l'application d'arrêter les modules inutilisés dans le MCU, économisant ainsi de l'énergie. L'AVR propose différents modes de veille permettant à l'utilisateur d'adapter la consommation d'énergie aux besoins de l'application.

Modes de veille

Figure 6-1 à la page 23 présente les différents systèmes d'horloge et leur distribution dans ATtiny25 / 45/85. La figure est utile pour sélectionner un mode de veille approprié. Tableau 7-1 montre les différents modes de sommeil et leurs sources de réveil.

Tableau 7-1. Domaines d'horloge actifs et sources de réveil dans les différents modes de veille

Domaines d'horloge actifs Oscillateurs Sources de réveil
Mode veille clkCPU clkFLASH clkIO clkADC clkPCK Source d'horloge principale activée INT0 et changement de broche SPM / EEPROM

Prêt

 

Condition de démarrage USI

ADC Autres E/S Chien de garde Interrompre
Inactif X X X X X X X X X X
Réduction du bruit ADC X X X(1) X X X X
Éteindre X(1) X X

Remarque : Pour INT0, niveau d'interruption uniquement.

Pour entrer dans l'un des trois modes de veille, le bit SE de MCUCR doit être écrit dans le premier logique et une instruction SLEEP doit être exécutée. Les bits SM [1: 0] du registre MCUCR sélectionnent le mode de veille (Idle, ADC Noise Reduction ou Power-down) qui sera activé par l'instruction SLEEP. Voir Tableau 7-2 pour un résumé.

Si une interruption activée se produit alors que le MCU est en mode veille, le MCU se réveille. Le MCU est ensuite arrêté pendant quatre cycles en plus du temps de démarrage, exécute la routine d'interruption et reprend l'exécution à partir de l'instruction suivant SLEEP. Le contenu du Registre File et SRAM ne sont pas modifiés lorsque l'appareil sort du mode veille. Si une réinitialisation se produit pendant le mode veille, le MCU se réveille et s'exécute à partir du vecteur de réinitialisation.

Remarque : si une interruption déclenchée par le niveau est utilisée pour le réveil, le niveau modifié doit être maintenu pendant un certain temps pour réveiller le MCU (et pour que le MCU entre dans la routine de service d'interruption). Voir «Interruptions externes» à la page 49 pour plus de détails.

Mode inactif

Lorsque les bits SM[1:0] sont écrits sur 00, l'instruction SLEEP fait passer le MCU en mode inactif, arrêtant le CPU mais permettant au comparateur analogique, au CAN, à l'USI, au temporisateur/compteur, au chien de garde et au système d'interruption de continuer à fonctionner. manger. Ce mode veille arrête essentiellement clkCPU et clkFLASH, tout en permettant aux autres horloges de fonctionner.

Le mode veille permet au MCU de se réveiller des interruptions déclenchées externes ainsi que des interruptions internes telles que le dépassement de la minuterie. Si le réveil de l'interruption du comparateur analogique n'est pas nécessaire, le comparateur analogique peut être mis hors tension en réglant le bit ACD dans «ACSR - Contrôle du comparateur analogique et registre d'état» à la page 120. Cela réduira la consommation d'énergie en mode veille. Si l'ADC est activé, une conversion démarre automatiquement lorsque ce mode est entré.

Mode de réduction du bruit ADC

Lorsque les bits SM[1:0] sont écrits sur 01, l'instruction SLEEP fait passer le MCU en mode de réduction du bruit ADC, arrêtant le CPU mais permettant à l'ADC, aux interruptions externes et au chien de garde de continuer à fonctionner (s'il est activé). Ce mode veille arrête clkI/O, clkCPU et clkFLASH, tout en permettant aux autres horloges de fonctionner.

Cela améliore l'environnement sonore du CAN, permettant des mesures de résolution plus élevée. Si l'ADC est activé, une conversion démarre automatiquement lorsque ce mode est entré. En dehors de l'interruption de conversion ADC complète, seule une réinitialisation externe, une réinitialisation de chien de garde, une réinitialisation de Brown-out, une interruption SPM / EEPROM prête, une interruption de niveau externe sur INT0 ou une interruption de changement de broche peut réveiller le MCU de la réduction de bruit ADC mode.

Mode de mise hors tension

Lorsque les bits SM [1: 0] sont écrits sur 10, l'instruction SLEEP fait passer le MCU en mode de mise hors tension. Dans ce mode, l'oscillateur est arrêté, tandis que les interruptions externes, la détection de condition de démarrage de l'USI et le chien de garde continuent de fonctionner (si activé). Seule une réinitialisation externe, une réinitialisation du chien de garde, une réinitialisation de Brown-out, une interruption de condition de démarrage USI, une interruption de niveau externe sur INT0 ou une interruption de changement de broche peuvent réveiller le MCU. Ce mode veille arrête toutes les horloges générées, permettant le fonctionnement des modules asynchrones uniquement.

Désactivation du BOD du logiciel

Lorsque le Détecteur de Brown-out (BOD) est activé par les fusibles BODLEVEL (voir Tableau 20-4 à la page 148), le BOD surveille activement le volume d'approvisionnementtage pendant une période de sommeil. Dans certains appareils, il est possible d'économiser de l'énergie en désactivant le BOD par logiciel en mode veille de mise hors tension. La consommation électrique en mode veille sera alors au même niveau que lorsque le DBO est globalement désactivé par des fusibles.

Si BOD est désactivé par logiciel, la fonction BOD est désactivée immédiatement après l'entrée en mode veille. Au réveil du mode veille, BOD est automatiquement réactivé. Cela garantit un fonctionnement sûr en cas de baisse du niveau VCC pendant la période de veille.

Lorsque le BOD a été désactivé, l'heure de réveil du mode veille sera la même que celle du réveil depuis RESET. L'utilisateur doit configurer manuellement les heures de réveil de telle sorte que la référence de bande interdite ait le temps de démarrer et que le BOD fonctionne correctement avant que le MCU continue d'exécuter le code. Voir les bits de fusible SUT [1: 0] et CKSEL [3: 0] dans le tableau «Fuse Low Byte» à la page 149

La désactivation du BOD est contrôlée par le bit BODS (BOD Sleep) du registre de contrôle MCU, voir «MCUCR - Contrôle MCU S'inscrire »à la page 37. L'écriture de ce bit sur un désactive le BOD lors de la mise hors tension, tandis que l'écriture d'un zéro maintient le BOD actif. Le réglage par défaut est zéro, c'est-à-dire que la BOD est active.

L'écriture sur le bit BODS est contrôlée par une séquence cadencée et un bit d'activation, voir «MCUCR - Registre de contrôle MCU- ter »à la page 37.

Limites

La fonctionnalité de désactivation de la BOD a été implémentée dans les appareils suivants, uniquement:

ATtiny25, révision E et plus récent

ATtiny45, révision D et plus récent

ATtiny85, révision C et plus récent

Les révisions sont marquées sur l'emballage de l'appareil et peuvent être localisées comme suit:

Face inférieure des colis 8P3 et 8S2

Face supérieure du colis 20M1

Registre de réduction de puissance

Le registre de réduction de puissance (PRR), voir «PRR - Registre de réduction de puissance» à la page 38, fournit une méthode pour réduire la consommation d'énergie en arrêtant l'horloge des périphériques individuels. L'état actuel du périphérique est gelé et les registres d'E / S ne peuvent pas être lus ou écrits. Les ressources utilisées par le périphérique lors de l'arrêt de l'horloge resteront occupées, par conséquent, le périphérique devrait dans la plupart des cas être désactivé avant d'arrêter l'horloge. Le réveil d'un module, qui se fait en effaçant le bit dans PRR, met le module dans le même état qu'avant l'arrêt.

L'arrêt du module peut être utilisé en mode veille et en mode actif pour réduire considérablement la consommation d'énergie globale. Dans tous les autres modes de veille, l'horloge est déjà arrêtée. Voir «Courant d'alimentation des modules d'E / S» à la page 177 par exempleamples.

Minimiser la consommation d'énergie

Il y a plusieurs problèmes à prendre en compte lorsque vous essayez de minimiser la consommation d'énergie dans un système contrôlé par AVR. En général, les modes de veille doivent être utilisés autant que possible et le mode de veille doit être sélectionné de manière à ce que le moins de fonctions possible de l'appareil fonctionnent. Toutes les fonctions inutiles doivent être désactivées. En particulier, les modules suivants peuvent nécessiter une attention particulière pour essayer d'obtenir la consommation d'énergie la plus faible possible.

Convertisseur analogique-numérique

S'il est activé, l'ADC sera activé dans tous les modes de veille. Pour économiser de l'énergie, l'ADC doit être désactivé avant d'entrer dans un mode de veille. Lorsque l'ADC est éteint puis rallumé, la prochaine conversion sera une conversion étendue. Faire référence à «Convertisseur analogique-numérique» à la page 122 pour plus de détails sur le fonctionnement du CAN.

Comparateur analogique

Lorsque vous entrez en mode veille, le comparateur analogique doit être désactivé s'il n'est pas utilisé. Lorsque vous entrez en mode de réduction du bruit ADC, le comparateur analogique doit être désactivé. Dans les autres modes de veille, le comparateur analogique est automatiquement désactivé. Cependant, si le comparateur analogique est configuré pour utiliser le volume internetage Référence comme entrée, le comparateur analogique doit être désactivé dans tous les modes de veille. Sinon, le Vol internetagLa référence sera activée, indépendamment du mode veille. Faire référence à «Comparateur analogique» à la page 119 pour plus de détails sur la configuration du comparateur analogique.

Détecteur de brunissement

Si le détecteur de baisse de tension n'est pas nécessaire dans l'application, ce module doit être désactivé. Si le détecteur de baisse de tension est activé par les fusibles BODLEVEL, il sera activé dans tous les modes de veille et, par conséquent, consommera toujours de l'énergie. Dans les modes de sommeil plus profond, cela contribuera de manière significative à la consommation totale de courant. Voir «Brown-out Detec- tion »à la page 41 et «Désactivation du logiciel BOD» à la page 35 pour plus de détails sur la configuration du détecteur de baisse de tension.

Vol internetage Référence

Le Vol InternetagLa référence sera activée si nécessaire par la détection de baisse de tension, le comparateur analogique ou l'ADC. Si ces modules sont désactivés comme décrit dans les sections ci-dessus, le vol internetagLa référence sera désactivée et elle ne consommera pas d'énergie. Lors de la remise sous tension, l'utilisateur doit permettre à la référence de démarrer avant que la sortie ne soit utilisée. Si la référence est maintenue allumée en mode veille, la sortie peut être utilisée immédiatement. Faire référence à "Vol internetage Référence” à la page 42 pour plus de détails sur l'heure de démarrage.

Minuterie de surveillance

Si le Watchdog Timer n'est pas nécessaire dans l'application, ce module doit être désactivé. Si la minuterie de surveillance est activée, elle sera activée dans tous les modes de veille et, par conséquent, consommera toujours de l'énergie. Dans les modes de sommeil plus profond, cela contribuera de manière significative à la consommation totale de courant. Faire référence à «Watchdog Timer» à la page 42 pour plus de détails sur la configuration du Watchdog Timer.

Broches de port

Lors de l'entrée en mode veille, toutes les broches du port doivent être configurées pour utiliser une alimentation minimale. Le plus important est alors de s'assurer qu'aucune broche n'alimente des charges résistives. Dans les modes de veille où l'horloge d'E/S (clkI/O) et l'horloge ADC (clkADC) sont arrêtées, les tampons d'entrée de l'appareil seront désactivés. Cela garantit qu'aucune puissance n'est consommée

par la logique d'entrée lorsqu'elle n'est pas nécessaire. Dans certains cas, la logique d'entrée est nécessaire pour détecter les conditions de réveil, et

il sera alors activé. Reportez-vous à la section «Modes d'activation et de veille de l'entrée numérique» à la page 57 pour plus de détails sur les broches activées. Si le tampon d'entrée est activé et que le signal d'entrée reste flottant ou a un niveau de signal analogique proche de VCC/2, le tampon d'entrée utilisera une puissance excessive.

Pour les broches d'entrée analogiques, le tampon d'entrée numérique doit être désactivé à tout moment. Un niveau de signal analogique proche de VCC/2 sur une broche d'entrée peut provoquer un courant important même en mode actif. Les tampons d'entrée numérique peuvent être désactivés en écrivant dans le registre de désactivation d'entrée numérique (DIDR0). Faire référence à «DIDR0 - Registre de désactivation d'entrée numérique 0» à la page 121 pour plus de détails.

Description du registre

MCUCR - Registre de contrôle MCU

Le registre de contrôle MCU contient des bits de contrôle pour la gestion de l'alimentation.

Peu 7 6 5 4 3 2 1 0
0x35 CORPS POUD SE SM1 SM0 CORPS ISC01 ISC00 MCUCR
Lecture/écriture R R/W R/W R/W R/W R R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

Bit 7 - BODS: sommeil DBO

La fonctionnalité de désactivation de la BOD est disponible uniquement sur certains appareils. Voir «Limitations» à la page 36.

Afin de désactiver la DBO pendant le sommeil (voir Tableau 7-1 à la page 34) le bit BODS doit être écrit dans le premier logique. Ceci est contrôlé par une séquence chronométrée et le bit d'activation, BODSE dans MCUCR. Tout d'abord, BODS et BODSE doivent être réglés sur un. Deuxièmement, dans les quatre cycles d'horloge, BODS doit être réglé à un et BODSE doit être réglé à zéro. Le bit BODS est actif trois cycles d'horloge après sa mise à XNUMX. Une instruction de veille doit être exécutée pendant que le BODS est actif afin de désactiver le BOD pour le mode de veille réel. Le bit BODS est automatiquement effacé après trois cycles d'horloge.

Dans les appareils où Sleeping BOD n'a pas été implémenté, ce bit est inutilisé et lira toujours zéro.

Bit 5 - SE: Veille activée

Le bit SE doit être écrit sur le un logique pour faire passer le MCU en mode veille lorsque l'instruction SLEEP est exécutée. Pour éviter que le MCU n'entre en mode veille à moins que ce ne soit l'objectif du programmeur, il est recommandé d'écrire le bit d'activation de veille (SE) sur un juste avant l'exécution de l'instruction SLEEP et de l'effacer immédiatement après le réveil.

Bits 4: 3 - SM [1: 0]: Sélection du mode veille Bits 1 et 0

Ces bits sélectionnent entre les trois modes de veille disponibles, comme indiqué dans Tableau 7-2.

Tableau 7-2. Sélection du mode veille

SM1 SM0 Mode veille
0 0 Inactif
0 1 Réduction du bruit ADC
1 0 Éteindre
1 1 Réservé

Bit 2 - BODSE: Activation de veille BOD

La fonctionnalité de désactivation de la BOD est disponible uniquement sur certains appareils. Voir «Limitations» à la page 36.

Le bit BODSE active le réglage du bit de contrôle BODS, comme expliqué dans la description du bit BODS. La désactivation de la DBO est contrôlée par une séquence chronométrée.

Ce bit est inutilisé dans les appareils où la désactivation du logiciel BOD n'a pas été implémentée et sera lu comme zéro dans ces appareils.

PRR - Registre de réduction de puissance

Le registre de réduction de puissance fournit une méthode pour réduire la consommation d'énergie en permettant la désactivation des signaux d'horloge des périphériques.

Peu 7 6 5 4 3 2 1 0
0x20 PRTIM1 PRTIM0 PRUSI PRAD PRR
Lecture/écriture R R R R R/W R/W R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

Bits 7: 4 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bit 3 - PRTIM1: Minuterie / compteur de réduction de puissance1

L'écriture d'un un logique sur ce bit arrête le module Timer / Counter1. Lorsque le Timer / Counter1 est activé, le fonctionnement se poursuit comme avant l'arrêt.

Bit 2 - PRTIM0: Minuterie / compteur de réduction de puissance0

L'écriture d'un un logique sur ce bit arrête le module Timer / Counter0. Lorsque le Timer / Counter0 est activé, le fonctionnement se poursuit comme avant l'arrêt.

Bit 1 - PRUSI: réduction de puissance USI

L'écriture d'un un logique sur ce bit arrête l'USI en arrêtant l'horloge du module. Lors du réveil de l'USI, l'USI doit être réinitialisée pour garantir un fonctionnement correct.

Bit 0 - PRADC: ADC de réduction de puissance

L'écriture d'un XNUMX logique sur ce bit arrête l'ADC. L'ADC doit être désactivé avant d'être arrêté. Notez que l'horloge ADC est également utilisée par certaines parties du comparateur analogique, ce qui signifie que le comparateur analogique ne peut pas être utilisé lorsque ce bit est haut.

Contrôle et réinitialisation du système

Réinitialiser l'AVR

Pendant la réinitialisation, tous les registres d'E / S sont réglés sur leurs valeurs initiales et le programme démarre l'exécution à partir du vecteur de réinitialisation. L'instruction placée sur le vecteur de réinitialisation doit être une instruction RJMP - Relative Jump - à la routine de gestion de réinitialisation. Si le programme n'active jamais une source d'interruption, les vecteurs d'interruption ne sont pas utilisés et le code de programme normal peut être placé à ces emplacements. Le schéma de circuit dans Figure 8-1 montre la logique de réinitialisation. Les paramètres électriques du circuit de réinitialisation sont indiqués dans «Caractéristiques du système et de réinitialisation» à la page 165.

Figure 8-1 Logique de réinitialisation Réinitialiser-logique

Les ports d'E / S de l'AVR sont immédiatement réinitialisés à leur état initial lorsqu'une source de réinitialisation devient active. Cela ne nécessite aucune source d'horloge pour fonctionner.

Une fois que toutes les sources de réinitialisation sont devenues inactives, un compteur de retard est appelé, étendant la réinitialisation interne. Cela permet à la puissance d'atteindre un niveau stable avant le début du fonctionnement normal. La période de temporisation du compteur de retard est définie par l'utilisateur via les fusibles SUT et CKSEL. Les différentes sélections pour la période de retard sont présentées dans "L'horloge Sources »à la page 25.

Réinitialiser les sources

L'ATtiny25 / 45/85 dispose de quatre sources de réinitialisation:

Réinitialisation à la mise sous tension. Le MCU est réinitialisé lorsque l'alimentation voltage est inférieur au seuil de réinitialisation à la mise sous tension (VPOT).

Réinitialisation externe. Le MCU est réinitialisé lorsqu'un niveau bas est présent sur la broche RESET pendant plus longtemps que la longueur d'impulsion minimale.

Réinitialisation du chien de garde. Le MCU est réinitialisé lorsque la période de la minuterie de surveillance expire et que le chien de garde est activé.

Réinitialisation des baisses de tension. Le MCU est réinitialisé lorsque l'alimentation voltage VCC est inférieur au seuil de réinitialisation de la baisse de tension (VBOT) et le détecteur de baisse de tension est activé.

Réinitialisation à la mise sous tension

Une impulsion de réinitialisation à la mise sous tension (POR) est générée par un circuit de détection sur puce. Le niveau de détection est défini dans «Sys- tem et caractéristiques de réinitialisation »à la page 165. Le POR est activé chaque fois que VCC est en dessous du niveau de détection. Le circuit POR peut être utilisé pour déclencher la réinitialisation de démarrage, ainsi que pour détecter une panne de vol d'alimentation.tage.

Un circuit de réinitialisation à la mise sous tension (POR) garantit que l'appareil est réinitialisé à partir de la mise sous tension. Atteindre le seuil de réinitialisation à la mise sous tension voltage appelle le compteur de retard, qui détermine combien de temps l'appareil est maintenu en RESET après la montée de VCC. Le signal RESET est à nouveau activé, sans délai, lorsque VCC descend en dessous du niveau de détection.

Illustration 8-2. Démarrage MCU, RESET lié à VCC

RÉINITIALISATION INTERNE

Illustration 8-3. Démarrage MCU, RESET étendu en externe

Réinitialisation externe

Une réinitialisation externe est générée par un niveau bas sur la broche RESET si elle est activée. Réinitialisez les impulsions plus longues que la largeur d'impulsion minimale (voir «Caractéristiques du système et de réinitialisation» à la page 165) générera une réinitialisation, même si l'horloge ne tourne pas. Des impulsions plus courtes ne sont pas garanties pour générer une réinitialisation. Lorsque le signal appliqué atteint le seuil de réinitialisation Voltage - VRST - sur son front positif, le compteur de retard démarre le MCU après l'expiration de la période de temporisation.

Illustration 8-4. Réinitialisation externe pendant le fonctionnement Fig8.4

Détection des baisses de tension

ATtiny25/45/85 dispose d'un circuit de détection de baisse de tension (BOD) sur puce pour surveiller le niveau VCC pendant le fonctionnement en le comparant à un niveau de déclenchement fixe. Le niveau de déclenchement du BOD peut être sélectionné par les fusibles BODLEVEL. Le niveau de déclenchement a une hystérésis pour assurer une détection de microcoupure sans pointe. L'hystérésis au niveau de détection doit être interprétée comme VBOT+ = VBOT + VHYST/2 et VBOT- = VBOT – VHYST/2.

Lorsque la DBO est activée, et VCC diminue à une valeur inférieure au niveau de déclenchement (VBOT- in Figure 8-5), le Brown-out Reset est immédiatement activé. Lorsque VCC augmente au-dessus du niveau de déclenchement (VBOT+ dans Figure 8-5), le compteur de retard démarre la MCU après l'expiration de la période de temporisation tTOUT.

Le circuit DBO ne détectera une chute de VCC que si le voltage reste sous le niveau de déclenchement plus longtemps que tDBO indiqué dans «Caractéristiques du système et de réinitialisation» à la page 165. Fig8.5

Réinitialisation du chien de garde

Lorsque le chien de garde expire, il génère une courte impulsion de réinitialisation d'une durée d'un cycle CK. Sur le front descendant de cette impulsion, le temporisateur commence à compter la période de temporisation tTOUT. Faire référence à «Watchdog Timer» à la page 42 pour plus de détails sur le fonctionnement du Watchdog Timer.

Voltage Signaux d'activation de référence et temps de démarrage

Le voltagLa référence a un temps de démarrage qui peut influencer la façon dont elle doit être utilisée. L'heure de démarrage est indiquée en «Caractéristiques du système et de réinitialisation» à la page 165. Pour économiser de l'énergie, la référence n'est pas toujours activée. La référence est activée dans les situations suivantes:

Lorsque le BOD est activé (en programmant les fusibles BODLEVEL [2: 0]).

Lorsque la référence de bande interdite est connectée au comparateur analogique (en définissant le bit ACBG dans ACSR).

Lorsque l'ADC est activé.

Ainsi, lorsque le BOD n'est pas activé, après avoir réglé le bit ACBG ou activé l'ADC, l'utilisateur doit toujours permettre à la référence de démarrer avant que la sortie du comparateur analogique ou ADC ne soit utilisée. Pour réduire la consommation d'énergie en mode de mise hors tension, l'utilisateur peut éviter les trois conditions ci-dessus pour s'assurer que la référence est désactivée avant de passer en mode de mise hors tension.

Minuterie de surveillance

La minuterie Watchdog est cadencée à partir d'un oscillateur sur puce qui fonctionne à 128 kHz. En contrôlant le prescaler Watchdog Timer, l'intervalle de réinitialisation Watchdog peut être ajusté comme indiqué dans Tableau 8-3 à la page 46. L'instruction WDR - Watchdog Reset - réinitialise le Watchdog Timer. La minuterie de surveillance est également réinitialisée lorsqu'elle est désactivée et lorsqu'une réinitialisation de puce se produit. Dix périodes de cycle d'horloge différentes peuvent être sélectionnées pour déterminer la période de réinitialisation. Si la période de réinitialisation expire sans une autre réinitialisation du chien de garde, l'ATtiny25 / 45/85 se réinitialise et s'exécute à partir du vecteur de réinitialisation. Pour plus de détails sur le chronométrage de la réinitialisation du chien de garde, reportez-vous à Tableau 8-3 à la page 46.

Le Watchdog Timer peut également être configuré pour générer une interruption au lieu d'une réinitialisation. Cela peut être très utile lorsque vous utilisez le chien de garde pour vous réveiller après une mise hors tension.

Pour éviter une désactivation involontaire du chien de garde ou un changement involontaire de la période de temporisation, deux niveaux de sécurité différents sont sélectionnés par le fusible WDTON comme indiqué dans Tableau 8-1 Se référer à «Séquences chronométrées pour changer la configuration figuration du Watchdog Timer »à la page 43 pour plus de détails.

Tableau 8-1. Configuration WDT en fonction des paramètres de fusible de WDTON

WDTON Niveau de sécurité État initial WDT Comment désactiver le WDT Comment modifier le délai d'expiration
Non programmé 1 Désactivé Séquence chronométrée Aucune limitation
Programmé 2 Activé Toujours activé Séquence chronométrée

Illustration 8-7. Minuterie de chien de garde Chien de garde

Séquences chronométrées pour modifier la configuration de l'horloge de surveillance

La séquence de changement de configuration diffère légèrement entre les deux niveaux de sécurité. Des procédures distinctes sont décrites pour chaque niveau.

Niveau de sécurité 1 : Dans ce mode, le temporisateur de surveillance est initialement désactivé, mais peut être activé en écrivant le bit WDE sur un sans aucune restriction. Une séquence temporisée est nécessaire lors de la désactivation d'un Watchdog Timer activé. Pour désactiver un Watchdog Timer activé, la procédure suivante doit être suivie :

Dans la même opération, écrivez une logique dans WDCE et WDE. Un XNUMX logique doit être écrit dans WDE quelle que soit la valeur précédente du bit WDE.

Dans les quatre cycles d'horloge suivants, dans la même opération, écrivez les bits WDE et WDP comme vous le souhaitez, mais avec le bit WDCE effacé.

Niveau de sécurité 2 : Dans ce mode, le temporisateur de chien de garde est toujours activé et le bit WDE sera toujours lu comme un. Une séquence temporisée est nécessaire lors de la modification de la période de temporisation du chien de garde. Pour modifier le Watchdog Time-out, la procédure suivante doit être suivie :

Dans la même opération, écrivez une logique dans WDCE et WDE. Même si le WDE est toujours défini, le WDE doit être écrit dans un pour démarrer la séquence chronométrée.

Dans les quatre cycles d'horloge suivants, dans la même opération, écrivez les bits WDP comme vous le souhaitez, mais avec le bit WDCE effacé. La valeur écrite dans le bit WDE n'est pas pertinente.

CodeExample

Le code suivant example chier montre un assembly et une fonction C pour désactiver le WDT. Le EXample suppose que les interruptions sont contrôlées (par exemple, en désactivant les interruptions globalement) afin qu'aucune interruption ne se produise pendant l'exécution de ces fonctions.

Code d'assemblage Example(1)
WDT_off :

WDR

; Effacer WDRF dans MCUSR

ldi r16, (0<

MCUSR, r16

; Ecrire un logique dans WDCE et WDE

; Conserver l'ancien paramètre du prescaler pour éviter la réinitialisation involontaire du chien de garde

en r16, WDTCR

ou r16, (1<

sortie WDTCR, r16

; Désactivez WDT

ldi r16, (0<

sortie WDTCR, r16

ret

Code C Example(1)
annuler WDT_off(annuler)

{

_WDR ();

/* Effacer WDRF dans MCUSR */ MCUSR = 0x00

/* Ecrit un un logique dans WDCE et WDE */ WDTCR |= (1<

/ * Désactiver WDT * / WDTCR = 0x00;

}

Remarque: 1. Voir « Code Exampfichiers” à la page 6.

Description du registre

MCUSR - Registre d'état MCU

Le registre d'état MCU fournit des informations sur la source de réinitialisation qui a provoqué une réinitialisation MCU.

Peu 7 6 5 4 3 2 1 0
0x34 WDRF BORF EXTRF PORF MCUSR
Lecture/écriture R R R R R/W R/W R/W R/W

Valeur initiale 0 0 0 0 Voir la description du bit

Bits 7: 4 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bit 3 - WDRF: indicateur de réinitialisation du chien de garde

Ce bit est mis à XNUMX si une réinitialisation du chien de garde se produit. Le bit est réinitialisé par une réinitialisation à la mise sous tension ou en écrivant un zéro logique dans l'indicateur.

Bit 2 - BORF: indicateur de réinitialisation de Brown-out

Ce bit est mis à XNUMX si une réinitialisation de Brown-out se produit. Le bit est réinitialisé par une réinitialisation à la mise sous tension ou en écrivant un zéro logique dans l'indicateur.

Bit 1 - EXTRF: drapeau de réinitialisation externe

Ce bit est mis à XNUMX si une réinitialisation externe se produit. Le bit est réinitialisé par une réinitialisation à la mise sous tension ou en écrivant un zéro logique dans l'indicateur.

Bit 0 - PORF: indicateur de réinitialisation à la mise sous tension

Ce bit est mis à XNUMX si une réinitialisation à la mise sous tension se produit. Le bit est remis à zéro uniquement en écrivant un zéro logique dans l'indicateur.

Pour utiliser les indicateurs de réinitialisation pour identifier une condition de réinitialisation, l'utilisateur doit lire puis réinitialiser le MCUSR le plus tôt possible dans le programme. Si le registre est effacé avant qu'une autre réinitialisation ne se produise, la source de la réinitialisation peut être trouvée en examinant les indicateurs de réinitialisation.

WDTCR - Registre de contrôle de la minuterie de surveillance

Peu 7 6 5 4 3 2 1 0
0x21 WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
Lecture/écriture R/W R/W R/W R/W R/W R/W R/W R/W
Valeur initiale 0 0 0 0 X 0 0 0

Bit 7 - WDIF: indicateur d'interruption de temporisation du chien de garde

Ce bit est mis à XNUMX lorsqu'un délai d'expiration se produit dans le minuteur de surveillance et que le minuteur de surveillance est configuré pour une interruption. WDIF est effacé par le matériel lors de l'exécution du vecteur de gestion d'interruption correspondant. Alternativement, WDIF est effacé en écrivant un logique dans l'indicateur. Lorsque les bits I dans SREG et WDIE sont définis, l'interruption de temporisation du chien de garde est exécutée.

Bit 6 - WDIE: Activation de l'interruption du délai d'attente du chien de garde

Lorsque ce bit est écrit sur un, WDE est effacé et le bit I dans le registre d'état est défini, l'interruption de temporisation du chien de garde est activée. Dans ce mode, l'interruption correspondante est exécutée au lieu d'une réinitialisation si un timeout dans le Watchdog Timer se produit.

Si WDE est défini, WDIE est automatiquement effacé par le matériel lorsqu'un délai d'attente se produit. Ceci est utile pour conserver la sécurité de réinitialisation de Watchdog lors de l'utilisation de l'interruption. Une fois le bit WDIE effacé, le prochain délai d'expiration générera une réinitialisation. Pour éviter la réinitialisation du chien de garde, WDIE doit être défini après chaque interruption.

Tableau 8-2. Configuration du temporisateur de chien de garde

WDE WDIE État de la minuterie du chien de garde Action à l'expiration du délai
0 0 Arrêté Aucun
0 1 En cours d'exécution Interrompre
1 0 En cours d'exécution Réinitialiser
1 1 En cours d'exécution Interrompre

Bit 4 - WDCE: activation du changement de chien de garde

Ce bit doit être mis à XNUMX lorsque le bit WDE est écrit sur le zéro logique. Sinon, le chien de garde ne sera pas désactivé. Une fois écrit sur un, le matériel effacera ce bit après quatre cycles d'horloge. Reportez-vous à la description du bit WDE pour une procédure de désactivation du chien de garde. Ce bit doit également être mis à XNUMX lors du changement des bits du prescaler. Voir "Séquences chronométrées pour modifier la configuration de l'horloge de surveillance »à la page 43.

Bit 3 - WDE: activation du chien de garde

Lorsque le WDE est écrit dans la logique un, le minuteur de surveillance est activé et si le WDE est écrit dans le zéro logique, la fonction de minuterie de surveillance est désactivée. WDE ne peut être effacé que si le bit WDCE a le niveau logique un. Pour désactiver une minuterie Watchdog activée, la procédure suivante doit être suivie:

Dans la même opération, écrivez une logique dans WDCE et WDE. Un un logique doit être écrit dans WDE même s'il est défini sur un avant que l'opération de désactivation ne démarre.

Dans les quatre cycles d'horloge suivants, écrivez un 0 logique dans WDE. Cela désactive le chien de garde.

Au niveau de sécurité 2, il n'est pas possible de désactiver le Watchdog Timer, même avec l'algorithme décrit ci-dessus. Voir «Séquences chronométrées pour modifier la configuration de l'horloge de surveillance» à la page 43.

Au niveau de sécurité 1, WDE est remplacé par WDRF dans MCUSR. Voir «MCUSR - Registre d'état MCU» à la page 44 pour la description de WDRF. Cela signifie que WDE est toujours défini lorsque WDRF est défini. Pour effacer WDE, WDRF doit être effacé avant de désactiver le chien de garde avec la procédure décrite ci-dessus. Cette fonction garantit plusieurs réinitialisations pendant les conditions provoquant une panne et un démarrage en toute sécurité après la panne.

Remarque : Si le temporisateur de chien de garde ne sera pas utilisé dans l'application, il est important de passer par une procédure de désactivation du chien de garde lors de l'initialisation de l'appareil. Si le Watchdog est accidentellement activé, par example par un pointeur d'emballement ou une condition de baisse de tension, l'appareil sera réinitialisé, ce qui à son tour entraînera une nouvelle réinitialisation du chien de garde. Pour éviter cette situation, le logiciel d'application doit toujours effacer le drapeau WDRF et le bit de contrôle WDE dans la routine d'initialisation.

Bits 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 et 0

Les bits WDP [3: 0] déterminent le préréglage du Watchdog Timer lorsque le Watchdog Timer est activé. Les différentes valeurs de pré-mise à l'échelle et leurs périodes de temporisation correspondantes sont affichées dans Tableau 8-3.

Tableau 8-3. Watchdog Timer Prescale Select

WDP3 WDP2 WDP1 WDP0 Nombre de cycles d'oscillateur WDT Délai d'attente typique à VCC = 5.0 V
0 0 0 0 2K (2048) cycles 16 ms
0 0 0 1 4K (4096) cycles 32 ms
0 0 1 0 8K (8192) cycles 64 ms
0 0 1 1 16K (16384) cycles 0.125 s
0 1 0 0 32K (32764) cycles 0.25 s
0 1 0 1 64K (65536) cycles 0.5 s
0 1 1 0 128K (131072) cycles 1.0 s
0 1 1 1 256K (262144) cycles 2.0 s
1 0 0 0 512K (524288) cycles 4.0 s
1 0 0 1 1024K (1048576) cycles 8.0 s

Tableau 8-3. Watchdog Timer Prescale Select (Suite)

WDP3 WDP2 WDP1 WDP0 Nombre de cycles d'oscillateur WDT Délai d'attente typique à VCC = 5.0 V
1 0 1 0 Réservé(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Remarque : 1. S'il est sélectionné, l'un des paramètres valides sous 0b1010 sera utilisé.

interruptions

Cette section décrit les spécificités de la gestion des interruptions comme effectuée dans ATtiny25 / 45/85. Pour une explication générale de la gestion des interruptions AVR, reportez-vous à «Réinitialisation et gestion des interruptions» à la page 12.

Vecteurs d'interruption dans ATtiny25 / 45/85

Les vecteurs d'interruption d'ATtiny25 / 45/85 sont décrits dans Tableau 9-1ci-dessous.

Tableau 9-1. Vecteurs de réinitialisation et d'interruption

N ° de vecteur Adresse du programme Source Définition d'interruption
1 0x0000 RÉINITIALISER Broche externe, réinitialisation à la mise sous tension, réinitialisation de Brown-out, réinitialisation du chien de garde
2 0x0001 INT0 Demande d'interruption externe 0
3 0x0002 PCINT0 Demande d'interruption de changement de broche 0
4 0x0003 MINUTERIE1_COMPA Timer / Counter1 Comparer Match A
5 0x0004 MINUTERIE1_OVF Débordement de la minuterie / compteur1
6 0x0005 MINUTERIE0_OVF Débordement de la minuterie / compteur0
7 0x0006 EE_RDY EEPROM prêt
8 0x0007 ANA_COMP Comparateur analogique
9 0x0008 ADC Conversion ADC terminée
10 0x0009 MINUTERIE1_COMPB Timer / Counter1 Comparer Match B
11 0x000A MINUTERIE0_COMPA Timer / Counter0 Comparer Match A
12 0x000B MINUTERIE0_COMPB Timer / Counter0 Comparer Match B
13 0x000C WDT Délai d'expiration du chien de garde
14 0x000D USI_START USI DÉMARRER
15 0x000E USI_OVF Débordement USI

Si le programme n'active jamais une source d'interruption, les vecteurs d'interruption ne sont pas utilisés et le code de programme normal peut être placé à ces emplacements.

Une configuration typique et générale pour les adresses de vecteur d'interruption dans ATtiny25/45/85 est montrée dans le programme example ci-dessous.

Code d'assemblage Example
.org 0x0000 ; Définir l'adresse du prochain déclaration
RÉINITIALISER rjmp ; Adresse 0x0000
rjmp INT0_ISR ; Adresse 0x0001
rjmp PCINT0_ISR ; Adresse 0x0002
rjmp TIM1_COMPA_ISR ; Adresse 0x0003
rjmp TIM1_OVF_ISR ; Adresse 0x0004
rjmp TIM0_OVF_ISR ; Adresse 0x0005
rjmp EE_RDY_ISR ; Adresse 0x0006
rjmp ANA_COMP_ISR ; Adresse 0x0007
rjmp ADC_ISR ; Adresse 0x0008
rjmp TIM1_COMPB_ISR ; Adresse 0x0009
rjmp TIM0_COMPA_ISR ; Adresse 0x000A
rjmp TIM0_COMPB_ISR ; Adresse 0x000B
rjmpWDT_ISR ; Adresse 0x000C
rjmpUSI_START_ISR ; Adresse 0x000D
rjmp USI_OVF_ISR ; Adresse 0x000E
RÉINITIALISER: ; Démarrage du programme principal
; Adresse 0x000F

Remarque : voir « Code Exampfichiers” à la page 6.

Interruptions externes

Les interruptions externes sont déclenchées par la broche INT0 ou l'une des broches PCINT [5: 0]. Observez que, si elles sont activées, les interruptions se déclenchent même si les broches INT0 ou PCINT [5: 0] sont configurées comme sorties. Cette fonction permet de générer une interruption logicielle. Le changement de broche interrompt PCI se déclenchera si une broche PCINT [5: 0] activée bascule. Le registre PCMSK contrôle quelles broches contribuent aux interruptions de changement de broches. Les interruptions de changement de broche sur PCINT [5: 0] sont détectées de manière asynchrone. Cela implique que ces interruptions peuvent être utilisées pour réveiller la pièce également à partir de modes de veille autres que le mode veille.

Les alarmes INT0 peuvent être déclenchées par un front descendant ou montant ou par un niveau bas. Ceci est configuré comme indiqué dans la spécification du registre de contrôle MCU - MCUCR. Lorsque l'interruption INT0 est activée et configurée comme déclenchée au niveau, l'interruption se déclenchera tant que la broche est maintenue au niveau bas. Notez que la reconnaissance des interruptions sur front descendant ou montant sur INT0 nécessite la présence d'une horloge d'E / S, décrite dans "Systèmes d'horloge et leur distribution" sur page 23.

Interruption de bas niveau

Une interruption de bas niveau sur INT0 est détectée de manière asynchrone. Cela implique que cette interruption peut être utilisée pour réveiller la pièce également à partir de modes veille autres que le mode veille. L'horloge d'E / S est arrêtée dans tous les modes de veille, à l'exception du mode de veille.

Notez que si une interruption déclenchée par niveau est utilisée pour le réveil à partir d'une mise hors tension, le niveau requis doit être maintenu suffisamment longtemps pour que le MCU termine le réveil pour déclencher l'interruption de niveau. Si le niveau disparaît avant la fin du temps de démarrage, le MCU se réveillera toujours, mais aucune interruption ne sera générée. Le temps de démarrage est défini par les fusibles SUT et CKSEL comme décrit dans «Options d'horloge système et d'horloge» à la page 23.

Si le niveau bas sur la broche d'interruption est supprimé avant que l'appareil ne se soit réveillé, l'exécution du programme ne sera pas détournée vers la routine de service d'interruption mais continuera à partir de l'instruction suivant la commande SLEEP.

Moment d'interruption de changement de broche

Un example fichier de synchronisation d'une interruption de changement de broche est affiché dans Figure 9-1.

Description du registre

MCUCR - Registre de contrôle MCU

Le registre de contrôle d'interruption externe A contient des bits de contrôle pour le contrôle de détection d'interruption.

Peu 7 6 5 4 3 2 1 0
0x35 CORPS POUD SE SM1 SM0 CORPS ISC01 ISC00 MCUCR
Lecture/écriture R R/W R/W R/W R/W R R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

Bits 1: 0 - ISC0 [1: 0]: Contrôle de détection d'interruption 0 Bit 1 et Bit 0

L'interruption externe 0 est activée par la broche externe INT0 si l'indicateur I SREG et le masque d'interruption correspondant sont définis. Le niveau et les fronts sur la broche INT0 externe qui activent l'interruption sont définis dans Tableau 9-2. La valeur sur la broche INT0 est sampled avant de détecter les bords. Si une interruption par front ou par basculement est sélectionnée, les impulsions qui durent plus d'une période d'horloge génèrent une interruption. Il n'est pas garanti que des impulsions plus courtes génèrent une interruption. Si une interruption de niveau bas est sélectionnée, le niveau bas doit être maintenu jusqu'à la fin de l'instruction en cours d'exécution pour générer une interruption.

Tableau 9-2. Commande de détection d'interruption 0

ISC01 ISC00 Description
0 0 Le niveau bas de INT0 génère une demande d'interruption.
0 1 Tout changement logique sur INT0 génère une demande d'interruption.
1 0 Le front descendant de INT0 génère une demande d'interruption.
1 1 Le front montant de INT0 génère une demande d'interruption.

GIMSK - Registre de masque d'interruption général

Peu 7 6 5 4 3 2 1 0
0x3B INT0 PCIE GIMSK
Lecture/écriture R R/W R/W R R R R R
Valeur initiale 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bit 6 - INT0: demande d'interruption externe 0 activée

Lorsque le bit INT0 est défini (un) et le bit I dans le registre d'état (SREG) est défini (un), l'interruption de broche externe est activée. Les bits 0/1 de contrôle de détection d'interruption 0 (ISC01 et ISC00) dans le registre de contrôle MCU (MCUCR) définissent si l'interruption externe est activée sur front montant et / ou descendant de la broche INT0 ou du niveau détecté. L'activité sur la broche provoquera une demande d'interruption même si INT0 est configuré comme sortie. L'interruption correspondante de la demande d'interruption externe 0 est exécutée à partir du vecteur d'interruption INT0.

Bit 5 - PCIE: activation de l'interruption de changement de broche

Lorsque le bit PCIE est défini (un) et le bit I dans le registre d'état (SREG) est défini (un), l'interruption de changement de broche est activée. Tout changement sur une broche PCINT [5: 0] activée provoquera une interruption. L'interruption correspondante de la demande d'interruption de changement de broche est exécutée à partir du vecteur d'interruption PCI. Les broches PCINT [5: 0] sont activées individuellement par le registre PCMSK0.

GIFR - Registre général des indicateurs d'interruption

Peu 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
Lecture/écriture R R/W R/W R R R R R
Valeur initiale 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bit 6 - INTF0: indicateur d'interruption externe 0

Lorsqu'un front ou un changement de logique sur la broche INT0 déclenche une demande d'interruption, INTF0 devient activé (un). Si le bit I dans SREG et le bit INT0 dans GIMSK sont définis (un), la MCU sautera au vecteur d'interruption correspondant. Le drapeau est effacé lorsque le programme d'interruption est exécuté. Alternativement, l'indicateur peut être effacé en y écrivant un indicateur logique. Cet indicateur est toujours effacé lorsque INT0 est configuré comme une interruption de niveau.

Bit 5 - PCIF: indicateur d'interruption de changement de broche

Lorsqu'un changement de logique sur une broche PCINT [5: 0] déclenche une demande d'interruption, PCIF est activé (un). Si le bit I dans SREG et le bit PCIE dans GIMSK sont définis (un), le MCU passera au vecteur d'interruption correspondant. Le drapeau est effacé lorsque le programme d'interruption est exécuté. Alternativement, l'indicateur peut être effacé en y écrivant un indicateur logique.

PCMSK - Registre de masque de changement de broche

Peu 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
Lecture/écriture R R R/W R/W R/W R/W R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

Bits 7: 6 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bits 5: 0 - PCINT [5: 0]: Masque d'activation de changement de broche 5: 0

Chaque bit PCINT [5: 0] sélectionne si l'interruption de changement de broche est activée sur la broche d'E / S correspondante. Si PCINT [5: 0] est défini et que le bit PCIE dans GIMSK est défini, l'interruption de changement de broche est activée sur la broche d'E / S correspondante. Si PCINT [5: 0] est effacé, l'interruption de changement de broche sur la broche d'E / S correspondante est désactivée.

Ports d'E/S

Introduction

Tous les ports AVR ont une véritable fonctionnalité de lecture-modification-écriture lorsqu'ils sont utilisés comme ports d'E/S numériques généraux. Cela signifie que la direction d'une broche de port peut être modifiée sans changer involontairement la direction d'une autre broche avec les instructions SBI et CBI. La même chose s'applique lors de la modification de la valeur du variateur (si configurée en tant que sortie) ou de l'activation/désactivation des résistances de rappel (si configurées en tant qu'entrée). Chaque tampon de sortie a des caractéristiques d'entraînement symétriques avec à la fois une capacité de puits et de source élevée. Le pilote de broche est suffisamment puissant pour piloter directement les écrans LED. Toutes les broches du port ont des résistances de rappel sélectionnables individuellement avec une alimentation-voltage résistance invariante. Toutes les broches d'E / S ont des diodes de protection à la fois VCC et Ground comme indiqué dans Figure 10-1. Se référer à «Caractéristiques électriques» à la page 161 pour une liste complète des paramètres.

Illustration 10-1. Schéma équivalent des broches d'E/S

Fig10

Tous les registres et références de bits de cette section sont écrits sous une forme générale. Un « x » minuscule représente la lettre de numérotation du port et un « n » minuscule représente le numéro de bit. Cependant, lors de l'utilisation du registre ou des définitions de bits dans un programme, la forme précise doit être utilisée. Par example, PORTB3 pour le bit no. 3 dans le port B, documenté ici généralement comme PORTxn. Les registres d'E/S physiques et les emplacements des bits sont répertoriés dans «Enregistrer la description» sur page 64.

Trois emplacements d'adresses de mémoire d'E / S sont alloués pour chaque port, un pour le registre de données - PORTx, le registre de direction des données - DDRx et les broches d'entrée de port - PINx. L'emplacement d'E / S des broches d'entrée du port est en lecture seule, tandis que le registre de données et le registre de direction des données sont en lecture / écriture. Cependant, l'écriture d'un un logique sur un bit dans le registre PINx entraînera une bascule dans le bit correspondant dans le registre de données. De plus, le bit Pull-up Disable - PUD dans MCUCR désactive la fonction pull-up pour toutes les broches de tous les ports lorsqu'il est défini.

L'utilisation du port d'E / S comme E / S numérique générale est décrite dans «Ports comme E / S numériques générales» à la page 53. La plupart des broches de port sont multiplexées avec des fonctions alternatives pour les fonctionnalités périphériques de l'appareil. Comment chaque fonction alternative interfère avec la broche du port est décrite dans «Fonctions de port alternatif» à la page 57. Reportez-vous aux sections individuelles des modules pour une description complète des autres fonctions.

Notez que l'activation de la fonction alternative de certaines broches du port n'affecte pas l'utilisation des autres broches du port en tant qu'E / S numériques générales.

Ports comme E / S numériques générales

Les ports sont des ports d'E / S bidirectionnels avec des pull-ups internes en option. Figure 10-2 montre une description fonctionnelle d'une broche de port d'E / S, ici appelée génériquement Pxn.

Illustration 10-2. E/S numériques générales(1)

Fig10

Configurer la broche

Chaque broche de port se compose de trois bits de registre: DDxn, PORTxn et PINxn. Comme représenté sur la «Enregistrer la description» sur page 64, les bits DDxn sont accessibles à l'adresse d'E / S DDRx, les bits PORTxn à l'adresse d'E / S PORTx et les bits PINxn à l'adresse d'E / S PINx.

Le bit DDxn dans le registre DDRx sélectionne la direction de cette broche. Si DDxn est écrit en logique un, Pxn est configuré comme broche de sortie. Si DDxn est écrit zéro logique, Pxn est configuré comme broche d'entrée.

Si PORTxn est écrit en logique un lorsque la broche est configurée comme broche d'entrée, la résistance de rappel vers le haut est activée. Pour désactiver la résistance pull-up, PORTxn doit être écrit zéro logique ou la broche doit être configurée comme broche de sortie. Les broches du port sont tri-déclarées lorsque la condition de réinitialisation devient active, même si aucune horloge ne fonctionne.

Si PORTxn est écrit en logique un lorsque la broche est configurée en tant que broche de sortie, la broche du port est mise au niveau haut (un). Si PORTxn est écrit zéro logique lorsque la broche est configurée comme broche de sortie, la broche du port est amenée à l'état bas (zéro).

Basculer la broche

L'écriture d'un un logique sur PINxn fait basculer la valeur de PORTxn, indépendamment de la valeur de DDRxn. Notez que l'instruction SBI peut être utilisée pour basculer un seul bit dans un port.

Commutation entre l'entrée et la sortie

Lors de la commutation entre trois états ({DDxn, PORTxn} = 0b00) et sortie haute ({DDxn, PORTxn} = 0b11), un état intermédiaire avec pull-up activé {DDxn, PORTxn} = 0b01) ou sortie basse ({DDxn, PORTxn} = 0b10) doit se produire. Normalement, l'état activé de pull-up est tout à fait acceptable, car un environnement à haute impédance ne remarquera pas la différence entre un haut pilote fort et un pull-up. Si ce n'est pas le cas, le bit PUD dans le registre MCUCR peut être défini pour désactiver tous les pull-ups dans tous les ports.

La commutation entre l'entrée avec pull-up et la sortie basse génère le même problème. L'utilisateur doit utiliser le tri-état ({DDxn, PORTxn} = 0b00) ou l'état de sortie haut ({DDxn, PORTxn} = 0b10) comme étape intermédiaire.

Tableau 10-1 résume les signaux de commande pour la valeur de la broche.

Tableau 10-1. Configurations des broches des ports

JJxn PORTxn POUD

(dans MCUCR)

E/S Tirer vers le haut Commentaire
0 0 X Saisir Non Trois états (Hi-Z)
0 1 0 Saisir Oui Pxn fournira le courant si ext. tiré bas.
0 1 1 Saisir Non Trois états (Hi-Z)
1 0 X Sortir Non Sortie faible (évier)
1 1 X Sortir Non Sortie haute (source)

Lecture de la valeur de la broche

Indépendamment du réglage du bit de direction des données DDxn, la broche du port peut être lue via le bit de registre PINxn. Comme représenté sur la Figure 10-2, le bit de registre PINxn et le verrou précédent constituent un synchroniseur. Ceci est nécessaire pour éviter la métastabilité si la broche physique change de valeur près du bord de l'horloge interne, mais cela introduit également un retard. Figure 10-3 montre un chronogramme de la synchronisation lors de la lecture d'une valeur de broche appliquée en externe. Les délais de propagation maximum et minimum sont respectivement notés tpd,max et tpd,min.

Considérez la période d'horloge commençant peu de temps après le premier front descendant de l'horloge système. Le verrou est fermé lorsque l'horloge est basse et devient transparent lorsque l'horloge est haute, comme indiqué par la région ombrée du signal «SYNC LATCH». La valeur du signal est verrouillée lorsque l'horloge système devient basse. Il est cadencé dans le registre PINxn au front d'horloge positif suivant. Comme indiqué par les deux flèches tpd, max et tpd, min, une seule transition de signal sur la broche sera retardée entre 1/XNUMX et XNUMX½ période d'horloge système en fonction du moment de l'affirmation.

Lors de la lecture d'une valeur de broche affectée par le logiciel, une instruction nop doit être insérée comme indiqué dans Figure 10-4. L'instruction out définit le signal «SYNC LATCH» sur le front montant de l'horloge. Dans ce cas, le retard tpd à travers le synchroniseur est une période d'horloge système.

Le code suivant example montre comment définir les broches 0 et 1 du port B haut, 2 et 3 bas, et définir les broches du port de 4 à 5 comme entrée avec un pull-up attribué à la broche 4 du port. Les valeurs de broche résultantes sont lues à nouveau, mais comme discuté précédemment, une instruction nop est incluse pour pouvoir relire la valeur récemment attribuée à certaines des broches.

Code d'assemblage Example(1)

; Définissez les pull-ups et réglez les sorties sur haut

; Définir les directions pour les broches de port

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

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

sortie PORTB,r16

sortie DDRB, r17

; Insérer nop pour la synchronisation

non

; Lire les broches du port

en r16, PINB

Remarque : Pour le programme d'assemblage, deux registres temporaires sont utilisés pour minimiser le temps à partir duquel les pull-ups sont définis sur les broches 0, 1 et 4, jusqu'à ce que les bits de direction soient correctement définis, définissant les bits 2 et 3 comme bas et redéfinissant les bits 0 et 1 comme haut-parleurs puissants.

Code C Example
caractère non signé i ;

/* Définir les pull-ups et mettre les sorties au niveau haut */

/* Définir les directions pour les broches du port */ PORTB = (1<

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

/* Insérer nop pour la synchronisation*/

_NOP ();

/* Lire les broches du port */ i = PINB ;

Activation de l'entrée numérique et modes de veille

Comme indiqué dans Figure 10-2, le signal d'entrée numérique peut être clampà la masse à l'entrée du déclencheur de schmitt. Le signal noté SLEEP sur la figure est défini par le contrôleur de veille MCU en mode hors tension pour éviter une consommation d'énergie élevée si certains signaux d'entrée restent flottants ou ont un niveau de signal analogique proche de VCC/2.

SLEEP est remplacé pour les broches de port activées en tant que broches d'interruption externes. Si la demande d'interruption externe n'est pas activée, SLEEP est également actif pour ces broches. SLEEP est également remplacé par diverses autres fonctions alternatives comme décrit dans «Fonctions de port alternatif» à la page 57.

Si un niveau logique haut (« un ») est présent sur une broche d'interruption externe asynchrone configurée comme « Interruption sur front montant, front descendant ou tout changement de logique sur la broche » alors que l'interruption externe n'est pas activée, le drapeau d'interruption externe correspondant être défini lors de la reprise du mode veille mentionné ci-dessus, car le clamping dans ces modes de sommeil produit le changement logique demandé.

Broches non connectées

Si certaines broches ne sont pas utilisées, il est recommandé de s'assurer que ces broches ont un niveau défini. Même si la plupart des entrées numériques sont désactivées dans les modes de sommeil profond comme décrit ci-dessus, les entrées flottantes doivent être évitées pour réduire la consommation de courant dans tous les autres modes où les entrées numériques sont activées (réinitialisation, mode actif et mode veille).

La méthode la plus simple pour garantir un niveau défini d'une broche inutilisée consiste à activer le pull-up interne. Dans ce cas, le pull-up sera désactivé lors de la réinitialisation. Si une faible consommation d'énergie pendant la réinitialisation est importante, il est recommandé d'utiliser un pull-up ou un pulldown externe. La connexion directe des broches inutilisées à VCC ou GND n'est pas recommandée, car cela peut provoquer des courants excessifs si la broche est accidentellement configurée comme une sortie.

Fonctions de port alternatives

La plupart des broches de port ont des fonctions alternatives en plus d'être des E / S numériques générales. Figure 10-5 montre comment les signaux de contrôle de la broche de port du simplifié Figure 10-2 peut être remplacé par des fonctions alternatives. Les signaux de priorité peuvent ne pas être présents dans toutes les broches de port, mais la figure sert de description générique applicable à toutes les broches de port de la famille de microcontrôleurs AVR.

Tableau 10-2. Description générique des signaux prioritaires pour les fonctions alternatives

Nom du signal Nom et prénom Description
PUOE Activer le remplacement de pull-up Si ce signal est activé, la validation de pull-up est commandée par le signal PUOV. Si ce signal est effacé, le pull-up est activé lorsque

{DDxn, PORTxn, PUD} = 0b010.

PUOV Valeur de remplacement de pull-up Si PUOE est défini, le pull-up est activé / désactivé lorsque PUOV est défini / effacé, quel que soit le réglage des bits de registre DDxn, PORTxn et PUD.
DDOE Activer le remplacement de la direction des données Si ce signal est défini, l'activation du pilote de sortie est contrôlée par le signal DDOV. Si ce signal est effacé, le pilote de sortie est activé par le bit DDxn Register.
DDOV Valeur de remplacement de la direction des données Si DDOE est défini, le pilote de sortie est activé / désactivé lorsque DDOV est défini / effacé, quel que soit le paramètre du bit DDxn Register.
PVOE Activer le remplacement de la valeur de port Si ce signal est défini et que le pilote de sortie est activé, la valeur du port est contrôlée par le signal PVOV. Si PVOE est effacé et que le pilote de sortie est activé, la valeur du port est contrôlée par le bit de registre PORTxn.
PVOV Valeur de remplacement de la valeur de port Si PVOE est défini, la valeur du port est définie sur PVOV, quel que soit le paramètre du bit de registre PORTxn.
Prise de force Activer le remplacement de bascule de port Si PTOE est défini, le bit de registre PORTxn est inversé.
DIEOE Activation de la neutralisation de l'entrée numérique Si ce bit est défini, l'activation de l'entrée numérique est contrôlée par le signal DIEOV. Si ce signal est effacé, l'activation de l'entrée numérique est déterminée par l'état du MCU (mode normal, mode veille).
DIÉOV Valeur de neutralisation de l'activation de l'entrée numérique Si DIEOE est réglé, l'entrée numérique est activée / désactivée lorsque DIEOV est réglé / effacé, quel que soit l'état de la MCU (mode normal, mode veille).
DI Entrée numérique Il s'agit de l'entrée numérique pour alterner les fonctions. Sur la figure, le signal est connecté à la sortie du déclencheur schmitt mais avant le synchroniseur. À moins que l'entrée numérique ne soit utilisée comme source d'horloge, le module avec la fonction alternative utilisera son propre synchroniseur.
Tout-en-un Entrée / sortie analogique Il s'agit de l'entrée / sortie analogique vers / depuis des fonctions alternatives. Le signal est connecté directement au pad et peut être utilisé dans les deux sens.

Les sous-sections suivantes décrivent brièvement les fonctions alternatives pour chaque port et relient les signaux de priorité à la fonction alternative. Reportez-vous à la description de la fonction alternative pour plus de détails.

Fonctions alternatives du port B

Les broches du port B avec une fonction alternative sont indiquées dans Tableau 10-3.

Tableau 10-3. Fonctions alternatives des broches du port B

Broche de port Fonction alternative
PB5

RÉINITIALISER: réinitialiser la broche

dW: debugWIRE I / O ADC0: Canal d'entrée ADC 0

PCINT5: interruption de changement de broche, source 5

PB4 XTAL2: Sortie de l'oscillateur à cristal CLKO: Sortie d'horloge système ADC2: Canal d'entrée ADC 2

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

PB3 XTAL1 : entrée d'oscillateur à cristal CLKI : entrée d'horloge externe ADC3 : canal d'entrée ADC 3

OC1B: Minuterie / compteur complémentaire 1 Comparer la sortie Match B PCINT3: Interruption de changement de broche 0, Source 3

PB2 SCK: Entrée d'horloge série ADC1: Canal d'entrée ADC 1

T0: Minuterie / Compteur0 Source d'horloge USCK: Horloge USI (Mode trois fils) SCL: Horloge USI (Mode deux fils) INT0: Interruption externe 0 Entrée PCINT2: Interruption de changement de broche 0, Source 2

PB1 MISO: Entrée de données maître SPI / Sortie de données esclave AIN1: Comparateur analogique, Entrée négative OC0B: Minuterie / Compteur0 Comparaison Match B Sortie OC1A: Minuterie / Compteur1 Comparaison Match A Sortie DO: Sortie de données USI (Mode trois fils) PCINT1: Interruption de changement de broche 0, source 1
PB0 MOSI :: Sortie de données maître SPI / Entrée de données esclave AIN0: comparateur analogique, entrée positive

OC0A : Timer/Counter0 Compare Match A output

OC1A: Minuterie / Compteur complémentaire1 Comparer la sortie Match A DI: Entrée de données USI (mode trois fils)

SDA: entrée de données USI (mode deux fils) AREF: référence analogique externe PCINT0: interruption de changement de broche 0, source 0

Port B, Bit 5 - RESET / dW / ADC0 / PCINT5

RESET: L'entrée de réinitialisation externe est active au niveau bas et activée en déprogrammant («1») le fusible RSTDISBL. Pullup est activé et le pilote de sortie et l'entrée numérique sont désactivés lorsque la broche est utilisée comme broche RESET.

dW: Lorsque le fusible debugWIRE Enable (DWEN) est programmé et que les bits de verrouillage ne sont pas programmés, le système debugWIRE de l'équipement cible est activé. La broche du port RESET est configurée comme une broche d'E / S bidirectionnelle fil-ET (drain ouvert) avec pull-up activé et devient la passerelle de communication entre la cible et l'émulateur.

ADC0 : convertisseur analogique-numérique, canal 0.

PCINT5: Source d'interruption de changement de broche 5.

Port B, bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: broche 2 de l'oscillateur d'horloge de puce. Utilisée comme broche d'horloge pour toutes les sources d'horloge de puce à l'exception de l'oscillateur RC à calibrage interne et de l'horloge externe. Lorsqu'elle est utilisée comme broche d'horloge, la broche ne peut pas être utilisée comme broche d'E / S. Lors de l'utilisation d'un oscillateur RC interne étalonnable ou d'une horloge externe comme source d'horloge à puce, PB4 sert de broche d'E / S ordinaire.

CLKO: L'horloge système séparée peut être émise sur la broche PB4. L'horloge système divisée sera émise si le fusible CKOUT est programmé, quels que soient les réglages PORTB4 et DDB4. Il sera également émis lors de la réinitialisation.

ADC2 : convertisseur analogique-numérique, canal 2.

OC1B: Output Compare Match output: La broche PB4 peut servir de sortie externe pour la comparaison Timer / Counter1 Compare Match B lorsqu'elle est configurée comme sortie (jeu DDB4). La broche OC1B est également la broche de sortie pour la fonction de minuterie du mode PWM.

PCINT4: Source d'interruption de changement de broche 4.

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

XTAL1: broche 1 de l'oscillateur d'horloge de puce. Utilisée pour toutes les sources d'horloge de puce à l'exception de l'oscillateur RC interne calibrable. Lorsqu'elle est utilisée comme broche d'horloge, la broche ne peut pas être utilisée comme broche d'E / S.

CLKI: Entrée d'horloge d'une source d'horloge externe, voir «Horloge externe» à la page 26.

ADC3 : convertisseur analogique-numérique, canal 3.

OC1B: Sortie de comparaison de sortie inversée Sortie de correspondance de comparaison: la broche PB3 peut servir de sortie externe pour la correspondance de comparaison de minuterie / compteur1 B lorsqu'elle est configurée en tant que sortie (jeu DDB3). La broche OC1B est également la broche de sortie inversée pour la fonction de minuterie du mode PWM.

PCINT3: Source d'interruption de changement de broche 3.

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

SCK: sortie d'horloge principale, broche d'entrée d'horloge esclave pour le canal SPI. Lorsque le SPI est activé en tant qu'esclave, cette broche est configurée en tant qu'entrée quel que soit le réglage de DDB2. Lorsque le SPI est activé en tant que maître, la direction des données de cette broche est contrôlée par DDPB2. Lorsque la broche est forcée par le SPI à être une entrée, le pull-up peut toujours être contrôlé par le bit PORTB2.

ADC1 : convertisseur analogique-numérique, canal 1.

T0: Source du compteur Timer / Counter0.

USCK: Horloge d'interface série universelle en mode trois fils.

SCL: Horloge série en mode deux fils pour le mode USI à deux fils.

INT0: Source d'interruption externe 0.

PCINT2: Source d'interruption de changement de broche 2.

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

MISO: entrée de données maître, broche de sortie de données esclaves pour canal SPI. Lorsque le SPI est activé en tant que maître, cette broche est configurée en tant qu'entrée quel que soit le réglage de DDB1. Lorsque le SPI est activé en tant qu'esclave, la direction des données de cette broche est contrôlée par DDB1. Lorsque la broche est forcée par le SPI à être une entrée, le pull-up peut toujours être contrôlé par le bit PORTB1.

AIN1: Entrée négative du comparateur analogique. Configurez la broche du port comme entrée avec le pull-up interne désactivé pour éviter que la fonction du port numérique n'interfère avec la fonction du comparateur analogique.

OC0B: Sortie de la sortie de comparaison de correspondance. La broche PB1 peut servir de sortie externe pour la comparaison Timer / Counter0 Compare Match B. La broche PB1 doit être configurée comme sortie (DDB1 set (un)) pour remplir cette fonction. La broche OC0B est également la broche de sortie pour la fonction de minuterie du mode PWM.

OC1A: Output Compare Match output: La broche PB1 peut servir de sortie externe pour la comparaison Timer / Counter1 Compare Match B lorsqu'elle est configurée en tant que sortie (jeu DDB1). La broche OC1A est également la broche de sortie pour la fonction de minuterie du mode PWM.

DO: Sortie de données d'interface série universelle en mode trois fils. Mode trois fils La sortie de données remplace la valeur de PORTB1 et est envoyée au port lorsque le bit de direction des données DDB1 est défini (un). PORTB1 active toujours le pull-up, si la direction est entrée et PORTB1 est défini (un).

PCINT1: Source d'interruption de changement de broche 1.

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

MOSI: sortie de données maître SPI, entrée de données esclave pour canal SPI. Lorsque le SPI est activé en tant qu'esclave, cette broche est configurée en tant qu'entrée quel que soit le réglage de DDB0. Lorsque le SPI est activé en tant que maître, la direction des données de cette broche est contrôlée par DDB0. Lorsque la broche est forcée par le SPI à être une entrée, le pull-up peut toujours être contrôlé par le bit PORTB0.

AIN0: Entrée positive du comparateur analogique. Configurez la broche du port comme entrée avec le pull-up interne désactivé pour éviter que la fonction du port numérique n'interfère avec la fonction du comparateur analogique.

OC0A: Sortie de comparaison de sortie de correspondance. La broche PB0 peut servir de sortie externe pour la correspondance Timer / Counter0 Compare A lorsqu'elle est configurée comme sortie (DDB0 set (un)). La broche OC0A est également la broche de sortie pour la fonction de minuterie du mode PWM.

OC1A: Sortie de comparaison de sortie inversée Sortie de correspondance de comparaison: la broche PB0 peut servir de sortie externe pour la correspondance de comparaison de minuterie / compteur1 B lorsqu'elle est configurée en tant que sortie (jeu DDB0). La broche OC1A est également la broche de sortie inversée pour la fonction de minuterie du mode PWM.

SDA: données d'interface série en mode deux fils.

AREF : Référence analogique externe pour ADC. Le pullup et le pilote de sortie sont désactivés sur PB0 lorsque la broche est utilisée comme référence externe ou Vol internetage Référence avec condensateur externe sur la broche AREF.

DI: Entrée de données en mode USI à trois fils. Le mode USI à trois fils ne remplace pas les fonctions normales du port, la broche doit donc être configurée en tant qu'entrée pour la fonction DI.

PCINT0: Source d'interruption de changement de broche 0.

Tableau 10-4 et Tableau 10-5 associer les fonctions alternatives du port B aux signaux de priorité indiqués dans Figure 10-5 sur page 58.

Tableau 10-4. Remplacement des signaux pour les fonctions alternatives dans PB[5:3]

Nom du signal PB5 / RESET / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RSTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Transmettre 0 0
PVOE 0 Activation OC1B

Activation OC1B

PVOV 0 OC1B OC1B
Prise de force 0 0 0
DIEOE

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

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIÉOV ADC0D ADC2D ADC3D
DI Entrée PCINT5 Entrée PCINT4 Entrée PCINT3
Tout-en-un Entrée RESET, entrée ADC0 Entrée ADC2 Entrée ADC3

Remarque : lorsque le fusible est « 0 » (programmé).

Tableau 10-5. Remplacement des signaux pour les fonctions alternatives dans PB[2:0]

Nom du signal PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AREF/OC1A/OC0A/

PCINT0

PUOE 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 + PORTB0) • DDB0

PVOE USI_TWO_WIRE • DDB2 OC0B Activer + OC1A Activer + USI_THREE_WIRE

Activation OC0A + Activation OC1A + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + FAIRE

OC0A + OC1A

Prise de force USITC 0 0
DIEOE PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
DIÉOV ADC1D AIN1D AIN0D
DI T0 / USCK / SCL / INT0 /

Entrée PCINT2

Entrée PCINT1 Entrée DI / SDA / PCINT0
Tout-en-un Entrée ADC1 Entrée négative du comparateur analogique Entrée positive du comparateur analogique

Description du registre

MCUCR - Registre de contrôle MCU

Peu 7 6 5 4 3 2 1 0
0x35 CORPS POUD SE SM1 SM0 CORPS ISC01 ISC00 MCUCR
Lecture/écriture R R/W R/W R/W R/W R R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

Bit 6 - PUD: désactivation de la traction vers le haut

Lorsque ce bit est écrit sur un, les pull-ups dans les ports d'E / S sont désactivés même si les registres DDxn et PORTxn sont configurés pour activer les pull-ups ({DDxn, PORTxn} = 0b01). Voir «Configuration de la broche» à la page 54 pour plus de détails sur cette fonctionnalité.

PORTB - Registre de données du port B

Peu 7 6 5 4 3 2 1 0
0x18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
Lecture/écriture R R R/W R/W R/W R/W R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

DDRB - Registre de direction des données du port B

Peu 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
Lecture/écriture R R R/W R/W R/W R/W R/W R/W
Valeur initiale 0 0 0 0 0 0 0 0

PINB - Adresse des broches d'entrée du port B

Peu 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 NIP
Lecture/écriture R R R/W R/W R/W R/W R/W R/W
Valeur initiale 0 0 N / A N / A N / A N / A N / A N / A

Minuterie / compteur 8 bits 0 avec PWM

Caractéristiques

Deux unités de comparaison de sortie indépendantes

Registres de comparaison de sortie à double tampon

Effacer le minuteur lors de la comparaison de correspondance (rechargement automatique)

Modulateur de largeur d'impulsion (PWM) à correction de phase sans pépin

Période PWM variable

Générateur de fréquence

Trois sources d'interruption indépendantes (TOV0, OCF0A et OCF0B)

Surview

Timer / Counter0 est un module de minuterie / compteur 8 bits à usage général, avec deux unités de comparaison de sortie indépendantes et avec prise en charge PWM. Il permet une synchronisation précise de l'exécution du programme (gestion des événements) et la génération d'ondes.

Un schéma de principe simplifié de la minuterie / compteur 8 bits est présenté dans Figure 11-1. Pour l'emplacement réel des broches d'E / S, reportez-vous à «Brochage ATtiny25 / 45/85» à la page 2. Les registres d'E / S accessibles par le processeur, y compris les bits d'E / S et les broches d'E / S, sont indiqués en gras. Le registre d'E / S spécifique à l'appareil et les emplacements des bits sont répertoriés dans le «Description du registre» à la page 77.

Le temporisateur/compteur (TCNT0) et les registres de comparaison de sortie (OCR0A et OCR0B) sont des registres 8 bits. Les signaux de demande d'interruption (abrégés en Int.Req. sur la figure) sont tous visibles dans le registre d'indicateurs d'interruption de minuterie (TIFR). Toutes les interruptions sont masquées individuellement avec le registre de masque d'interruption de minuterie (TIMSK). TIFR et TIMSK ne sont pas représentés sur la figure.

Le temporisateur/compteur peut être cadencé en interne, via le prédiviseur ou par une source d'horloge externe sur la broche T0. Le bloc logique de sélection d'horloge contrôle la source d'horloge et le front que le temporisateur/compteur utilise pour incrémenter (ou décrémenter) sa valeur. Le minuteur/compteur est inactif lorsqu'aucune source d'horloge n'est sélectionnée. La sortie de la logique de sélection d'horloge est appelée horloge de minuterie (clkT0).

Les registres de comparaison de sortie à double tampon (OCR0A et OCR0B) sont comparés à la valeur de la minuterie / compteur à tout moment. Le résultat de la comparaison peut être utilisé par le générateur de signaux pour générer une sortie PWM ou à fréquence variable sur les broches de comparaison de sortie (OC0A et OC0B). Voir «Unité de comparaison de sortie» à la page 69. pour plus de détails. L'événement Compare Match définira également l'indicateur de comparaison (OCF0A ou OCF0B) qui peut être utilisé pour générer une demande d'interruption de comparaison de sortie.

Définitions

De nombreuses références de registres et de bits dans cette section sont écrites sous une forme générale. Un «n» minuscule remplace le numéro de la minuterie / compteur, dans ce cas 0. Un «x» minuscule remplace l'unité de comparaison de sortie, dans ce cas l'unité de comparaison A ou l'unité de comparaison B. Cependant, lors de l'utilisation du registre ou du bit définit dans un programme, la forme précise doit être utilisée, c'est-à-dire TCNT0 pour accéder à la valeur du compteur Timer / Counter0 et ainsi de suite.

Les définitions dans Tableau 11-1 sont également largement utilisés dans tout le document.

Tableau 11-1. Définitions

Constante Description
BAS Le compteur atteint BOTTOM lorsqu'il devient 0x00
MAX Le compteur atteint son MAXimum lorsqu'il devient 0xFF (décimal 255)
HAUT Le compteur atteint le TOP lorsqu'il devient égal à la valeur la plus élevée de la séquence de comptage. La valeur TOP peut être affectée à la valeur fixe 0xFF (MAX) ou à la valeur stockée dans le registre OCR0A. L'affectation dépend du mode de fonctionnement

Minuterie / compteur Prescaler et sources d'horloge

La minuterie / compteur peut être cadencée par une source d'horloge interne ou externe. La source d'horloge est sélectionnée par la logique de sélection d'horloge qui est contrôlée par les bits de sélection d'horloge (c) situés dans le registre de contrôle de la minuterie / compteur0 (TCCR0B).

Source d'horloge interne avec Prescaler

Timer/Counter0 peut être cadencé directement par l'horloge système (en réglant CS0[2:0] = 1). Ceci fournit le fonctionnement le plus rapide, avec une fréquence d'horloge maximale du temporisateur/compteur égale à la fréquence d'horloge du système (fCLK_I/O). Alternativement, l'une des quatre prises du prédiviseur peut être utilisée comme source d'horloge. L'horloge pré-échelonnée a une fréquence soit

Réinitialisation du prescaler

Le pré-échelonneur fonctionne librement, c'est-à-dire qu'il fonctionne indépendamment de la logique de sélection d'horloge de Timer/Counter0. Etant donné que le pré-échelonneur n'est pas affecté par la sélection d'horloge de la minuterie/compteur, l'état du pré-échelonneur aura des implications pour les situations où une horloge pré-échelonnée est utilisée. Un exampLe fichier d'un artefact de pré-échelonnage est lorsque le minuteur/compteur est activé et cadencé par le pré-échelonneur (6 > CS0[2:0] > 1). Le nombre de cycles d'horloge système à partir du moment où le temporisateur est activé jusqu'au premier comptage peut être compris entre 1 et N+1 cycles d'horloge système, où N est égal au diviseur de pré-échelonneur (8, 64, 256 ou 1024).

Il est possible d'utiliser la réinitialisation du Prescaler pour synchroniser la minuterie / compteur à l'exécution du programme.

Source d'horloge externe

Une source d'horloge externe appliquée à la broche T0 peut être utilisée comme horloge de minuterie/compteur (clkT0). La broche T0 est sampconduit une fois par cycle d'horloge système par la logique de synchronisation des broches. Le synchronisé (sampled) le signal est alors transmis

à travers le détecteur de bord. Figure 11-2 montre un schéma fonctionnel équivalent de la logique de synchronisation T0 et du détecteur de front. Les registres sont cadencés sur le front montant de l'horloge système interne (clkI/O). La bascule est transparente dans la période haute de l'horloge système interne.

Le détecteur de front génère une impulsion clkT0 pour chaque front positif (CS0[2:0] = 7) ou négatif (CS0[2:0] = 6) qu'il détecte.

Les registres OCR0x sont à double tampon lors de l'utilisation de l'un des modes de modulation de largeur d'impulsion (PWM). Pour les modes de fonctionnement normal et Clear Timer on Compare (CTC), la double mise en mémoire tampon est désactivée. Le double tampon synchronise la mise à jour des registres de comparaison OCR0x en haut ou en bas de la séquence de comptage. La synchronisation empêche l'apparition d'impulsions PWM non symétriques de longueur impaire, rendant ainsi la sortie sans problème.

L'accès au registre OCR0x peut sembler complexe, mais ce n'est pas le cas. Lorsque la double mise en mémoire tampon est activée, la CPU a accès au registre de tampon OCR0x et si la double mise en mémoire tampon est désactivée, la CPU accède directement à l'OCR0x.

Forcer la comparaison de la sortie

Dans les modes de génération de forme d'onde non PWM, la sortie de correspondance du comparateur peut être forcée en écrivant un un sur le bit Forcer la comparaison de sortie (FOC0x). Forcer la correspondance de comparaison ne définira pas le drapeau OCF0x ni ne rechargera / effacera le minuteur, mais la broche OC0x sera mise à jour comme si une correspondance de comparaison réelle s'était produite (les paramètres de bits COM0x [1: 0] définissent si la broche OC0x est définie, effacée ou basculé).

Comparer le blocage de correspondance par écriture TCNT0

Toutes les opérations d'écriture de l'UC dans le registre TCNT0 bloquent toute correspondance de comparaison qui se produit dans le prochain cycle d'horloge du minuteur, même lorsque le minuteur est arrêté. Cette fonction permet à OCR0x d'être initialisé à la même valeur que TCNT0 sans déclencher d'interruption lorsque l'horloge Timer / Counter est activée.

Utilisation de l'unité de comparaison de sortie

Étant donné que l'écriture de TCNT0 dans n'importe quel mode de fonctionnement bloquera toutes les correspondances de comparaison pendant un cycle d'horloge de la minuterie, il existe des risques lors de la modification de TCNT0 lors de l'utilisation de l'unité de comparaison de sortie, indépendamment du fait que la minuterie / compteur fonctionne ou non. Si la valeur écrite dans TCNT0 est égale à la valeur OCR0x, la correspondance de comparaison est manquée, ce qui entraîne une génération de forme d'onde incorrecte. De même, n'écrivez pas la valeur TCNT0 égale à BOTTOM lorsque le compteur est en décomptage.

La configuration de l'OC0x doit être effectuée avant de définir le registre de direction des données pour la broche du port à sortir. Le moyen le plus simple de définir la valeur OC0x consiste à utiliser les bits d'échantillonnage Force Output Compare (FOC0x) en mode Normal. Les registres OC0x conservent leurs valeurs même en cas de changement entre les modes de génération de forme d'onde.

Sachez que les bits COM0x [1: 0] ne sont pas mis en double tampon avec la valeur de comparaison. La modification des bits COM0x [1: 0] prendra effet immédiatement.

Comparer l'unité de sortie de correspondance

Les bits du mode de sortie de comparaison (COM0x [1: 0]) ont deux fonctions. Le générateur de formes d'onde utilise les bits COM0x [1: 0] pour définir l'état de comparaison de sortie (OC0x) à la prochaine correspondance de comparaison. De plus, les bits COM0x [1: 0] contrôlent la source de sortie de la broche OC0x. Figure 11-6 montre un schéma simplifié de la logique affectée par le réglage du bit COM0x [1: 0]. Les registres d'E / S, les bits d'E / S et les broches d'E / S de la figure sont indiqués en gras. Seules les parties des registres généraux de contrôle des ports d'E / S (DDR et PORT) qui sont affectées par les bits COM0x [1: 0] sont affichées. Lorsqu'il s'agit de l'état OC0x, la référence est pour le registre OC0x interne, pas pour la broche OC0x. Si une réinitialisation du système se produit, le registre OC0x est remis à «0».

Lorsque OC0A / OC0B est connecté à la broche d'E / S, la fonction des bits COM0A [1: 0] / COM0B [1: 0] dépend du réglage du bit WGM0 [2: 0]. Tableau 11-2 montre la fonctionnalité de bit COM0x [1: 0] lorsque les bits WGM0 [2: 0] sont réglés sur un mode normal ou CTC (non PWM).

Tableau 11-2. Comparer le mode de sortie, le mode non PWM

COM0A1 COM0B1 COM0A0 COM0B0 Description
0 0 Fonctionnement normal du port, OC0A / OC0B déconnecté.
0 1 Basculer OC0A / OC0B sur Comparer la correspondance
1 0 Effacer OC0A / OC0B lors de la comparaison de correspondance
1 1 Définissez OC0A / OC0B sur Compare Match

Tableau 11-3 montre la fonctionnalité de bit COM0x [1: 0] lorsque les bits WGM0 [2: 0] sont définis en mode PWM rapide.

Tableau 11-3. Comparer le mode de sortie, le mode PWM rapide(1)

COM0A1 COM0B1 COM0A0 COM0B0 Description
0 0 Fonctionnement normal du port, OC0A / OC0B déconnecté.
0 1 Réservé
1 0 Effacer OC0A / OC0B sur Compare Match, définir OC0A / OC0B sur BOTTOM (mode non inverseur)
1 1 Réglez OC0A / OC0B sur Compare Match, effacez OC0A / OC0B en BOTTOM (mode d'inversion)

Remarque : Un cas particulier se produit lorsque OCR0A ou OCR0B est égal à TOP et que COM0A1/COM0B1 est défini. Dans ce cas, la correspondance de comparaison est ignorée, mais l'activation ou la suppression est effectuée en BAS. Voir «Mode PWM rapide» à la page 73 pour plus de détails.

Tableau 11-4 montre la fonctionnalité de bit COM0x [1: 0] lorsque les bits WGM0 [2: 0] sont définis sur le mode PWM à phase correcte.

Tableau 11-4. Comparer le mode de sortie, le mode PWM correct de phase(1)

COM0A1 COM0B1 COM0A0 COM0B0 Description
0 0 Fonctionnement normal du port, OC0A / OC0B déconnecté.
0 1 Réservé
1 0 Effacez OC0A / OC0B lors de la comparaison de correspondance lors du comptage. Réglez OC0A / OC0B sur Compare Match lors du décomptage.
1 1 Réglez OC0A / OC0B sur Compare Match lors du comptage. Effacez OC0A / OC0B sur Compare Match lors du décomptage.

Remarque : 1. Un cas particulier se produit lorsque OCR0A ou OCR0B est égal à TOP et que COM0A1/COM0B1 est défini. Dans ce cas, la correspondance de comparaison est ignorée, mais l'activation ou la suppression est effectuée en haut. Voir «Mode PWM à correction de phase» à la page 74 pour plus de détails.

Bits 3: 2 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bits 1: 0 - WGM0 [1: 0]: Mode de génération de forme d'onde

Combinés avec le bit WGM02 trouvé dans le registre TCCR0B, ces bits contrôlent la séquence de comptage du compteur, la source de la valeur maximale du compteur (TOP) et le type de génération de forme d'onde à utiliser, voir Tableau 11-5. Les modes de fonctionnement pris en charge par l'unité de minuterie / compteur sont: le mode normal (compteur), le mode d'effacement de la minuterie sur comparaison de correspondance (CTC) et deux types de modes «Modes de fonctionnement» à la page 71).

Tableau 11-5. Bit de mode de génération de signaux Description

Mode GTM 02 GTM 01 GTM 00 Mode de fonctionnement de la minuterie / compteur HAUT Mise à jour de l'OCRx sur Drapeau TOV activé
0 0 0 0 Normale 0xFF Immédiat MAX(1)
1 0 0 1 PWM, phase correcte 0xFF HAUT BAS(2)
2 0 1 0 CTC OCRA Immédiat MAX(1)
3 0 1 1 PWM rapide 0xFF BAS(2) MAX(1)
4 1 0 0 Réservé
5 1 0 1 PWM, phase correcte OCRA HAUT BAS(2)
6 1 1 0 Réservé
7 1 1 1 PWM rapide OCRA BAS(2) HAUT

Bit 7 - FOC0A: Forcer la sortie de comparaison A

Le bit FOC0A n'est actif que lorsque les bits WGM spécifient un mode non PWM.

Cependant, pour assurer la compatibilité avec les futurs appareils, ce bit doit être mis à zéro lorsque TCCR0B est écrit lors du fonctionnement en mode PWM. Lors de l'écriture d'un un logique sur le bit FOC0A, une correspondance de comparaison immédiate est forcée sur l'unité de génération de signaux. La sortie OC0A est modifiée en fonction de son paramètre de bits COM0A [1: 0]. Notez que le bit FOC0A est implémenté comme un stroboscope. C'est donc la valeur présente dans les bits COM0A [1: 0] qui détermine l'effet de la comparaison forcée.

Un stroboscope FOC0A ne générera aucune interruption et n'effacera pas non plus la minuterie en mode CTC en utilisant OCR0A comme TOP. Le bit FOC0A est toujours lu comme zéro.

Bit 6 - FOC0B: Forcer la comparaison de sortie B

Le bit FOC0B n'est actif que lorsque les bits WGM spécifient un mode non PWM.

Cependant, pour assurer la compatibilité avec les futurs appareils, ce bit doit être mis à zéro lorsque TCCR0B est écrit lors du fonctionnement en mode PWM. Lors de l'écriture d'un un logique sur le bit FOC0B, une correspondance de comparaison immédiate est forcée sur l'unité de génération de forme d'onde. La sortie OC0B est modifiée en fonction de son paramètre de bits COM0B [1: 0]. Notez que le bit FOC0B est implémenté comme un stroboscope. C'est donc la valeur présente dans les bits COM0B [1: 0] qui détermine l'effet de la comparaison forcée.

Un stroboscope FOC0B ne générera aucune interruption et n'effacera pas non plus la minuterie en mode CTC en utilisant OCR0B comme TOP.

Le bit FOC0B est toujours lu comme zéro.

Bits 5: 4 - Res: Bits réservés

Ces bits sont des bits réservés dans l'ATtiny25 / 45/85 et seront toujours lus comme zéro.

Bit 3 - WGM02: Mode de génération de forme d'onde

Voir la description dans le «TCCR0A - Registre de contrôle de la minuterie / compteur A» à la page 77.

Bits 2: 0 - CS0 [2: 0]: Sélection de l'horloge

Les trois bits de sélection d'horloge sélectionnent la source d'horloge à utiliser par la minuterie / compteur.

Tableau 11-6. Bit de sélection d'horloge Description

CS02 CS01 CS00 Description
0 0 0 Aucune source d'horloge (minuterie / compteur arrêté)
0 0 1 clkI/O/(Pas de mise à l'échelle)
0 1 0 clkI/O/8 (du prédiviseur)
0 1 1 clkI/O/64 (du prédiviseur)
1 0 0 clkI/O/256 (du prédiviseur)
1 0 1 clkI/O/1024 (du prédiviseur)
1 1 0 Source d'horloge externe sur la broche T0. Horloge sur front descendant.
1 1 1 Source d'horloge externe sur la broche T0. Horloge sur front montant.

Si des modes de broche externe sont utilisés pour le Timer / Counter0, les transitions sur la broche T0 cadenceront le compteur même si la broche est configurée comme une sortie. Cette fonction permet un contrôle logiciel du comptage.

Comptage et comparaison des unités

Le fonctionnement général du Timer / Counter1 est décrit en mode asynchrone et le fonctionnement en mode synchrone n'est mentionné que s'il existe des différences entre ces deux modes. Figure 12-2 montre le schéma de principe du registre de synchronisation Timer / Counter 1 et les délais de synchronisation entre les registres. Notez que tous les détails du déclenchement de l'horloge ne sont pas représentés sur la figure. Les valeurs du registre Timer / Counter1 passent par les registres de synchronisation internes, qui provoquent le retard de synchronisation d'entrée, avant d'affecter le fonctionnement du compteur. Les registres TCCR1, GTCCR, OCR1A, OCR1B et OCR1C peuvent être relus juste après l'écriture du registre. Les valeurs de relecture sont retardées pour le registre et les indicateurs Timer / Counter1 (TCNT1) (OCF1A, OCF1B et TOV1), en raison de la synchronisation d'entrée et de sortie.

La minuterie / compteur1 présente une résolution élevée et une utilisation de haute précision avec des possibilités de pré-mise à l'échelle plus faibles. Il peut également prendre en charge deux modulateurs de largeur d'impulsion 8 bits précis et rapides utilisant des vitesses d'horloge jusqu'à 64 MHz (ou 32 MHz en mode basse vitesse). Dans ce mode, Timer / Counter1 et les registres de comparaison de sortie servent de PWM autonomes doubles avec des sorties non inversées et inversées sans chevauchement. Faire référence à page 86 pour une description détaillée de cette fonction. De même, les possibilités de pré-mise à l'échelle élevées rendent cet appareil utile pour les fonctions de vitesse inférieure ou les fonctions de minutage exact avec des actions peu fréquentes.

Illustration 12-2. Schéma fonctionnel du registre de synchronisation du temporisateur/compteur 1.

Timer / Counter1 et le prescaler permettent d'exécuter le CPU à partir de n'importe quelle source d'horloge pendant que le prescaler fonctionne sur l'horloge PCK rapide 64 MHz (ou 32 MHz en mode basse vitesse) en mode asynchrone.

Notez que la fréquence d'horloge du système doit être inférieure à un tiers de la fréquence PCK. Le mécanisme de synchronisation du Timer / Counter1 asynchrone a besoin d'au moins deux fronts du PCK lorsque l'horloge système est élevée. Si la fréquence de l'horloge système est trop élevée, il existe un risque de perte de données ou de valeurs de contrôle.

Ce qui suit Figure 12-3 montre le schéma de principe pour Timer / Counter1.

Tableau 12-1. Sélection du mode de comparaison en mode PWM

COM1x1 COM1x0 Effet sur les broches de comparaison de sortie
0 0 OC1x non connecté. OC1x non connecté.
0 1 OC1x effacé lors du match de comparaison. Défini lorsqueTCNT1 = 00 $. OC1x défini sur le match de comparaison. Effacé lorsque TCNT1 = 00 $.
1 0 OC1x effacé lors du match de comparaison. Défini lorsque TCNT1 = 00 $. OC1x non connecté.
1 1 OC1x Défini sur le match de comparaison. Effacé lorsque TCNT1 = 00 $. OC1x non connecté.

Caractéristiques ADC

Tableau 21-8. Caractéristiques ADC, canaux asymétriques. TA = -40°C à +85°C

Symbole Paramètre Condition Min Type Max Unités
Résolution 10 Morceaux
Précision absolue (y compris les erreurs INL, DNL et de quantification, de gain et de décalage) VREF = 4V, VCC = 4V,

Horloge ADC = 200 kHz

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

Horloge ADC = 1 MHz

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

Horloge ADC = 200 kHz

Mode de réduction du bruit

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

Horloge ADC = 1 MHz

Mode de réduction du bruit

2.5 LSB
Non-linéarité intégrale (INL) (précision après étalonnage du décalage et du gain) VREF = 4V, VCC = 4V,

Horloge ADC = 200 kHz

1 LSB
Non-linéarité différentielle (DNL) VREF = 4V, VCC = 4V,

Horloge ADC = 200 kHz

0.5 LSB
Erreur de gain VREF = 4V, VCC = 4V,

Horloge ADC = 200 kHz

2.5 LSB
Erreur de décalage VREF = 4V, VCC = 4V,

Horloge ADC = 200 kHz

1.5 LSB
Temps de conversion Conversion en cours d'exécution gratuite 14 280 µs
Fréquence d'horloge 50 1000 kHz
NIV Vol d'entréetage Terre VREF V
Bande passante d'entrée 38.4 kHz
AREF Vol de référence externetage 2.0 CCV V
Vint Vol internetage Référence 1.0 1.1 1.2 V
Référence interne 2.56 V (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 32 kQ
PLUIE Résistance d'entrée analogique 100
Sortie ADC 0 1023 LSB

Remarque : 1. Les valeurs sont fournies à titre indicatif uniquement.

Tableau 21-9. Caractéristiques ADC, canaux différentiels (mode unipolaire). TA = -40°C à +85°C

Symbole Paramètre Condition Min Type Max Unités
Résolution Gain = 1x 10 Morceaux
Gain = 20x 10 Morceaux
Précision absolue (y compris INL, DNL et

Erreurs de quantification, gain et décalage)

Gain = 1x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

10.0 LSB
Gain = 20x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

20.0 LSB
Non-linéarité intégrale (INL) (précision après étalonnage du décalage et du gain) Gain = 1x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

4.0 LSB
Gain = 20x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

10.0 LSB
Erreur de gain Gain = 1x 10.0 LSB
Gain = 20x 15.0 LSB
Erreur de décalage Gain = 1x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

3.0 LSB
Gain = 20x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

4.0 LSB
Temps de conversion Conversion en cours d'exécution gratuite 70 280 µs
Fréquence d'horloge 50 200 kHz
NIV Vol d'entréetage Terre CCV V
VDIFF Vol différentiel d'entréetage VREF/Gain V
Bande passante d'entrée 4 kHz
AREF Vol de référence externetage 2.0 CCV – 1.0 V
Vint Vol internetage Référence 1.0 1.1 1.2 V
Référence interne 2.56 V (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Résistance d'entrée de référence 32 kQ
PLUIE Résistance d'entrée analogique 100
Sortie de conversion ADC 0 1023 LSB

Remarque : Les valeurs ne sont fournies qu'à titre indicatif.

Tableau 21-10. Caractéristiques ADC, canaux différentiels (mode bipolaire). TA = -40°C à +85°C

Symbole Paramètre Condition Min Type Max Unités
Résolution Gain = 1x 10 Morceaux
Gain = 20x 10 Morceaux
Précision absolue (y compris INL, DNL et

Erreurs de quantification, gain et décalage)

Gain = 1x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

8.0 LSB
Gain = 20x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

8.0 LSB
Non-linéarité intégrale (INL) (précision après étalonnage du décalage et du gain) Gain = 1x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

4.0 LSB
Gain = 20x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

5.0 LSB
Erreur de gain Gain = 1x 4.0 LSB
Gain = 20x 5.0 LSB
Erreur de décalage Gain = 1x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

3.0 LSB
Gain = 20x

VREF = 4V, VCC = 5V

Horloge ADC = 50 - 200 kHz

4.0 LSB
Temps de conversion Conversion en cours d'exécution gratuite 70 280 µs
Fréquence d'horloge 50 200 kHz
NIV Vol d'entréetage Terre CCV V
VDIFF Vol différentiel d'entréetage VREF/Gain V
Bande passante d'entrée 4 kHz
AREF Vol de référence externetage 2.0 CCV – 1.0 V
Vint Vol internetage Référence 1.0 1.1 1.2 V
Référence interne 2.56 V (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Résistance d'entrée de référence 32 kQ
PLUIE Résistance d'entrée analogique 100
Sortie de conversion ADC -512 511 LSB

Résumé du jeu d'instructions

Mnémotechnique Opérandes Description Opération Drapeaux #Horloges
INSTRUCTIONS ARITHMÉTIQUES ET LOGIQUES
AJOUTER Chemin, Arr. Ajouter deux registres Rd ← Rd + Rr Z, C, N, V, H 1
ADC Chemin, Arr. Ajouter avec Carry deux registres Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIF Rdl, K Ajouter immédiatement à Word Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SOUS Chemin, Arr. Soustraire deux registres Rd ← Rd – Rr Z, C, N, V, H 1
SUBI chemin, K Soustraire la constante du registre Rd ← Rd – K Z, C, N, V, H 1
SBC Chemin, Arr. Soustraire avec transporter deux registres Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI chemin, K Soustraire avec Carry Constant de Reg. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl, K Soustraire Immédiat de Word Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
ET Chemin, Arr. Registres AND logiques Rd ← Rd ∙ Rr Z, N, V 1
ANDI chemin, K Registre ET logique et constante Rd ← Rd ∙ K Z, N, V 1
OR Chemin, Arr. Registres OR logiques Rd ← Rd v Rr Z, N, V 1
ORI chemin, K Registre OU logique et constante Rd ← Rd v K Z, N, V 1
EOR Chemin, Arr. Registres OR exclusifs Rd ← Rd ⊕ Rr Z, N, V 1
COM Rd Complément à soi Rd ← 0xFF − Rd Z, C, N, V 1
NEG Rd Complément à deux Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR Rd, K Définir le (s) bit (s) dans le registre Rd ← Rd v K Z, N, V 1
CBR Rd, K Effacer le (s) bit (s) dans le registre Rd ← Rd ∙ (0xFF – K) Z, N, V 1
INC Rd Incrément Rd ← Rd + 1 Z, N, V 1
DÉC Rd Décrémenter Rd ← Rd − 1 Z, N, V 1
TST Rd Test pour zéro ou moins Rd ← Rd ∙ Rd Z, N, V 1
CLR Rd Effacer le registre Rd ← Rd ⊕ Rd Z, N, V 1
SER Rd Définir le registre Rd ← 0xFF Aucun 1
INSTRUCTIONS DE LA SUCCURSALE
RJMP k Saut relatif CP ← CP + k + 1 Aucun 2
IJMP Saut indirect à (Z) PC ← Z Aucun 2
RAPPEL k Appel de sous-programme relatif CP ← CP + k + 1 Aucun 3
J'APPELLE Appel indirect à (Z) PC ← Z Aucun 3
RET Retour de sous-programme PC ← PILE Aucun 4
RÉSEAUX Retour interrompu PC ← PILE I 4
CPSE Rd, Rr Comparer, ignorer si égal si (Rd = Rr) PC ← PC + 2 ou 3 Aucun 1/2/3
CP Rd, Rr Comparer Rd − Rr Z, N, V, C, H 1
PCC Rd, Rr Comparez avec Carry Rd − Rr − C Z, N, V, C, H 1
IPC Rd, K Comparer S'inscrire avec Immédiat Rd − K Z, N, V, C, H 1
SBRC Rr, b Ignorer si le bit du registre est effacé si (Rr(b)=0) PC ← PC + 2 ou 3 Aucun 1/2/3
SBRS Rr, b Ignorer si le bit du registre est défini si (Rr(b)=1) PC ← PC + 2 ou 3 Aucun 1/2/3
SBIC P, b Ignorer si le bit du registre d'E / S est effacé si (P(b)=0) PC ← PC + 2 ou 3 Aucun 1/2/3
SIB P, b Ignorer si le bit du registre d'E / S est défini si (P(b)=1) PC ← PC + 2 ou 3 Aucun 1/2/3
BRBS s, k Branche si l'indicateur d'état est défini si (SREG(s) = 1) alors PC←PC+k + 1 Aucun 1/2
BRBC s, k Succursale si l'indicateur d'état est effacé si (SREG(s) = 0) alors PC←PC+k + 1 Aucun 1/2
BREQ k Branche si égale si (Z = 1) alors PC ← PC + k + 1 Aucun 1/2
BRN k Branche si non égale si (Z = 0) alors PC ← PC + k + 1 Aucun 1/2
BRCS k Branche si ensemble de transport si (C = 1) alors PC ← PC + k + 1 Aucun 1/2
BRCC k Succursale si transport autorisé si (C = 0) alors PC ← PC + k + 1 Aucun 1/2
BRSH k Succursale si identique ou supérieure si (C = 0) alors PC ← PC + k + 1 Aucun 1/2
BRLO k Branche si inférieure si (C = 1) alors PC ← PC + k + 1 Aucun 1/2
IMRB k Branche si moins si (N = 1) alors PC ← PC + k + 1 Aucun 1/2
BRPL k Branche si Plus si (N = 0) alors PC ← PC + k + 1 Aucun 1/2
BRGE k Succursale si supérieure ou égale, signée si (N ⊕ V= 0) alors PC ← PC + k + 1 Aucun 1/2
BRLT k Branche si inférieure à zéro, signée si (N ⊕ V= 1) alors PC ← PC + k + 1 Aucun 1/2
BRHS k Branche si la moitié porte le drapeau si (H = 1) alors PC ← PC + k + 1 Aucun 1/2
BRHC k Branche si le drapeau à moitié porté est effacé si (H = 0) alors PC ← PC + k + 1 Aucun 1/2
BRTS k Branche si T drapeau défini si (T = 1) alors PC ← PC + k + 1 Aucun 1/2
BRTC k Branche si le drapeau T effacé si (T = 0) alors PC ← PC + k + 1 Aucun 1/2
BRV k Branche si l'indicateur de débordement est défini si (V = 1) alors PC ← PC + k + 1 Aucun 1/2
BRVC k Branche si l'indicateur de débordement est effacé si (V = 0) alors PC ← PC + k + 1 Aucun 1/2
BRIE k Branchement si l'interruption est activée si ( I = 1) alors PC ← PC + k + 1 Aucun 1/2
BRIDGE k Branchement si l'interruption est désactivée si ( I = 0) alors PC ← PC + k + 1 Aucun 1/2
INSTRUCTIONS POUR LES BITS ET LES BITS-TEST
SBI P, b Définir le bit dans le registre d'E / S E/S(P,b) ← 1 Aucun 2
CBI P, b Effacer le bit dans le registre d'E / S E/S(P,b) ← 0 Aucun 2
LSL Rd Décalage logique vers la gauche Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd Décalage logique vers la droite Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
RÔLE Rd Pivoter à gauche par le portage Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd Tourner à droite à travers le transport Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd Décalage arithmétique vers la droite Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Mnémotechnique Opérandes Description Opération Drapeaux #Horloges
ÉCHANGER Rd Échanger des grignotages Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Aucun 1
BSET s Ensemble de drapeau SREG(s) ← 1 SREG (s) 1
BCLR s Drapeau Effacer SREG(s) ← 0 SREG (s) 1
BST Rr, b Bit Store du registre à T T ← Rr(b) T 1
BLD Chemin, b Charge de bits de T à enregistrer Rd(b) ← T Aucun 1
SECONDE Ensemble de transport C ← 1 C 1
CLC Effacer le transport C ← 0 C 1
SÉN Définir un indicateur négatif N ← 1 N 1
CLN Effacer l'indicateur négatif N ← 0 N 1
ZES Définir le drapeau zéro Z ← 1 Z 1
CLZ Effacer le drapeau zéro Z ← 0 Z 1
SEI Activation de l'interruption globale je ← 1 I 1
CLI Désactivation d'interruption globale je ← 0 I 1
SES Définir le drapeau de test signé S ← 1 S 1
CLS Effacer l'indicateur de test signé S ← 0 S 1
SEV Définir le débordement de complément de deux. V ← 1 V 1
CLV Effacer le débordement du complément Twos V ← 0 V 1
ENSEMBLE Définir T dans SREG T ← 1 T 1
CLT Effacer T dans SREG T ← 0 T 1
SEH Définir le demi-drapeau de transport dans SREG H ← 1 H 1
CLH Effacer le drapeau de demi-portage dans SREG H ← 0 H 1
INSTRUCTIONS DE TRANSFERT DE DONNÉES
Mouvement Chemin, Arr. Se déplacer entre les registres Rd ← Rr Aucun 1
MVW Chemin, Arr. Copier le mot de registre Rd+1:Rd ← Rr+1:Rr Aucun 1
LDI chemin, K Charger immédiatement Rd ← K Aucun 1
LD Chemin, X Charger indirectement Rd ← (X) Aucun 2
LD Rd, X + Chargement indirect et post-inc. Rd ← (X), X ← X + 1 Aucun 2
LD Rd, - X Charger indirectement et pré-déc. X ← X – 1, Rd ← (X) Aucun 2
LD Chemin, Y Charger indirectement Rd ← (Y) Aucun 2
LD Rd, Y + Chargement indirect et post-inc. Rd ← (Y), Y ← Y + 1 Aucun 2
LD Rd, - Y Charger indirectement et pré-déc. Y ← Y – 1, Rd ← (Y) Aucun 2
LDD Rd, Y + q Charge indirecte avec déplacement Rd ← (Y + q) Aucun 2
LD Chemin, Z Charger indirectement Rd ← (Z) Aucun 2
LD Rd, Z + Chargement indirect et post-inc. Rd ← (Z), Z ← Z+1 Aucun 2
LD Rd, -Z Charger indirectement et pré-déc. Z ← Z – 1, Rd ← (Z) Aucun 2
LDD Rd, Z + q Charge indirecte avec déplacement Rd ← (Z + q) Aucun 2
LDS Rd,k Charger directement depuis SRAM Rd ← (k) Aucun 2
ST X, Rr Stocker indirectement (X) ← Rr Aucun 2
ST X +, Rr Store Indirect et Post-Inc. (X) ← Rr, X ← X + 1 Aucun 2
ST - X, Rr Store Indirect et Pre-Dec. X ← X – 1, (X) ← Rr Aucun 2
ST Y, Rr Stocker indirectement (O) ← Rr Aucun 2
ST Y +, Rr Store Indirect et Post-Inc. (Y) ← Rr, Y ← Y + 1 Aucun 2
ST - Y, Rr Store Indirect et Pre-Dec. Y ← Y – 1, (Y) ← Rr Aucun 2
MST Y + q, Rr Stocker indirectement avec déplacement (O + q) ← Rr Aucun 2
ST Z, AR Stocker indirectement (Z) ← Rr Aucun 2
ST Z +, Rr Store Indirect et Post-Inc. (Z) ← Rr, Z ← Z + 1 Aucun 2
ST -Z, Rr Store Indirect et Pre-Dec. Z ← Z – 1, (Z) ← Rr Aucun 2
MST Z + q, Rr Stocker indirectement avec déplacement (Z + q) ← Rr Aucun 2
STS k, Rr Stocker directement dans SRAM (k) ← Rr Aucun 2
LPM Charger la mémoire de programme R0 ← (Z) Aucun 3
LPM Chemin, Z Charger la mémoire de programme Rd ← (Z) Aucun 3
LPM Rd, Z + Charger la mémoire de programme et post-inc Rd ← (Z), Z ← Z+1 Aucun 3
SPM Stocker la mémoire de programme (z) ← R1:R0 Aucun
IN Chemin, P Au port Rd ← P Aucun 1
DEHORS P, Rr Port de sortie P ← Rr Aucun 1
POUSSER Rr Pousser le registre sur la pile PILE ← Rr Aucun 2
POPULAIRE Rd Registre pop de la pile Rd ← PILE Aucun 2
INSTRUCTIONS DE CONTRÔLE MCU
NON Aucune opération Aucun 1
DORMIR Dormir (voir la description spécifique pour la fonction Sleep) Aucun 1
Le WDR Réinitialisation du chien de garde (voir descr. spécifique pour WDR / Timer) Aucun 1
CASSER Casser
Vitesse (MHz) (1) Vol d'approvisionnementtage (v) Plage de température Emballer (2) Code de commande (3)
10 1.8 – 5.5 Industriel

(-40 ° C à + 85 ° C) (4)

8P3 ATtiny45V-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 Industriel

(-40 ° C à + 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

Remarques : 1. Pour la vitesse par rapport au volume d'alimentationtage, voir la section 21.3 «Vitesse» à la page 163.

Tous les emballages sont sans plomb, sans halogénures et entièrement verts et ils sont conformes à la directive européenne sur la limitation des substances dangereuses (RoHS).

Indicateurs de code

H: finition plomb NiPdAu

U: étain mat

R: bande et bobine

Ces dispositifs peuvent également être fournis sous forme de plaquette. Veuillez contacter votre bureau de vente Atmel local pour obtenir des informations de commande détaillées et des quantités minimales.

Errata

Errata ATtiny25

La lettre de révision de cette section fait référence à la révision de l'appareil ATtiny25.

Rév D - F

Aucun errata connu.

Rév B - C

La lecture de l'EEPROM peut échouer à un faible volume d'alimentationtage / fréquence d'horloge basse

La lecture de l'EEPROM peut échouer à un faible volume d'alimentationtage / fréquence d'horloge basse

Essayer de lire l'EEPROM à des fréquences d'horloge basses et/ou à un faible volume d'alimentationtage peut entraîner des données invalides.

Correction de problème / solution de contournement

N'utilisez pas l'EEPROM lorsque la fréquence d'horloge est inférieure à 1 MHz et fournissez le voltage est inférieur à 2V. Si la fréquence de fonctionnement ne peut pas être augmentée au-dessus de 1MHz, fournissez le voltage doit être supérieur à 2V. De même, si l'offre voltage ne peut pas être augmenté au-dessus de 2V, la fréquence de fonctionnement doit être supérieure à 1MHz.

Cette caractéristique est connue pour être dépendante de la température mais elle n'a pas été caractérisée. Les directives sont données uniquement pour la température ambiante.

Rév A

Pas sampLED.

Errata ATtiny45

La lettre de révision de cette section fait référence à la révision de l'appareil ATtiny45.

Rév F - G

Aucun errata connu

Rév D - E

La lecture de l'EEPROM peut échouer à un faible volume d'alimentationtage / fréquence d'horloge basse

La lecture de l'EEPROM peut échouer à un faible volume d'alimentationtage / fréquence d'horloge basse

Essayer de lire l'EEPROM à des fréquences d'horloge basses et/ou à un faible volume d'alimentationtage peut entraîner des données invalides.

Correction de problème / solution de contournement

N'utilisez pas l'EEPROM lorsque la fréquence d'horloge est inférieure à 1 MHz et fournissez le voltage est inférieur à 2V. Si la fréquence de fonctionnement ne peut pas être augmentée au-dessus de 1MHz, fournissez le voltage doit être supérieur à 2V. De même, si l'offre voltage ne peut pas être augmenté au-dessus de 2V, la fréquence de fonctionnement doit être supérieure à 1MHz.

Cette caractéristique est connue pour être dépendante de la température mais elle n'a pas été caractérisée. Les directives sont données uniquement pour la température ambiante.

Rév B - C

PLL ne se verrouille pas

L'EEPROM lue à partir du code d'application ne fonctionne pas en mode de bit de verrouillage 3

La lecture de l'EEPROM peut échouer à un faible volume d'alimentationtage / fréquence d'horloge basse

Timer Counter 1 La génération de sortie PWM sur OC1B- XOC1B ne fonctionne pas correctement

PLL ne se verrouille pas

À des fréquences inférieures à 6.0 MHz, la PLL ne se verrouille pas

Correction de problème / solution de contournement

Lorsque vous utilisez la PLL, exécutez à 6.0 MHz ou plus.

L'EEPROM lue à partir du code d'application ne fonctionne pas en mode de bit de verrouillage 3

Lorsque les bits de verrouillage de mémoire LB2 et LB1 sont programmés en mode 3, la lecture EEPROM ne fonctionne pas à partir du code d'application.

Correction de problème / contournement

Ne définissez pas le mode de protection de bit de verrouillage 3 lorsque le code d'application doit être lu à partir de l'EEPROM.

La lecture de l'EEPROM peut échouer à un faible volume d'alimentationtage / fréquence d'horloge basse

Essayer de lire l'EEPROM à des fréquences d'horloge basses et/ou à un faible volume d'alimentationtage peut entraîner des données invalides.

Correction de problème / solution de contournement

N'utilisez pas l'EEPROM lorsque la fréquence d'horloge est inférieure à 1 MHz et fournissez le voltage est inférieur à 2V. Si la fréquence de fonctionnement ne peut pas être augmentée au-dessus de 1MHz, fournissez le voltage doit être supérieur à 2V. De même, si l'offre voltage ne peut pas être augmenté au-dessus de 2V, la fréquence de fonctionnement doit être supérieure à 1MHz.

Cette caractéristique est connue pour être dépendante de la température mais elle n'a pas été caractérisée. Les directives sont données uniquement pour la température ambiante.

Timer Counter 1 Génération de sortie PWM sur OC1B - XOC1B ne fonctionne pas correctement

Timer Counter1 La sortie PWM OC1B-XOC1B ne fonctionne pas correctement. Uniquement dans le cas où les bits de contrôle COM1B1 et COM1B0 sont respectivement dans le même mode que COM1A1 et COM1A0, la sortie OC1B-XOC1B fonctionne correctement.

Correction de problème / contournement

La seule solution de contournement consiste à utiliser le même paramètre de contrôle sur les bits de contrôle COM1A [1: 0] et COM1B [1: 0], voir le tableau 14-4 de la fiche technique. Le problème a été résolu pour Tiny45 rev D.

Rév A

Consommation électrique trop élevée

DebugWIRE perd la communication en cas d'interruption unique

PLL ne se verrouille pas

L'EEPROM lue à partir du code d'application ne fonctionne pas en mode de bit de verrouillage 3

La lecture de l'EEPROM peut échouer à un faible volume d'alimentationtage / fréquence d'horloge basse

Consommation électrique trop élevée

Trois situations conduiront à une consommation électrique trop élevée. Ceux-ci sont:

Une horloge externe est sélectionnée par des fusibles, mais le PORT E / S est toujours activé en tant que sortie.

L'EEPROM est lue avant la mise hors tension.

VCC est de 4.5 volts ou plus.

Clause de non-responsabilité : les informations contenues dans ce document sont fournies en relation avec les produits Atmel. Aucune licence, expresse ou implicite, par préclusion ou autrement, sur un droit de propriété intellectuelle n'est accordée par ce document ou en relation avec la vente de produits Atmel. SAUF INDICATION DANS LES CONDITIONS GÉNÉRALES DE VENTE ATMEL SITUÉES SUR ATMEL WEBSITE, ATMEL N'ASSUME AUCUNE RESPONSABILITÉ ET DÉCLINE TOUTE GARANTIE EXPRESSE, IMPLICITE OU LÉGALE RELATIVE À SES PRODUITS, Y COMPRIS, MAIS SANS S'Y LIMITER, LA GARANTIE IMPLICITE DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER OU D'ABSENCE DE CONTREFAÇON. ATMEL NE SERA EN AUCUN CAS RESPONSABLE DES DOMMAGES DIRECTS, INDIRECTS, CONSÉCUTIFS, PUNITIFS, SPÉCIAUX OU ACCESSOIRES (Y COMPRIS, SANS LIMITATION, LES DOMMAGES POUR PERTE ET PROFITS, L'INTERRUPTION D'ACTIVITÉ OU LA PERTE D'INFORMATIONS) DÉCOULANT DE L'UTILISATION OU DE L'INCAPACITÉ D'UTILISER CE DOCUMENT, MÊME SI ATMEL A ÉTÉ AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.

Atmel ne fait aucune représentation ou garantie quant à l'exactitude ou l'exhaustivité du contenu de ce document et se réserve le droit d'apporter des modifications aux spécifications et aux descriptions des produits à tout moment sans préavis. Atmel ne s'engage pas à mettre à jour les informations contenues dans ce document. Sauf indication contraire, les produits Atmel ne conviennent pas et ne doivent pas être utilisés dans les applications automobiles. Les produits Atmel ne sont pas destinés, autorisés ou garantis pour une utilisation en tant que composants dans des applications destinées à soutenir ou à maintenir la vie.

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *