LOCODUINO

Parlons Arduino => Débuter => Discussion démarrée par: LEX le avril 29, 2021, 11:08:33 pm

Titre: Problème i2c sur attiny85
Posté par: LEX le avril 29, 2021, 11:08:33 pm
Bonjour,
J'ai besoin de vos lumières. Je programme un attiny85 avec un pickit4, ce qui permet d'utiliser le debugWire grâce au logiciel Microchip (Atmel). J'ai compris le fonctionnement le fonctionnement du mode SPI (3 fils) en utilisant le Software Clock. Je souhaitais utiliser le mode TWI en utilisant le Timer/Counter0 Compare Match comme source d'horloge. Dois-je utiliser utiliser OC0A (utilisé normalement pour SDA) ou OC0B en sortie d'horloge ?
Ou utiliser l'interruption du comparateur du timer0 pour basculer la sortie USCK et ainsi créer une horloge ? Difficile d'interpréter le fonctionnement en configurant USICR|=(1<<USICS0)|(1<<USIWM1).
J'aime comprendre le fonctionnement des microcontroleurs et de leur registre.
Titre: Re : Problème i2c sur attiny85
Posté par: Pierre59 le avril 30, 2021, 11:33:21 am
Bonjour

J'ai utilisé l'I2C sur un attiny il y a longtemps. Atmel fournissait alors une petite bibliothèque C, pour utiliser l'I2C assez facilement. Elle montrait comment tirer le meilleur parti du hard disponible, en intervenant bien sûr sur les registres.

Si cela vous intéresse je dois pouvoir la retrouver.

Pierre

Il y avait aussi une bibliothèque SPI.
Titre: Re : Problème i2c sur attiny85
Posté par: LEX le avril 30, 2021, 08:22:26 pm
Je serai très intéressé par cette bibliothèque. Elle pourrait me permettre à mieux comprendre le fonctionnement des attiny.
Autre question (idiote hélas), j'ai une impression que le système de drain ouvert sur l'attiny avait un comportement capacitif : le début des formes carrés de mes signaux (i2c) a une forme arrondie (résistances pull-up installées, bien sûr) provoquant une sorte de filtre passe-bas et me limitant à des fréquences d'horloge faibles. Sur mon oscilloscope, j'ai remarqué qu'on ne pouvait pas monter jusqu'à 400kb/s. Avez-vous remarqué ce genre de comportement sur ce genre de produit ? Une caractéristique du mosfet à drain ouvert ?
Titre: Re : Problème i2c sur attiny85
Posté par: Pierre59 le mai 01, 2021, 10:07:35 am
Bonjour

Voila les fichiers pour faire de l'I2C sur les attiny.

Concernant les résistances de pullup, j'utilise en général des résistances externes de 4.7K pour avoir un pullup énergique.

Pierre
Titre: Re : Problème i2c sur attiny85
Posté par: LEX le mai 01, 2021, 04:39:19 pm
Bonjour,
J'ai consulté votre librairie. Elle est intéressante car elle explique bien le fonctionnement de l'attiny (tout modèle confondu) en mode esclave. Mais ce mode ne génère pas d'horloge. Je l'utiliserai pour une application bien particulière. J'ai lu la documentation de Microchip (Atmel) AVR310 et je suis déçu car il utilise en réalité le Software Clock et la librairie delay.h. Et par conséquence, l'exploitation de ces 2 librairies occupe plus d'espace dans la mémoire flash et bloque le process (quand on peut utiliser un ou deux cycles d'horloge pour faire quelque chose en parallèle). J'essaierai de changer mes résistances pull-up et d'observer le tout à l'oscilloscope. Je vous remercie pour la documentation.  ;D
Titre: Re : Problème i2c sur attiny85
Posté par: trimarco232 le mai 01, 2021, 09:37:32 pm
bonjour LEX,
ce qui m'étonne - un peu - c'est que tu choisis un mcu des + faiblards, et qu'après tu sembles te plaindre de manquer de flash et de puissance de calcul ?
Titre: Re : Problème i2c sur attiny85
Posté par: LEX le mai 02, 2021, 12:55:34 am
Mon signal est propre : ma sonde produisait des parasites. Rien de bien méchant comme le montre l'aperçu de mon oscilloscope https://1drv.ms/u/s!As5kd57NpH9b1DsXwQPk_uwQINzB?e=PlU0eE (https://1drv.ms/u/s!As5kd57NpH9b1DsXwQPk_uwQINzB?e=PlU0eE).
bonjour LEX,
ce qui m'étonne - un peu - c'est que tu choisis un mcu des + faiblards, et qu'après tu sembles te plaindre de manquer de flash et de puissance de calcul ?
Bonjour,
Les microcontrôleurs attiny sont des produits d'entrée de gamme. Oui ils ne brillent pas par leur puissance de calcul comme la plupart des µcontroleurs 8 bits, ils sont limités par leur fréquence et d'autres spécificités contrairement à des processeurs 16 ou 32 bits. Mais ils ont au moins le mérite de posséder quelques interfaces (CAN, E/S, USI, etc...) et 2 Timers dans un petit boitier. Donc encombrement faible et une consommation raisonnable. Je ne juge pas ce petit µcontroleur aux grande possibilités.
Ce n'est pas pire que des personnes qui utilisent des MCP2515 (par exemple), alors qu'il existe des ATMEGA ou des PIC possédant une interface CANBus.
J'ai un stock de diverses attiny et de composant i2c, je compte les exploiter. Microchip, dans leur documentation, promet une exploitation de l'USI avec peu d'instruction. Il s'avère plus compliqué. Et puis j'aime être curieux ...  ::)
Il est parfois absurde de bloquer un process par la librairie delay. Il est plus naturel d'exploiter les timers.