ATtiny 4313 trop lent

Bonjour à tous :slight_smile:

Pour la première fois, je fais appel à vous au travers de ce forum.
J'ai actuellement un projet de petite taille. Étant tombé un peur par hasard sur les ATtiny, je me dis "bah... pourquoi pas essayer?" Du coup, j'en ai acheté quelques-uns par internet (des 4313). Mon soucis est que l'horloge interne de ces microcontroleurs ne tourne pas rond... elles sont beaucoup trop lentes, ce qui a visiblement pour effet de causer des soucis à la communication série, essentielle à mon projet. J'ai vu sur des forums anglais qu'il était possible de régler ça mais j'ai pas trop compris comment... :confused: quelqu'un peut-il m'aider?

Merci d'avance,
Yann.

Hello
mettre un quartz de 8MHz et ses condos 22pif sur les pattes Xtal1 et Xtal2
et mettre les fusibles 1, 2,3 à 1, 1, 1
et peut etre le fusible 0

pages 30 et 31 de la data sheet "complète" de ce lien

http://www.atmel.com/devices/attiny4313.aspx

Merci, je vais essayer :slight_smile:

Essaie avec ces fuses avec AVRDude: -U lfuse:w:0xFF:m -U hfuse:w:0xDF:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

@Patg
bien ton lien

T'as flashé les fuses au moins ?

notre ami B@tto veux dire que
le µ est équipé d'une horloge interne qui tourne à 8MHz ( si le µ est alimenté en 3V)
et qu'un fuse (validé par défaut par Atmel) divise cette fréquence par 8.

il faut le mettre à 0

chapitre 6.2.3 page 28 de la data sheet

( pour info, les 328UP sont aussi livrés avec la division par 8 par défaut)

Le truc piégeux c'est qu'un fuse à 0 signifie que son bit est à 1.
C'est pourquoi il vaut mieux utiliser un outil de calcul de fuse tel que celui que j'ai indiqué.

Salut à tous :slight_smile:
déjà, merci beaucoup pour toutes ces réponses. Mais étant un grand débutant, elles me servent pas à grand chose ^^' je parviens pas à comprendre vos histoires de fuses à 0, même en lisant le data sheet et en allant voir des pages, des forums en français et en anglais :confused: z'avez pas un bon lien qui explique pas à pas ce que je dois faire? j'ai déjà bien galéré rien que pour programmer ces petits machins alors bon ^^'
merci d'avance :smiley:

J'ai fait un tuto récemment sur mon blog qui explique comment utiliser un ATMega318P sans quartz, c'est très ressemblant à ce que tu souhaites faire. Il s'agit de modifier les fuses avec AVRDude et un Arduino utilisé en ISP. Ca devrait te permettre de changer tes fuses:Utiliser un ATMega328P sans quartz externe - BreizhMakers

la plupart de mes montages fonctionnent avec l'horloge interne réglé sur 8Mhz et je n'ai aucun soucis de lenteur.
A mon avis, même pour un port série ça devrait convenir, même si dans ce cas une utilisation d'un quartz est recommandé pour diminuer les erreurs de baudrate.

Voit les fuses comme indiqué dans le lien plus haut.

Yan_duino.

Si je comprends bien, il me suffit d’aller modifier le fichier “boards.txt” dans les fichiers que j’ai du télécharger et replacer au bon endroits pour pouvoir programmer mes ATtiny avec l’IDE Arduino… right?

Le truc piégeux c'est qu'un fuse à 0 signifie que son bit est à 1.
C'est pourquoi il vaut mieux utiliser un outil de calcul de fuse tel que celui que j'ai indiqué.

je parviens pas à comprendre vos histoires de fuses à 0, même en lisant le data sheet et en allant voir des pages, des forums en français et en anglais :confused: z'avez pas un bon li

Ce n'est pas un problème de programation mais d'électronique.

D'abord le terme "fuse" ou fusible.
Dans les temps reculés (au moins 40 ans une éternité quoi) on programmait les circuits intégrés en faisant fondre des pistes très fines sur les puces. C'était irréverssible.
Depuis ces fusibles ont été remplacés par des circuits reprogramables (chouette on peut se tromper).
Les circuits ont changé mais par habitude le nom est resté.
Il se trouve qu'en sortie de fabrication ces circuits sont naturellement à l'état haut : c'est du à leur structure électronique interne.

La règle adoptée est super logique :
fusible non programmé = laissé en l'état de sortie de fabrication c'est à dire à 1 logique
fusible programmé = on change l'état c'est à dire à 0 logique.

Dans le cas contraire il aurait fallu reprogrammer tous les circuits avant de les commercialiser : c'est tout simplement impensable.

Si je comprends bien, il me suffit d'aller modifier le fichier "boards.txt" dans les fichiers que j'ai du télécharger et replacer au bon endroits pour pouvoir programmer mes ATtiny avec l'IDE Arduino... right?

Perso je n'en sais rien. Ces histoires arduino de board, préférence, variant , etc me parraissent très obscures.

Je trouve que la méthode proposée par le fabricant du micro (Atmel) est plus claire.
C'est quand même lui qui sait le mieux comment fonctionne son micro.

J'ai reprogrammé une fois les fusibles et je l'ai fait avec avrdude.
Avrdude s'utilise en ligne de commande mais c'est très simple.
Il existe une documentation d'avrdude qui est très bien faite, et pas trop longue à lire ce qui est agréable..

Des exemples sont donnés pour :

  • lire les fusibles --> ce peut être utile de bien être sûr du point de départ
  • modifier les fusibles.
    Il suffit de recopier le texte de l'exemple. Bien évidement en adaptant la valeur à donner aux fusibles mais cela allait de soi.

ce n’était donc pas ce que je pensais ^^’
bon, j’ai installé AVRdude mais mon pc ne prend aucune de mes commandes :confused: je fais peut-être les choses à l’envers… je cherche encore un peu puis reviens vers ce topique si ça ne va toujours pas.

j’ai installé AVRdude mais mon pc

Inutile , il l’était obligatoirement avec l’IDE arduino.

Avrdude est un programme indispensable pour transférer un programme dans un avr.
Il faut bien garder en tête que l’IDE arduino n’est absolument pas indispensable pour programmer un avr. Dans le milieu professionnel on programmait des avr bien avant l’invention de ce langage arduino.

Si tu nous disais quel OS ( et quelle version) tu utilise cela aiderait.
As tu télécharger la documentation d’avrdude ?
La dernière trouvée est la 6.1

Le mode le plus intéressant ( amha) est le mode interactif chapitre 3. Ce mode est activé en ajoutant le configurateur -t en fin d’ordre de lancement.
Nota1 :
pour le programmeur tu doit pouvoir remplacer stk500 par arduino.–> Nota 3
L’exemple de lecture des fuses est donné page 26

Nota 2
lecture configurateur d (comme display)
écriture configurateur w (comme Write)

Le nom des fuses est hfuse, lfuse et efuse

Nota 3:
Quand tu lance un téléversement dans le micro L’IDE travaille dans un répertoire temporaire, si tu es sous Linux c’est dans le répertoire Temp, si tu es sous W$ je ne sais pas où il est, mais il existe.
L’IDE y crée 2 répertoires par sessions,
Tu ouvres les fichiers des répertoires avec un éditeur de texte et tu recherche la ligne qui invoque avrdude et tu y trouvera tous les paramètres à entrer dans la ligne de commande d’avrdude en mode interactif.

Attention ce répertoire est automatiquement vidé à la fermeture de l’IDE.

avrdude-doc-6.1.pdf (253 KB)

AVRDude est installé avec l’IDE Arduino, je l’ai indiqué dans mon tuto pourtant.
On ne peut pas t’aider si tu dis seulement “ça ne marche pas”. Que fais-tu et quelle erreur as-tu?

Si tu te crées une variante dans boards.txt les fuses ne seront programmer qu’en flashant le bootloader avec cette variante. Il est plus simple d’utiliser directement AVRDude (bien que j’aie eu du mal à me faire à cet outil très paramétrable et quelque peu abscons au début).

C'est officiel, je comprends rien à ma vie. j'arrive pas à comprendre quelles lignes de code je dois mettre dans quel ordre et pour quoi faire, même avec trois documentations en parallèle :frowning:

Si tu veux de l'aide réponds aux questions !

Quel système d'exploitation ?

Si c'est Linux je peux te renseigner pour savoir où trouver la ligne de commande qui va bien
Si c'est W$ ou Mac il y aura bien quelqu'un pour te donner le chemin.

Un peu de méthode !

oups, j'ai remis ce message avant de voir vos nouvelles réponses. ^^'

@ 68tjs: Je suis sous Windows 7 (édition familiale, SP1). je vais regarder à cela plus en détail demain, pour l'heure, je suis fatigué de me prendre la tête (bah oui, programmation + études, ça fait surchauffer x) )

@patg_: certainement une erreur d'inattention ^^' enfin bref, y'a pas mort d'homme comme on dit. en général, les erreurs que j'ai sont simplement des commandes "non reconnues" donc incorrectes donc provient de mon incompréhension. comme dit juste avant, break pour aujourd'hui!