[ Résolu] Arduino serial board + atmega328 (UNO) ?

Bonjour,

J'ai une carte Arduino serial board v2.0a sur laquelle j'ai monté un ATMEGA328 équipé du bootloader UNO. Voir photo sur ce thread.

Et je n'arrive pas à flasher la bête. l'IDE me répond systématiquement :
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding

J'utilise la version 0021 de l'IDE, et j'ai sélectionné le board Arduino UNO et le port série /dev/ttyS0. J'ai vérifié au préalable que mon port série est opérationnel en prenant la main sur la console d'un autre PC.

Je commence à me demander si je n'ai pas fait une bêtise : le ATMEGA328 est-il compatible avec cette carte ?

Merci par avance.

Première hypothèse : les quartz (fréquence d'horloge) sont différents ?

Seconde hypothèse : entre les deux (Duemilanove je crois) il y a eu un changement du reset.

Troisième hypothèse : le bootloader est différent car la puce FTDI a été remplacée par un ATmega8 ?

Première hypothèse : les quartz (fréquence d'horloge) sont différents ?

Non, les deux boards ont un quartz de même fréquence (16MHz).

Seconde hypothèse : entre les deux (Duemilanove je crois) il y a eu un changement du reset.

En lisant la page descriptive du Uno je vois qu'ils ont ajouté un soft reset, mais le hard reset est toujours le même.
Le seul truc est que le soft reset n'est bien entendu pas activable via le Serial board, il y a donc peut-être une question de timing ultra précis à chopper sur le bouton reset au début de l'upload...

Troisième hypothèse : le bootloader est différent car la puce FTDI a été remplacée par un ATmega8 ?

Le remplacement FTDI > ATMEGA8U2 ne concerne que la conversion USB->Série qui n'a aucune utilité sur le Sérial board (pas de FTDI). On parle directement via l'interface série, donc pas besoin de convertisseur.

Je ne suis pas super à l'aise avec un schema éléctronique, mais en comparant les schemas du board Uno et du Serial Borad il semble pourtant que le ATMEGA8 et le ATMEGA328 soient pin compatibles, non ?

Le seul truc est que le soft reset n'est bien entendu pas activable via le Serial board, il y a donc peut-être une question de timing ultra précis à chopper sur le bouton reset au début de l'upload...

Alors il semble que ce soit un truc comme ça. Voici ou j'en suis :

  • Board sélectionné == Arduino UNO
  • Avant de faire l'upload, j'enclenche le hard reset
  • Je clique sur le bouton Upload avec le hard reset toujours enclenché
  • Je m'arrange pour relacher le hard reset juste avant que le texte Binary sketch size apparaisse dans l'IDE
  • Et là j'ai le message "Done uploading"

Je suis tenté d'interpréter ça positivement. Quelqu'un pour confirmer ?
:smiley:

Update :
Je confirme ! Le programme test qui fait clignoter une led sur le pin 13 fonctionne \o/

Bonsoir pini,
a) les chips sont compatible : Atmega8, 48,88,168,328
b) tu as bien un problème de reset,
Le reset automatique est transmis par CTS ou RTS un changement déclenche le reset de la carte Arduino, hélas sur le montage à port série V2, je ne vois pas de branchement de cette patte.
Donc ça ne devais pas exister à l'époque.
c) Il faut continuer de faire comme tu l'as indiquer : presser reset juste avant le téléchargement.

Si tu es bricoleur en électro, tu peux peut être faire un soft reset en branchant une capa sur la pin dtr ou cts du port série, regarde le schéma des duemillanoves et UNO.

A+ Teiva


www.Zartronic.fr : Votre source Arduino en France

Merci Teiva pour ces infos très précises.

Si tu es bricoleur en électro, tu peux peut être faire un soft reset en branchant une capa sur la pin dtr ou cts du port série, regarde le schéma des duemillanoves et UNO.

Je ne suis pas particulièrement fort en électronique, mais c'est tentant... Sur le schéma de la carte UNO, il s'agirait du condo C5 (100nF), à placer entre la pin 4 de la prise série (DTR) et la pin 1 du ATMEGA328 (reset), si j'ai tout compris.
Mais quel est ce composant RESET-EN représenté à côté de C5 ? Eagle me dit que c'est un Jumper, mais je ne vois pas bien quel pourrait être son rôle à cet endroit :-/

Mais quel est ce composant RESET-EN représenté à côté de C5 ? Eagle me dit que c'est un Jumper, mais je ne vois pas bien quel pourrait être son rôle à cet endroit

Si justement si on coupe le jumper on met la carte en Reset manuel, c'est utile avec certains logiciels qui pilote DTR ou CTS et on veut pas que la carte fasse un reset 'inopiné :smiley:

Tu as bien vu la modif, attention elle est prévu avec du serial TTL (5V), faire attention avec le vrai RS232 (normalement +12/-12V)

A+ Teiva


www.Zartronic.fr : Votre source Arduino en France

Tu as bien vu la modif, attention elle est prévu avec du serial TTL (5V), faire attention avec le vrai RS232 (normalement +12/-12V)

Ah... Le multimètre m'affiche 6V entre les pin 4 et 5 du port série. On va dire que c'est bon :slight_smile:
Et je vois bien la baisse de tension sur DTR avant le flash par l'IDE, à peu près au même timing que mon reset manuel. Encourageant...

Merci encore.

Un petit follow up pour annoncer fièrement que mon ajout de soft reset sur le Serial board fonctionne \o/

J'ai finalement implémenté ça avec un transistor BC557 (PNP), une diode 1N4148 et une résistance de 10kohms :

  • La patte DTR de ma prise série est cablée sur la base du transistor via la résistance de 10kohm en série.
  • L'émetteur du transistor est branché sur la patte reset du ATMEGA328.
  • Le collecteur est à la masse.
  • la diode est placée entre la masse et la base (pas sûr que ce soit nécessaire)Et je peux maintenant goûter au confort de flasher ma carte sans toucher au bouton reset :smiley: