Le microcontrôleur ATtiny45 (3)
Un chenillard de travaux routiers et une enseigne d’hôtel
. Par : Christian
Vous répondez à :
Un dépannage se conduit en éliminant les causes une par une.
Vous incriminez un programme qui manifestement fonctionne ailleurs.
Je vous suggère de le vérifier dans un autre contexte avec ses éventuelles fautes de frappe.
Ce programme d’ATTiny se déverse dans un Arduino en modifiant simplement int led1 = 9 ; // Position de la première LED
et on voit entre autres la LED 13 clignoter indéfiniment.
Donc, vous avez modifié ce programme avant de le déverser ou vos montages ne correspondent pas à la description.
14 Messages
-
Le microcontrôleur ATtiny45 (3) 13 septembre 2017 00:37, par Lappo
Bonjour,
Le ATtiny45 est un bon produit qui permet de faire des projets ludiques. J’ai testé l’"Enseigne Hôtel" : impeccable, un grand Merci à Mr Christian Bézanger pour son travail et toutes ses explications ! Concernant le programme : après avoir fait la "sequence Quatre" le programme s’arrête. Je n’ai pas les moyens de visualiser le "pas-a-pas" du programme afin de pouvoir le modifier, pourriez vous m’indiquer le changement à effectuer pour que le pgm s’enchaîne continuellement. Cordialement jmlVoir en ligne : affichage hôtel
-
NOUVELLE REPONSE FAITE LE 18 FEVRIER 2020
Bonjour Lappo,
Je ne sais si cette réponse vous parviendra, depuis le temps, mais je l’espère tout de même puisqu’il n’est jamais trop tard pour bien faire.
En réutilisant le programme dernièrement, j’ai obtenu la même chose que vous (une seule séquence et rien de plus) et j’ai alors compris que ce programme avait été mal conçu. Son fonctionnement dépendait de la version de l’IDE, donc en fait de la version du compilateur avr-gcc utilisé par l’IDE. Je ne comprends toujours pas pourquoi il a fonctionné avec la version d’IDE que j’ai utilisé à l’époque (comme le montre la vidéo) ; sans doute un bug sur avr-gcc !
Bref, afin de résoudre ce problème, j’ai réécrit la fonction sequence_Quatre et cela devrait donc fonctionner pour toutes les versions d’IDE.
Désolé de n’avoir pas compris plus tôt (deux erreurs qui se compensent c’est plutôt rare, je devrais peut-être jouer au loto !)
Cordialement.Christian
-
Bonjour Christian !
J’ai bien reçu votre message et c’est avec grand plaisir que je vais me remettre à ATtiny45 ! Merci d’avoir pensé a moi lors de la résolution de ce ce bug ! Bien Cordialement JML
-
-
-
Le microcontrôleur ATtiny45 (3) 13 septembre 2017 10:36, par Christian Bézanger
Bonjour Lappo,
Le bouclage du programme vient de la fonction loop() qui est répétée indéfiniment ; le programme devrait donc se répéter indéfiniment, comme cela est le cas pour le montage de la vidéo (je teste toujours tous les montages que je propose).
Néanmoins, ce cycle peut être perturbé si le montage du µC est mal fait, par exemple un court circuit entre deux broches. Je ne sais pas si votre montage est réalisé sur une breadboard ou bien soudé sur une plaque veroboard. Dans le cas du veroboard, il faut bien contrôler que les vis de fixation ne font pas un court-circuit entre deux bandes (ceci est expliqué dans le texte).
Si tout est correct pour le montage, il faut revoir la programmation de la puce. Pour cela, il faut l’extraire de son support, puis reprendre la procédure de programmation complètement en s’assurant de bien utiliser le programme donné dans l’article sans le modifier. Bien penser aussi à graver la séquence d’initialisation avant de faire cette programmation (ceci peut être refait même si cela a déjà été fait).
En dehors de ces deux vérifications, je ne vois pas pourquoi votre montage ne fonctionne pas comme le mien. Une fois ces deux vérifications faites, tenez-moi au courant.
Christian -
Le microcontrôleur ATtiny45 (3) 14 septembre 2017 13:35, par jm lappo
Bonjour Christian,
Pas de solution pour l’instant à mon problème.
J’ai fait les tests suivants :
Utilisation de l’Atmega328 et AVRisp comme programmateur (en fait la carte Arduino) puis tests avec les Leds sur cette même carte.
- avec >< int led1 = 0 ; >< idem pas de boucle du pgm
Toujours avec la carte Arduino, mais en changeant la position de la led début (qui était sur RX) en >< int led1 = 2 ;><- et là ça fonctionne bien, le programme boucle
Fait le test sur ATtiny85
- avec dans le pgm >< int led1 = 2 ; ><
le programme boucle bien mais seulement 3 leds sont utilisées
- avec dans le pgm >< int led1 = 1 ; ><
le programme boucle bien mais seulement 4 leds sont utilisées
C’est Led1 = 0 qui me pose un problème avec mon ATtiny85....
Lors du "gravage" de cette puce mes paramêtres IDE sont les suivants :
type de carte : "ATtiny 25/45/85
Timer 1 Clock : CPU
B.O.D : B.O.D Disabled
L.T.O : Disabled
Chip : ATtiny85
Clock : 1MHz internal (... si je mets 8 MHz le clignotement devient très lent....!?!?)ps : Puce Attny85 provenant de Chine
-
Le microcontrôleur ATtiny45 (3) 14 septembre 2017 17:11, par jm lappo
... petit oubli... IDE 1.6.12
-
Le microcontrôleur ATtiny45 (3) 15 septembre 2017 09:17, par Christian Bézanger
La version de l’IDE est aujourd’hui la 1.8.4 et mon montage a été réalisé avec une version 1.8.x. Mais l’utilisation d’une version 1.6.12 n’est pas la cause du problème.
Par contre, vous dites utiliser comme programmateur la carte Arduino avec AVRisp, ce qui n’est pas ce que j’ai fait. Il semble que les réglages de cette version de programmateur soient différents.
Il faut utiliser le programme donné en exemple ArduinoISP pour transformer la carte UNO en programmateur. Ensuite réaliser le montage décrit dans l’article sur une breadboard avec 6 câbles, puis faire la programmation avec les réglages suivants :- Type de carte ATtiny25/45/85
- Processeur ATtiny85 (celui que vous utilisez)
- Clock Internal 8 Mhz
- Programmateur "Arduino as ISP" (ceci me semble important)
Et bien sûr, penser à graver la séquence d’initialisation.
Cela devrait fonctionner comme cela fonctionne chez moi.
Pour les sorties de l’ATtiny85, on peut utiliser PB0, PB1, PB2, PB3 et PB4 (5 sorties) mais il ne faut rien faire avec la broche 1 (PB5) qui sert de reset ; c’est le prix à payer pour utiliser un programmateur aussi simple que la carte Arduino UNO.
Bien évidemment, si vous avez programmé les fusibles d’une façon différente avec AVRisp, il faudra utiliser une puce neuve.
J’espère que ces indications vous permettront de finaliser votre projet.
-
Bonsoir,
Je confirme à 100% ce qu’explique Christian. J’ai d’ailleurs réalisé une animation dans ma gare PLM :ici
-
-
Le microcontrôleur ATtiny45 (3) 14 décembre 2019 19:09, par migeon jacques
Bonsoir ,j’ai réaliser la petite platine enseigne , programmé un attiny45,mais les quatre séquences ne recommence qu’une seule fois .
J’ai reprogrammé un autre attiny 45 fait un contrôle du fonctionnement sur une plaque d’essai et pareil deux enchainement puis plus rien.J’ai remis l’attiny sur ma platine , mème topo .
Si je coupe l’alimentation et que je la remet çà repart pour deux enchainements !
Une idée ? -
Le microcontrôleur ATtiny45 (3) 14 décembre 2019 21:28, par msport
Bonsoir, il y a plusieurs extra-lucides à Locoduino, mais sans VOTRE sketch difficile d’y voir clair.
Par ailleurs, pour du dépannage (qui n’apporte rien à l’article) passez sur le forum, vous pourrez y poster vos créations. -
Le microcontrôleur ATtiny45 (3) 14 décembre 2019 21:31, par msport
Et faites d’abord tourner votre sketch sur un Arduino (première vérification à faire)
-
Le microcontrôleur ATtiny45 (3) 16 décembre 2019 08:42, par MIGEON
Je ne crois pas les extra-lucides et pourquoi modifier un programme fait pour UN ATtiny pour le vérifier sur un Arduino.
si j’ai posé ma question ici , c’est que j’ai suivi les indications de Christian et recopier (dans un premier temps)le programme qui se trouve là .
malgré tout je n’arrive pas a faire fonctionner correctement le montage (sur la platine ou sur une plaque d’essais )J’ai programmé trois puces et le comportement est toujours le mème(deux cycles des quatre séquences et stop) .-
msport a raison.
Le programme fonctionne chez moi, donc doit fonctionner chez tout le monde, à condition d’avoir bien fait la même chose.
Puisque visiblement vous n’arrivez pas à le faire fonctionner avec un ATtiny, l’idée de le reprendre sur un UNO n’a rien de saugrenu. L’UNO se programme plus facilement que les ATtiny, ce qui permet donc de tester un programme plus facilement aussi. Bien évidemment, il faut renommer les sorties utilisées. Grâce à cela, on peut se rendre compte qu’une parenthèse a pu être oubliée au cours de la copie sans que le compilateur ne donne un message d’erreur.
Une fois que le programme tourne sur l’UNO, il doit aussi tourner sur l’ATtiny à la condition que la programmation de celui-ci soit faite comme il se doit, avec les bons paramètres pour l’oscillateur interne par exemple.
C’est pourquoi il est important de bien vérifier que tout a été fait comme le dit l’article (cela va très vite de sauter une étape).
Ne vous découragez pas ; il y a forcément une raison et vous la trouverez.
Christian
-
-
Le microcontrôleur ATtiny45 (3) 16 décembre 2019 10:03, par msport
Un dépannage se conduit en éliminant les causes une par une.
Vous incriminez un programme qui manifestement fonctionne ailleurs.
Je vous suggère de le vérifier dans un autre contexte avec ses éventuelles fautes de frappe.
Ce programme d’ATTiny se déverse dans un Arduino en modifiant simplement int led1 = 9 ; // Position de la première LED
et on voit entre autres la LED 13 clignoter indéfiniment.
Donc, vous avez modifié ce programme avant de le déverser ou vos montages ne correspondent pas à la description.