Arduino MEGA et AVR Studio

Bonsoir à tous,

J'essaie de configurer AVR Studio pour pouvoir l'utiliser avec ma petite Arduino MEGA, j'ai pour ce fait suivi le tuto
http://breizhmakers.over-blog.com/pages/tutoriel-developpement-arduino-avec-avr-studio-5-1-7556975.html
J'arrive à compiler blink sans erreur mais j'ai un problème quand il faut envoyer l'hex à la carte par l'intermédiaire de avrdude.
J'ai l'erreur suivante retrouvée assez souvent sur le web

avrdude: stk500_getsync(): not in sync: resp=0x00

Ou je suis surpris c'est que depuis l'IDE Arduino, j'envoie sans problème le code à la carte en cliquant sur "upload"
Par contre si je demande de l'uploader en appuyant sur la touche MAJ donc par l'intermédiaire du "programmer" la j'ai la même erreur

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\arduino-1.0\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM6
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: 
avrdude: stk500_getsync(): not in sync: resp=0x00

Une piste ?
Merci pour votre aide
++

Bonjour,

Je vois déjà un probléme qui me saute au yeux :

Using Programmer : stk500v1

Les cartes de type MEGA ont un bootloader de type stk500 v2, d'ou (à mon avis) le probléme de synchronisation.

Ensuite cette vitesse de communication me semble fausse :

Overriding Baud Rate : 19200

Dans boards.txt je vois plutot 57600 bauds pour la carte mega classique.

Bonsoir Skywodd

Voici les traces quand j'appuie directement sur l'upload et qui fonctionne.

C:\Program Files (x86)\arduino-1.0\hardware/tools/avr/bin/avrdude -CC:\Program Files (x86)\arduino-1.0\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega2560 -cstk500v2 -P\\.\COM6 -b115200 -D -Uflash:w:C:\Users\Philippe\AppData\Local\Temp\build6998711621266525584.tmp\Blink.cpp.hex:i 

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\arduino-1.0\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM6
         Using Programmer              : stk500v2
         Overriding Baud Rate          : 115200

Par contre quand j'utilise le upload par "programmer" ça plante avec ce code:

C:\Program Files (x86)\arduino-1.0\hardware/tools/avr/bin/avrdude -CC:\Program Files (x86)\arduino-1.0\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega2560 -cstk500v1 -P\\.\COM6 -b19200 -Uflash:w:C:\Users\Philippe\AppData\Local\Temp\build6998711621266525584.tmp\Blink.cpp.hex:i 

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\arduino-1.0\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM6
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: 
avrdude: stk500_getsync(): not in sync: resp=0x00

Ou faut il changer les paramètres du "programmer" dans avrdude.conf ?

Merci une fois de plus pour ton aide
++

oldchap:

Using Port : \.\COM6
Using Programmer : stk500v2
Overriding Baud Rate : 115200

Using Port : \.\COM6
Using Programmer : stk500v1 --> Mauvaise version du protocole
Overriding Baud Rate : 19200 --> Mauvaise vitesse de communication

oldchap:
Ou faut il changer les paramètres du "programmer" dans avrdude.conf ?

Quand tu click sur "upload using programmer" l'ide par du principe que tu utilise un programmateur d'AVR externe de type STK500 !
Tu peut choisir le type de programmateur dans tools -> programmers.

Ce que je ne comprend pas c'est pourquoi tu passe par l'option "using programmer" alors que tu utilise le bootloader arduino !?
"Using programmer" -> programmation SANS le bootloader en utilisant un programmateur d'AVR externe.

C était surtout pour savoir quels paramètres passer à avr studio :wink:
Mais si tu peux me donner la chaîne avrdude en utilisant le bootloader arduino pour avrstudio je suis preneur
++

oldchap:
Mais si tu peux me donner la chaîne avrdude en utilisant le bootloader arduino pour avrstudio je suis preneur

Il suffit de regarder la console lors de l'upload, tu as toi même posté la solution à ta question :wink:

avrdude -C chemin\vers\avrdude.conf -p atmega2560 -c stk500v2 -P \\.\COM6 -b 115200 -D -U flash:w:ton\fichier\compiler.hex:i

Suis entièrement d accord avec toi mais quand je rentre cette chaîne dans avr studio j ai la même erreur signalée dans mon premier post
J en perds mon latin :slight_smile:
Ne serait ce pas un problème de bootloader ?

oldchap:
Suis entièrement d accord avec toi mais quand je rentre cette chaîne dans avr studio j ai la même erreur signalée dans mon premier post
J en perds mon latin :slight_smile:
Ne serait ce pas un problème de bootloader ?

Tu doit avoir une version de avrdude qui ne supporte pas le bootloader stk500 modifié arduino.
Essaye de remplacer ta toolchain avr studio par la toolchain winavr (derniére version).
Ou au pire test -c arduino (pas sur qu ça marche avec une mega)

Mon avrdude est celui installé avec arduino 1.0
Ou puis je trouver la toolchain winavr (derniere version)
Merci pour ton aide

Bonjour,
Je suis l'auteur du tutoriel en question (enfin de sa traduction/adaptation).
J'ai moi aussi eu ces messages "not in sync" quand je n'utilisais pas le bon type de programmeur dans la ligne de commande passée à AVRDude.

Pour modifier la ligne de commande passée à AVRDude dans AVR Studio il faut aller dans tools/external tools et modifier la config pour AVRDude.
Un truc du genre devrait fonctionner (en adaptant les chemins):
-C D:\arduino\arduino-1.0\hardware\tools\avr\etc\avrdude.conf -p atmega328p -c stk500v2 -P COM6 -b 115200 -D -U flash:w:"$(ProjectDir)Debug$(ItemFileName).hex":i

Cette semaine je devrais ajouter au tutoriel la config du compilateur C (nécessaire pour les projets utilisant la librairie Wire, tel que mon projet actuel par exemple) ainsi que la config de putty pour avoir facilement un terminal série/loggueur.

De mon coté je n'ai pas réussi à faire marcher une commande AVRdud dans les external tools
Les macros que j'ai utilisées : $(TargetPath) ou similaire (de mémoire je suis pas devant mon PC perso) n'étaient pas évaluées correctement.
Ca marche avec $(ProjectDir) ?

Y a t'il un moyen que ca suive le choix de "Build configuration" Debug ou Release ?
C'est pour cela que j'était partit sur $(TargetPath)

Pour l'instant mes 2 configs Build et Release sont idem au niveau optimisation et options de debug (désactivée) mais j'ai la macro DEBUG de définie dans la config "Debug" pour activer des traces dans mes codes.
Mais plus tard j'envisage bien de m'acheter un AVRdragon....

Est-ce que quelqu'un sait comment on peut rajouter des modèles de projet ?
Ca me gonfle d'avoir systématiquement à ajouter F_CPU, ARDUINO, les libs Arduino, etc...

barbudor:
De mon coté je n'ai pas réussi à faire marcher une commande AVRdud dans les external tools
Les macros que j'ai utilisées : $(TargetPath) ou similaire (de mémoire je suis pas devant mon PC perso) n'étaient pas évaluées correctement.
Ca marche avec $(ProjectDir) ?

Oui. Par contre il faut se positionner sur le fichier .cpp principal du projet sinon il ne calcule pas le bon nom de fichier .hex

barbudor:
Y a t'il un moyen que ca suive le choix de "Build configuration" Debug ou Release ?
C'est pour cela que j'était partit sur $(TargetPath)

Peut-être mais je n'ai pas essayé.
C'est mon premier projet Arduino alors je ne maitrise pas encore toutes les subtilités du truc (même si je pratique le C/C++ depuis longtemps).

barbudor:
Pour l'instant mes 2 configs Build et Release sont idem au niveau optimisation et options de debug (désactivée) mais j'ai la macro DEBUG de définie dans la config "Debug" pour activer des traces dans mes codes.
Mais plus tard j'envisage bien de m'acheter un AVRdragon....

Je fais aussi avec des #define
Ca me tenterais bien aussi un AVRDragon car j'ai du mal à me passer d'un débuggueur :grin:

barbudor:
Est-ce que quelqu'un sait comment on peut rajouter des modèles de projet ?
Ca me gonfle d'avoir systématiquement à ajouter F_CPU, ARDUINO, les libs Arduino, etc...

Je viens d'essayer. Ca marche:
Menu File/Export Template.
Ca va exporter la solution courante comme un template et importer automatiquement ce template dans AVR Studio. Attention ça prend aussi tous les fichiers de la solution, donc faut préparer le truc pour avoir un squelette de programme Arduino par exemple.

Ensuite pour créer un nouveau projet depuis ce modèle: File/new project et choisir le template qu'on vient de créer. Y'à plus qu'à remplir les champs et on se retrouve avec un projet pré-configuré.

Cool la génération du template!

J'ai aussi abandonné de faire des lib pour chacune des libs Arduino (SPI, SoftSerial, etc ...). Je n'ai fais que la Core.
Je copie direct les sources des autres libs dans le projets, vue qu'avec AVRstudio ca gère correctement les builds, j'ai déjà gagné le temps de recompiler 25 libs inutiles....

barbudor:
Cool la génération du template!

J'ai aussi abandonné de faire des lib pour chacune des libs Arduino (SPI, SoftSerial, etc ...). Je n'ai fais que la Core.
Je copie direct les sources des autres libs dans le projets, vue qu'avec AVRstudio ca gère correctement les builds, j'ai déjà gagné le temps de recompiler 25 libs inutiles....

Pareil. J'ai la lib core récupérée depuis l'IDE Arduino comme indiqué dans le tutoriel.
Pour les autres librairies je les ajoute à la solution via un lien (elle ne sont pas copiées mais juste référencées).
Ca marche pas mal comme ça.
J'utilise encore l'IDE Arduino pour faire des tests des librairies en particulier mais sinon je développe tout avec AVR Studio.

Je suis un grand benêt ;-)) je vous le dis ...
Tout est correctement parametré dans AVR studio depuis le début, mais la seule chose que j'ai tout simplement oublié de faire, c'est ... d'appuyer sur le bouton reset avant de lancer avrdude...
Voilà, un petit reset avant et mon code se transfére bien dans l'Arduino Mega
Merci à tous pour votre aide
Oldchap