atmega 328 sur breadboard

Bonjour à tous,

Après des heures de recherches et de lectures sur de nombreux forums (dont celui-ci), je me décide à poster.

Projet : porter un arduino sur une bredboard

Problème : impossible de téléverser un sketch

Matériel :
Arduino UNO, ATMEGA328P, oscillateur 16MHz, condensateurs (2x 22pF, 1x 100nF), 1x résistance de 10k Ohm, FTDI FT232RL

Description :
Je me suis basé sur le tuturiel de U=RI U=RI | Porter son Arduino sur une breadboard - YouTube que j'ai suivi à la lettre.
J'ai gravé le bootloader sur mon atmega 328P au moyen de ma carte arduino, sans aucun problème.
Puis j'ai réalisé le montage avec mon FTDI comme dans le tutoriel (cf. image ci-dessus et photos en fin de post).

Description détaillée du problème :
Lorsque j'essaie de téléverser un sketch (ex. blink), la barre de téléversement reste bloquée à 100% pendant plus d'une minute, puis un message d'erreur apparaît en indiquant qu'il y a un "problème de téléversement vers la carte". Voici le message :

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x07
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x07
Problème de téléversement vers la carte.
Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.

Infos complémentaires :
Je précise que dans l'IDE Arduinon(menu "Outils"), j'ai bien sélectionné la carte Arduino UNO (puisque j'ai un oscillateur à 16MHz), le programmeur AVR ISP ainsi que le port COM.

J'ai constaté que certaines puces chinoises posaient problème et n'étaient pas reconnues par le pc , pourrait-il s'agir ici du même problème ou le fait d'avoir réussi à graver le bootloader signifie que le processeur est bien "reconnu" ?

Sur le ftdi, il y a un jumper pour commuter entre 5V et 3.3 ; je suis en 5V actuellement, cela pourrait-il être la cause ?

Merci d'avance pour votre aide.

ftdi.jpg



ftdi.jpg

Bonjour,

On ne voit pas très bien car les fils n'ont pas tout à fait les mêmes couleurs sur les deux photos, mais on dirait que rx et tx ne sont pas croisés.
Il faut croiser tx et rx.

Puisque vous avez réussi à programmer le bootloader avec un programmateur usbasp je suppose, essayez de verser le programme blink avec ce même programmateur. Si c'est bon, cela voudra dire que votre cablâge n'est pas bon.
Rapprochez le quartz et les 2 condos de l'atmega328. Éloigner un quartz n'est jamais bon.

kamill:
Bonjour,

On ne voit pas très bien car les fils n'ont pas tout à fait les mêmes couleurs sur les deux photos, mais on dirait que rx et tx ne sont pas croisés.
Il faut croiser tx et rx.

Effectivement, Rx et Tx ne sont pas croisés. J'avais testé en les croisant, sans succès.
Je viens de tester à nouveau en les croisant, le problème persiste.

Tu avais raison, j'avais mal observé le schéma et Tx et Rx doivent effectivement être croisés ! C'est déjà un bon début. Merci

pierrotm777:
Puisque vous avez réussi à programmer le bootloader avec un programmateur usbasp je suppose, essayez de verser le programme blink avec ce même programmateur. Si c'est bon, cela voudra dire que votre cablâge n'est pas bon.
Rapprochez le quartz et les 2 condos de l'atmega328. Éloigner un quartz n'est jamais bon.

Résultat des courses :
Le quartz et les deux condensateurs sont déjà proches du processeur dans MON montage (cf. photo).
J'ai refait le même montage que pour graver le bootloader (j'ai d'ailleurs gravé à nouveau le bootloader) et j'ai ensuite téléverser le sketch "blink" (modifié avec la led en D8). Le téléversement s'est fait sans problème.
Mais le téléversement s'est fait sur l'Arduino utilisé comme ISP et non sur le nouvel atmega328P.

Comment être sûr que j'ai bien gravé le bootloader sur l'atmega328P (de la bredboard) et non sur celui de la carte Arduino UNO.

Y a-t-il un test à faire sur le processeur afin d'être sur que la gravure du bootloader s'est bel et bien effectuée ?

Se pourrait-il que le FTDI FT232RL soit défectueux ?

Bon, ça fonctionne MAIS en utilisant l'arduino (sans le processeur) et non avec le FTDI.

Par contre je ne sais toujours pas pourquoi cela ne marche pas avec le FTDI.

De plus en utilisant l'Arduino, Tx va sur Tx et Rx sur Rx, donc pas croisés ?!?! (je dirais que c'est normal, puisque c'est le Tx de la carte qui va sur le Tx du processeur).

Pour tester ton ftdi, tu le débranches de la breadboard et tu relies tx et rx. Avec le terminal tu tapes quelquechose et tu dois le voir en echo sur l'écran.

Effectivement si tu utilises l'arduino comme interface usb serie, il ne faut pas croiser tx et rx.

Bon, je suis à court d'idées...

Voici les modifications que j'ai encore testées :

  • j'utilisais un câble "chip" usb mini... j'ai donc changé de câble sur le FTDi > problème persiste !

  • j'ai changé de FTDI... J'en avais deux identiques > problème persiste !

  • j'ai essayé avec Rx/Tx croisés (cas standard) et décroisés > problème persiste !

Il semble clair que le problème vienne du FTDI (pas que le composant soit endommagé, puisque je l'ai remplacé) mais peut-être que ce modèle/fabricant est inadapté ? (ce qui serait étrange).

Certes en utilisant la carte Arduino sans le processeur, je peux téléverser les sketches vers mon atmega328P sur la bredboard mais j'aimerais plutôt utiliser le FTDI...

Quelqu'un a-t-il encore une idée ?

kamill:
Pour tester ton ftdi, tu le débranches de la breadboard et tu relies tx et rx. Avec le terminal tu tapes quelquechose et tu dois le voir en echo sur l'écran.

Euh... j'ai pas tout compris... désolé...
Donc j'ai Googlé...

J'ai téléchargé Putty, court-circuité Rx et Tx de mon FTDI et sur Putty j'ai sélectionné le mode "série". choisi le port COM du FTDI (à 9600), puis j'ai lancé la connexion.

Un écran s'est ouvert et j'ai tapé un texte au clavier qui est apparu dans le "moniteur" de Putty...

Cela signifie que mon FTDI est opérationnel, correct ?!

Oui, ça veut dire que le ftdi fonctionne (si putty n'est pas configuré en echo)
Tu pouvais faire le test avec le moniteur série de l'ide arduino.

Pour téléverser le sketch, quel programmateur (menu "Outils") faut-il choisir, j'ai vu sur un tuto (avec le même FTDI) qu'il prenait ArduinoIsp, est-ce correct ? (j'ai testé avec ArduinoIsp et AVR ISP, mais rien n'y fait ! Grrrrr...!).

J'ai redessiné mon schéma exact...

Pour televerser avec un ftdi, c'est comme pour televerser dans une carte uno, c'est la flèche en haut à gauche.
Dans ce cas ce qui est indiqué dans programmateur n'a aucune importance.

kamill:
Pour televerser avec un ftdi, c'est comme pour televerser dans une carte uno, c'est la flèche en haut à gauche.
Dans ce cas ce qui est indiqué dans programmateur n'a aucune importance.

Ok... je ne savais pas...

Habituellement j'utilise une interface avec un CP2102 pour programmer et ça fonctionne nickel.

Je viens d'essayer avec un ftdi et là j'ai des messages d'erreur.
Apparemment le téléversement se fait bien mais à la fin j'ai des messages d'erreur
soit celui ci

avrdude: stk500_paged_load(): (a) protocol error, expect=0x14, resp=0x93
avrdude: stk500_cmd(): programmer is out of sync
le port série sélectionné avrdude: stk500_cmd(): programmer is out of sync
n'existe pas ou votre Arduino n'est pas connectée

soit un autre qui me dit qu'il y a une erreur de vérification

La je viens d'avoir un téléchargement sans erreur.
Mais les suivants indiquent des erreurs.

J'investiguerai plus profondément demain, je vais me coucher.

Je précise que dans l'IDE Arduinon(menu "Outils"), j'ai bien sélectionné la carte Arduino UNO (puisque j'ai un oscillateur à 16MHz), le programmeur AVR ISP ainsi que le port COM.

OK. sauf que normalement c'est plutôt "Arduino as ISP".

Comment être sûr que j'ai bien gravé le bootloader sur l'atmega328P (de la bredboard) et non sur celui de la carte Arduino UNO.

Pour graver le bootloader de la UNO il faudrait utiliser une deuxième UNO ou un USBASP ou USBTINY connecté sur le connecteur ICSP de celle-ci.

Pour téléverser le bootloader dans l'ATMEGA breadboard il faut utiliser le menu "Outils / Graver la séquence d'initialisation".
L'IDE dans ce cas utilise le programmateur que tu as choisi dans le menu "Outils / programmateur" :

  • une UNO (Arduino as ISP)
  • un USBASP
  • un USBTINY
  • etc.

Ensuite avec un FTDI branché sur l'ATMEGA breadboard, tu n'as plus qu'à utiliser la flèche "Téléverser" pour charger ton application.

Aucun risque de confusion.

Débranches-tu le câble USB de la UNO avant de téléverser ton application BLINK par le FTDI ?

Quand tu branches la UNO et le FTDI sur le PC, combien de ports vois-tu dans le menu "Outils / port" ?

Ensuite débranche le câble USB de la UNO. Quel port vois-tu ?

Je te pose toutes ces questions car j'utilise un USBASP, qui n'est pas vu comme un port USB, donc pas de confusion possible. Je n'ai jamais essayé le "UNO as ISP".

Il pourrait tout simplement s'agir d'un problème de choix du port USB.

@+

Bonjour,

s'il te reste des 100nF, tu peux en placer 1 sur chaque ligne d'alimentation entre le gnd et le +5 volts, au plus près de l'atmega

(ne le prends pas mal) on ne voit pas si les pattes du quartz (écartement ~5mm) ont bien été pliées pour entrer dans les bons trous (écartement 2,54mm) ?

@kamill

Étrange, effectivement. Mais tu me dis que le sketch passe quand même ?
Car de mon côté le sketch ne passe même pas (j'essaie de téléverser un skecth qui fait clignoter une led, tout ce qui a de plus simple pour tester visuellement).

Je ne comprends pas, cer les tuto de la chaîne U=RI sont toujours de qualité et très précis. C'est peut-être dû à une contrefaçon chinoise du ftdi ?!?!

Merci d'avoir tester.

hbachetti:
OK. sauf que normalement c'est plutôt "Arduino as ISP".

Effectivement, j'ai utilisé Arduino as ISP pour bootloader

Pour téléverser le bootloader dans l'ATMEGA breadboard il faut utiliser le menu "Outils / Graver la séquence d'initialisation".
L'IDE dans ce cas utilise le programmateur que tu as choisi dans le menu "Outils / programmateur" :

  • une UNO (Arduino as ISP)
  • un USBASP
  • un USBTINY
  • etc.
    Ensuite avec un FTDI branché sur l'ATMEGA breadboard, tu n'as plus qu'à utiliser la flèche "Téléverser" pour charger ton application.
    Aucun risque de confusion.

Ok, je ne savais. Merci pour l'info !

Débranches-tu le câble USB de la UNO avant de téléverser ton application BLINK par le FTDI ?
Quand tu branches la UNO et le FTDI sur le PC, combien de ports vois-tu dans le menu "Outils / port" ?
Ensuite débranche le câble USB de la UNO. Quel port vois-tu ?
Je te pose toutes ces questions car j'utilise un USBASP, qui n'est pas vu comme un port USB, donc pas de confusion possible. Je n'ai jamais essayé le "UNO as ISP".
Il pourrait tout simplement s'agir d'un problème de choix du port USB.

Oui, je débranche la UNO et mon FTDI est reconnu comme périphérique USB (noName) (cf. capture d'écran).
usb_ftdi.jpg

Là, je sèche ! Je vais peut-être essayer un autre type de module.

Merci pour tes contributions.

usb_ftdi.jpg