Microcontrôleur Atmel AVR 8 bits avec flash programmable intégré au système 2/4/8K octets
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
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
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
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.
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.
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.
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
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
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
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 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
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.
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.
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
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
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
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.
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
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
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)
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 | ![]() |
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 | MΩ | |||
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 | MΩ | |||
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 | MΩ | |||
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.