[INFO] Avrdude, fuses et fréquences

Yep!

Je m'interroge également sur avrdude et la configuration des options. Je dois transférer mon programme sur un ATmega644 avec mkII, cependant, j'ai claqué des quartz de 20Mhz et je me demande si je peux uniquement modifier la ligne (en dehors de l'isp, çà je sais faire) relative à la fréquence. Puis-je donc laisser les fuses tel quels ???

philippe@debian-k:/usr/share/arduino/hardware/Sanguino$ cat boards.txt 
##############################################################

sanguino.name=Sanguino
sanguino.upload.protocol=stk500
sanguino.upload.maximum_size=63488
sanguino.upload.speed=38400
sanguino.bootloader.low_fuses=0xFF
sanguino.bootloader.high_fuses=0xDC
sanguino.bootloader.extended_fuses=0xFD
sanguino.bootloader.path=atmega644p
sanguino.bootloader.file=ATmegaBOOT_644P.hex
sanguino.bootloader.unlock_bits=0x3F
sanguino.bootloader.lock_bits=0x0F
sanguino.build.mcu=atmega644p
sanguino.build.f_cpu=16000000L
sanguino.build.core=arduino

Merci d'avance,

@+

Zoroastre.

Salut,

zoroastre: Je dois transférer mon programme sur un ATmega644 avec mkII, cependant, j'ai claqué des quartz de 20Mhz et je me demande si je peux uniquement modifier la ligne (en dehors de l'isp, çà je sais faire) relative à la fréquence. Puis-je donc laisser les fuses tel quels ???

Les valeurs actuelles des fusibles sont configuré pour du 8MHz ou +, donc que tu passe de 16MHz à 20MHz ça devrait pas poser probléme ;)

Change juste sanguino.build.f_cpu=16000000L par sanguino.build.f_cpu=20000000L et ça devrait le faire.

Yep!

Merci Skywodd ;) C'est la réponse que j'attendais...Ce serait bien un petit tuto sur les fusibles, non ???

J'avais suivi le lien sur ton site vers l'édition des fusibles, j'avais quand même du mal à retrouver les paramètres des configurations arduino par defaut (exemple du 328). Sur les anciens Atmel (genre AT92), il n'y avait que 3 fuses à régler, çà me semblait plus simple à l'époque :grin: En même temps, ma fainéantise naturelle ne m'a pas poussé à lire la docs :*

Deux, trois points de soudure, un petit blink et je confirme en [Resolu]...

@+

Zoroastre.

zoroastre:
Merci Skywodd :wink:
C’est la réponse que j’attendais…Ce serait bien un petit tuto sur les fusibles, non ???

Pas de quoi ^^
J’avais fait un article sur avrdude et les fusibles il y a quelques temps :

zoroastre:
J’avais suivi le lien sur ton site vers l’édition des fusibles, j’avais quand même du mal à retrouver les paramètres des configurations arduino par defaut (exemple du 328).
Sur les anciens Atmel (genre AT92), il n’y avait que 3 fuses à régler, çà me semblait plus simple à l’époque :grin: En même temps, ma fainéantise naturelle ne m’a pas poussé à lire la docs :*

Tu devrais ajouter ça à la liste des “c’etait mieux avant” :grin:
http://www.cetait-mieux-avant.fr/

zoroastre:
Deux, trois points de soudure, un petit blink et je confirme en [Resolu]…

Ok ^^

Yep!

J'ai envoyé le programme blinkwithoutdelay pour essai. Le delai de 1 seconde est loin d'être respecté (environ 15/16 secondes entre chaque transition.

J'ai modifié le fichier Sanguino/boards.txt ainsi (partie sanguino20) :

##############################################################

sanguino.name=Sanguino
sanguino.upload.protocol=stk500
sanguino.upload.maximum_size=63488
sanguino.upload.speed=38400
sanguino.bootloader.low_fuses=0xFF
sanguino.bootloader.high_fuses=0xDC
sanguino.bootloader.extended_fuses=0xFD
sanguino.bootloader.path=atmega644p
sanguino.bootloader.file=ATmegaBOOT_644P.hex
sanguino.bootloader.unlock_bits=0x3F
sanguino.bootloader.lock_bits=0x0F
sanguino.build.mcu=atmega644p
sanguino.build.f_cpu=16000000L
sanguino.build.core=arduino

##############################################################

sanguino20.name=SanguinoV20
#sanguino20.upload.protocol=stk500
sanguino20.upload.using=arduino:avrispmkii
sanguino20.upload.maximum_size=63488
#sanguino20.upload.speed=38400
sanguino20.bootloader.low_fuses=0xFF
sanguino20.bootloader.high_fuses=0xDC
sanguino20.bootloader.extended_fuses=0xFD
sanguino20.bootloader.path=atmega644p
sanguino20.bootloader.file=ATmegaBOOT_644P.hex
sanguino20.bootloader.unlock_bits=0x3F
sanguino20.bootloader.lock_bits=0x0F
sanguino20.build.mcu=atmega644p
sanguino20.build.f_cpu=20000000L
sanguino20.build.core=arduino

Je vais de suite tester avec 16Mhz pour voir... [u]EDIT1[/u] : Rien à faire, c'est lent lent lent...pourtant les low fuses me semblent bon !!!

[u]EDIT2[/u] : Comme rien ne va, je décide d'uploader le bootloader modifié par mes soins, erreur à l'adresse blablabla. Je réinjecte mon petit blink et ho miracle çà fonctionne...c'est à n'y rien comprendre !!!

Je me dois de faire encore une autre 100ène d'essais... :grin:

@+

Zoroastre.

Yep!

De la conception :

A la réalisation :

Puis les premiers tests :

Je sens que je vais encore pas mal m'amuser :stuck_out_tongue_closed_eyes:

Sinon, si quelqu'un a une explication du pourquoi du comment de la première question, je suis preneur.

J'ai remarqué une chose qui peut en dire long, mon avrispmk2 est récalcitrant si les deux atmega ne fonctionnent pas simultanément. J'avais claqué un dip switch afin d'alimenter soit l'un soit l'autre soit les deux, et pour l'instant, je suis incapable de programmer indépendamment mes uC...(le bouton RESET fonctionne impéccablement)

J'ai remarqué également que les leds finissent par se désynchroniser au bout de quelques minutes.

@+

Zoroastre.

Tu as un seul connecteur ICSP pour les 2 micros ? Comment as-tu relié çà ?

C'est quoi tes micros, des ATmega644 ? (tu parlais de Sanguino)

Le petit bricolage c'est pour palier au régulateur 3V3 qui était mauvais ?

Je vois des quartz sur ta carte. Tu tournes bien avec eux, pas avec l'oscillateur interne ? Avec des quartz, je m'attends plutôt à 1 heure pour commencer à voir un décalage (100ppm )

Qu'elle CAO utilises tu ? Sympa la vue 3D.

Yep!

barbudor: Tu as un seul connecteur ICSP pour les 2 micros ? Comment as-tu relié çà ?

Oui, un seul connecteur isp, le switch pourvoyant ou pas à l'alimentation 5v des atmega644P.

Le petit bricolage c'est pour palier au régulateur 3V3 qui était mauvais ?

A la base, j'étais partis sur un 7805 tout ce qui a de plus classique, mais comme le but est ensuite de créer un shield ethernet à base d'ENJ, j'ai opté pour un LD1085 à 3A. Le brochage n'étant plus le même, j'ai créé une adaptation. En fait, j'achette toujours mes équipements en double, donc j'avais un regul 3v3 en sus.

Je vois des quartz sur ta carte. Tu tournes bien avec eux, pas avec l'oscillateur interne ?

Je m'attendais pas à avoir des décalages aussi rapide, je pense désormais tourner avec eux puisqu'au niveau du programme, j'ai bien un delais de 1 seconde entre mes blinks. Par contre, c'est clair que j'ai galéré à faire tourner les uC à la bonne fréquence et en fait je ne m'explique toujours pas comment j'ai réussi ce coup là...et comme tout guerrier a besoin de repos, je suis en mode stand-by ce soir ;)

Qu'elle CAO utilises tu ?

Kicad monsieur, et sur linux en plus XD

@+

Zoroastre.

J'ai commandé il y a quelques jours ce "kit" pour un 644 surtout par facilité de commande unique et pcb tout fait, donc tes essais risque fort de m’intéresser. :open_mouth:

![](http://i.ebayimg.com/00/s/ODE3WDE2MDA=/$(KGrHqZ,!q!E8WZNZl90BPTm3y5bb!~~60_12.JPG)

Yep!

Pas de souci, je répondrais à tes interrogations dans la mesure de mes EEENNNNNOOORMMES conaissances arduinotesques...

@+

Zoroastre.

zoroastre: Sinon, si quelqu'un a une explication du pourquoi du comment de la première question, je suis preneur.

Ton bootloader devait être compilé pour du 16MHz et non du 20Mhz, c'est peut être ça le probléme ?

zoroastre: J'ai remarqué une chose qui peut en dire long, mon avrispmk2 est récalcitrant si les deux atmega ne fonctionnent pas simultanément. J'avais claqué un dip switch afin d'alimenter soit l'un soit l'autre soit les deux, et pour l'instant, je suis incapable de programmer indépendamment mes uC...(le bouton RESET fonctionne impéccablement)

Il faut que toutes les lignes de l'icsp soit bien séparé, sinon les deux µc vont entrer en conflit.