Problème de communication avec ATMega328

Bonsoir à tous,
J'ai réalisé une petite carte avec un circuit intégré Arduino ATMega 328 (origine Lex....c).
Lorsque j'essaye de charger le programme dans la "bête", j'ai les messages suivants :

Binary sketch size 896 bytes (of 30720 byte maximum)
avrdude : stk500_getsync() : not in sync : resp=0x00
avrdude : stk500_disable() : protocol error, expert=0x14, resp=0x51

Comme je suis complètement perdu, j'aimerai que quelqu'un puisse me dire ce que je dois faire.
Merci pour votre aide
Icare

Dans le menu Tools de l'environnement de développement, tu vérifies :

  1. que tu as sélectionné la bonne carte arduino dans le sous-menu Board
  2. que tu as sélectionné le bon port série dans le sous-menu Serial Port

Maintenant tu dis que tu as fait une carte, si ce n'est pas une carte du commerce il faut commencer par vérifier ton câblage par rapport au schéma.
Les alimentations, le quartz, les condensateurs entre le quartz et la masse, la résistance de tirage au plus sur le reset, le branchement de la sonde de téléchargement sur la carte
Et d'ailleurs, de quel schéma es-tu parti?

Bonsoir,
Merci pour vos éléments de réponse.
Le schéma est issu de la revue Electronique Pratique n°357 page 27.
J'ai déjà vérifié plusieurs fois le câblage de ma carte et d'un point de vue paramètres soft cela semble correcte mais je vais revérifier l’ensemble.
@+

Je comprend que tu as acheté le "Circuit intégré "Arduino ATMega328" seul" chez Lex...c ?

Qu'elle carte as tu choisit dans le menu "Board" ?
Avec un chip similaire acheté chez "Sel...c", j'ai du utiliser "Arduino Uno"

Le problème vient probablement de la vitesse de la liaison série qui a été configurée dans logiciel "bootloader" présent dans la flash.
Il faut choisir une "Board" qui marche à la même vitesse que celle du bootloader de ton circuit.

Attention, si tu as acheté un ATMega328 non pré-programmé avec un bootloader Arduino, tu ne va pas pouvoir aller plus loin sans disposer :

  • soit d'un programmateur ISP type TinyISP-USB
  • soit d'une autre carte Arduino avec son processeur qui pourra te servir de programmateur pour ton circuit "vierge"

Bonjour barbdor,

Qu'elle carte as tu choisit dans le menu "Board" ?

J'ai essayé toute la liste des boards disponibles à base de ATMega328
Pour la communication avec le composant, je dispose sur mon PC d'une interface série et j'ai juste utilisé un convertisseur RS232/TTL

Attention, si tu as acheté un ATMega328 non pré-programmé avec un bootloader Arduino, tu ne va pas pouvoir aller plus loin sans disposer :

Le composant est bien programmé avec le bootloader Arduino
Merci pour tes conseils et aide

salut,

en partant du principe que le bootloader est bien le bon et que ton cablage est correct, je pencherai pour un problème au niveau de ton convertisseur série/TTL (vécu).

Cause probable:

  • la ligne RTS du convertisseur ne provoque par le reset de l'atmega au bon moment
  • le Tx/Rx du convertisseur n'est pas correctement connecté au Rx/Tx de l'atmega

Solutions:

  • juste avant la fin de la compilation, relache la ligne reset de l'atmega (plusieurs essais seront nécessaires)
  • vérifier que Tx de l'un est sur Rx de l'autre.

et j'ajouterais que s'il y a des leds témoins directement sur les lignes Tx/Rx de la liaison série, la communication est bloquée. Les supprimer le cas échéant.

Gromain

Gromain59:
Cause probable:

  • la ligne RTS du convertisseur ne provoque par le reset de l'atmega au bon moment

je penche également pour un problème avec l'auto reset.

Est-ce que tu as une led sur D13 (comme l'Arduino standard) ?
Au moment du reset, cette led doit "pulser" 2 fois
Si ce n'est pas le cas c'est qu'il n'y a pas de bootloader dans le chip

Il est peut être temps de poster quelques photos de ton adaptateur USB/série, des schémas, ... pour aider a voir clair ?

Le schéma est issu de la revue Electronique Pratique n°357 page 27

On est pas tous abonné à Électronique Pratique alors ça ne nous aide pas beaucoup.

Et sur Me......ad ?
Ah non mince, c'est finit :zipper_mouth_face:

Salut,

barbudor:
Est-ce que tu as une led sur D13 (comme l'Arduino standard) ?
Au moment du reset, cette led doit "pulser" 2 fois
Si ce n'est pas le cas c'est qu'il n'y a pas de bootloader dans le chip

Il est peut être temps de poster quelques photos de ton adaptateur USB/série, des schémas, ... pour aider a voir clair ?

J'ai bien une diode sur D13 et elle pulse lors d'un reset et même lors de la tentative de download, elle clignote
Je n'utilise pas de convertisseur USB/TTL car le port série est en natif sur le PC
@+

Salut,

fdufnews:

Le schéma est issu de la revue Electronique Pratique n°357 page 27

On est pas tous abonné à Électronique Pratique alors ça ne nous aide pas beaucoup.

Le schéma est joint en annexe au post

arduino.png

Salut,

Gromain59:
en partant du principe que le bootloader est bien le bon et que ton cablage est correct, je pencherai pour un problème au niveau de ton convertisseur série/TTL (vécu).
Cause probable:

  • la ligne RTS du convertisseur ne provoque par le reset de l'atmega au bon moment
  • le Tx/Rx du convertisseur n'est pas correctement connecté au Rx/Tx de l'atmega

Solutions:

  • juste avant la fin de la compilation, relache la ligne reset de l'atmega (plusieurs essais seront nécessaires)
  • vérifier que Tx de l'un est sur Rx de l'autre.
    Gromain

Il est possible que cela vienne de la liaison série, je vais vérifier le bon fonctionnement. Le reset à partir du PC se fait sur RTS ou DTR ?
@+

icare:
Je n'utilise pas de convertisseur USB/TTL car le port série est en natif sur le PC

Attention, le port série de ta carte en niveau TTL (branché directement sur le chip 0V..5V), celui de ton PC en niveau RS232 (+12V..-12V).
As tu un MAX232 ou similaire pour faire la conversion ?

Sinon "Pfffssshhhhh" fait l'Arduino

Salut,

barbudor:

icare:
Je n'utilise pas de convertisseur USB/TTL car le port série est en natif sur le PC

Attention, le port série de ta carte en niveau TTL (branché directement sur le chip 0V..5V), celui de ton PC en niveau RS232 (+12V..-12V).
As tu un MAX232 ou similaire pour faire la conversion ?

Sinon "Pfffssshhhhh" fait l'Arduino

Je te rassure il y a bien un MAX232 entre les deux.
@+

La led qui clignote au reset ou au démarrage du téléchargement c'est donc que le DTR (et non pas le RTS :wink: ) passe bien.

Si je ne me trompe pas, l'ATmega est sur une petite carte fille qui se branche sur une carte mère.
Je suppose donc que le MAX232 est sur cette carte mèer.
Peux tu :

  • Enlever la carte Arduino de son support
  • Sur la carte mère, faire un pont entre TX et RX
  • Utiliser le serial monitor dans l'IDE pour envoyer des caractères (
    Normalement quand tu fait "Send", ca devrait apparaitre dans la fenêtre en dessous

Si çà c'est bon, je ne vois aucun problème électrique.

Il ne reste que la vitesse du port série qui va dépendre du modèle de carte choisit.
As tu essayé avec le modèle "Uno" ?

Même s'il n'y a pas "328" dans le nom, c'est bien un ATmega328 dessus, qui plus est c'est une des rare cartes dont le bootloader est par défaut à 115200 baud.
La plupart des autres "328" sont a 57600.

le DTR (et non pas le RTS )

je confirme que ma passerelle USB/UART utilise bien le signal RTS.
C'est également le cas pour le FTDI.

Un autre test serait de monter l'atmega sur un arduino Duemilanove pour essayer de charger le soft. Encore faut-il en avoir un :slight_smile:

Gromain

@Gromain

Il y a peut être plusieurs méthodes ?
J'utilise cet adapteur : http://www.sparkfun.com/products/9716
Schéma ici : http://www.sparkfun.com/datasheets/DevTools/Arduino/FTDI%20Basic-v21-5V.pdf
Et c'est bien le DTR qui pilote le Reset
le RTS n'est pas relié

Je suppose que AVRdude titille les 2 pour que ca marche chez tout le monde...
Désolé ... :blush:

Et c'est bien le DTR qui pilote le Reset
le RTS n'est pas relié

quand je parlais de FTDI, je faisais référence à ce cable là: FTDI Cable 5V - DEV-09718 - SparkFun Electronics
...qui utile RTS :wink:

il me semble qu'en fonction de l'OS (linux ou windows), la façon de commander les signaux DTR et RTS n'est pas la même.

Dans tout les cas, un reset manuel doit pouvoir confirmer ou non un problème d'auto-reset.

Gromain

Donc schémas différents ....
Bref, on s'écarte du sujet .... :wink: