pave INTERRUPTIONS
1/7
titre

INTERRUPTIONS SUR ATTINY

Standardisation personnelle Arduino

Après avoir galéré pas mal de temps, pour voir qu'il était tout autant facile que difficile de pénétrer dans le monde arduino en se passant des cartes toutes prêtes telles qu'UNO, NANO, PRO MINI, etc..., etc... Souhaitant embarquer le matériel, il faut voir petit et se tourner vers les puces qui tiendront moins de place. Le travail avec les ATTiny 85, 84, 861 et 88 en fonction des besoins en pattes, est indispensable.

Premier réflexe, glaner de-ci delà des exemples sur le net. Avouons que tout cela est très confus. Les exemples pour ATTiny85 sont assez répandus, mais, il y a un peu de tout. Pour le reste, les exemples sont rares. Les déclarations d'entrées et de sorties ne sont pas toujours identiques. Donc la vérification des sources qui sont fonctionnelles s'impose. De suite, on remarque une incohérence dans l'utilisation des références des broches.

Pour éviter l'éparpillement, Je décide de faire un référentiel. Travaillant depuis quelque temps avec les IDE 1.0 et 1.06, les librairies ayant évolué vers des IDE plus récents, je procède à l'installation de la version 1.8.13 avec la librairie ATTinyCore

Une recherche des références de broches dans cette librairie et un examen détaillé des DataSheets des puces me conduiront à créer une table que j'utiliserai systématiquement pour tous mes développements à venir. La définition des broches dans le programme se fera en utilisant les colonnes DIGITAL, ANALOG et surtout la notation des ports (PAx, PBx, PCx, PDx). Mon but au final est de pouvoir transposer sans trop de difficultés les codes d'une puce à une autre. On souhaite parfois adapter ou améliorer un montage qui ne dispose plus de suffisamment de broches.

BRANCHEMENTS SPI

Pour compléter cette démarche, la création d'un code de couleurs pour les câbles est nécessaire. Les couleurs standards des câbles en vente par lots sont noires, rouges, jaunes, blanches, bleues et vertes. Le code suivant est établit pour correspondre à la prise SPI (Serial Peripheral Interface). Le branchement SPI sur le circuit se fera en utilisant les colonnes SPI des entêtes ci-dessous. Le choix des couleurs a été fait suite à la lecture des plans de broches (PINOUT) trouvés sur le net. Pour VCC, GND et RESET il n'y a pas photo. Reste pour SCK, MISO et MOSI les couleurs Blanc, Bleu et vert. Le Blanc ira naturellement à SCK en réservant les couleurs primaires Bleues et Vertes pour MISO et MOSI. Quant à l'ordre, il faut bien faire un choix arbitraire ou pas, et cela donne ceci.

GND Noir VCC Rouge RESET Jaune SCK Blanc MISO Bleu MOSI Vert


Si et seulement si, le code ne s'affiche pas correctement dans votre IDE : Pour une lecture correcte des entêtes, des tables des registres d'interruption et des schémas dans l'environnement ARDUINO, Ouvrez l'IDE ARDUINO puis Cliquez sur Fichier puis Préférences. Dans le bas du panneau Cliquez sur C:/Users/../preference.txt et ouvrez ce fichier. Modifiez editor.font=Monospaced, ... en editor.font=Courier New, ... puis enregistrez-le. Attention ! Respectez bien l'espace entre Courrier et New - Quittez tout et relancez l'EDI. Désolé - C'est la seule police que j'ai trouvé capable de faire cela correctement, mais, il y en a peut-être d'autres.

Pour utiliser ce référentiel, au début de chacun de mes codes, je fais un copier-coller de l'entête correspondant à la puce utilisée, suivi du schéma. Cela permet d'identifier à quelle puce s'adresse le code et de ne pas faire d'erreur de codage, de câblage et de branchement SPI. Vous trouverez les entêtes correspondants aux puces ATTINY84 - ATTINY85 - ATTINY861 - ATTINY88 ci-dessous

Pour ne pas avoir à rechercher les DataSheets en cas de besoin, chaque entête de code possède les éléments suivants :

Les numéros de broches DIGITAL, ANALOG, la notation des ports (PAx, PBx, PCx, PDx) et la couleur des fils SPI à connecter.

Les vecteurs d'appel des routines d'interruptions utilisables (ISR)
externes (INTx (0)(1)) et de changement de broches PCINTx (0)(1)(2)(3)

Les registres d'interruption (drapeau, masque), des minuteries, des ports, de changement de mode des broches, des broches, du chien de garde.
GIMSK - GIFR remplacé par EIMSK - EIFR - PCIFR - PCICR sur les puces plus récentes ???
PCMSK(0)(1)(2) - PORT(A)(B)(C)(D) - DDR(A)(B)(C)(D) - PIN(A)(B)(C)(D) - WDT - WDTC(R)(SR).

Sauf erreur(s) ou omission(s) de ma part. vous pouvez me joindre si nécessaire. Cherchez le petit bonhomme qui s'agite en bas à droite sur la page d'accueil de ce site : https://www.astrolynx.com.

Cette liste n'est pas exhaustive et peut être complétée en fonction de vos besoins.

A la suite de l'entête, vient le schéma correspondant au code. Vous trouverez les symboles que j'utilise à la fin de cette page.

Je vous invite à consulter les pages qui suivent : ATTiny85, ATTiny84, ATTiny861 et ATTiny88. Téléchargez les codes et essayez de comprendre la démarche. Une fois assimilé, vous verrez, les interruptions n'auront plus beaucoup de secrets.

ENTÊTES

ATTINY 25/45/85


ATTINY 24/44/84


ATTINY 261/461/861


ATTINY 48/88


SCHÉMAS et BRANCHEMENTS


FINALITÉS

Tu as le code, tout est dit.

Pas besoin d'aller à la recherche d'informations, de datasheet, et je ne sais quoi d'autre. La lecture du fichier ino doit suffire à l'exploiter.

Dans le code, à commencer par l'entête qui va renseigner le concepteur et son site éventuellement. Il y aura également la puce utilisée, son brochage complet, les vecteurs d'interruptions utilisables, les registres d'état et de contrôle, les ports, le schéma électronique et bien évidemment le code correspondant... Tout est dit.

Les codes pour ATtiny85, ATtiny84, ATtiny861 et ATtiny88 se trouvent respectivement sur les pages 3, 4, 5 et 6.