Go Down

Topic: Affichage sur écran PC depuis un Atmega328P breadboard [RESOLU] (Read 529 times) previous topic - next topic

gaelcom

Bonjour à tous,
Depuis peu je suis parvenu à réaliser (non sans difficulté) une arduino sur breadboard avec une puce Atmega328P. J'ai gravé la "séquence d'initialisation" via une arduino Uno, j'ai pu télécharger le sketch Blink. Par contre je bute sur le recours à la fonction Serial.println() pour afficher du texte ou des données sur l'écran de mon PC comme je le faisais avec ma carte arduino Uno via le bouton "moniteur série" en haut à droite de l'IDE.
Je ne sais pas comment câbler l'Atmega breadboard avec l'arduino Uno. J'ai lu quelques sites en anglais ou les liaisons RX et TX sont évoquées mais rien de compréhensible.
Merci par avance de votre retour.

kamill

Bonjour,

Il te faut un adaptateur usb-serie. Cet adaptateur peut aussi te permettre de programmer ton atmega328 si tu y as gravé le boot-loader.
Voir par exemple ici.

hbachetti

Salut

Après avoir flashé le bootloader dans l'ATMEGA, il faut connecter un convertisseur USB / Série sur la broche RX (2) et TX (3) comme ICI.
Ensuite il sera possible de téléverser l'application sans la UNO et d'utiliser le moniteur série.

En attendant, en téléversant l'application Blink avec la UNO, tu a certainement écrasé le bootloader.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

gaelcom

Bonjour,

Il te faut un adaptateur usb-serie. Cet adaptateur peut aussi te permettre de programmer ton atmega328 si tu y as gravé le boot-loader.
Voir par exemple ici.
Merci de ton retour. J'ai malheureusement commandé ce modèle là. Pourrais-je également y parvenir avec?
Voici le lien ici.

hbachetti

Pas de problème.
Mais n'oublie pas de reflasher le bootloader, sinon, ce sera blink for ever.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

kamill

Oui, tout a fait. Il y a plusieurs modèles d'interface usb-série avec des chips différents. Tous fonctionnent à condition d'installer le bon driver (s'il n'est pas déjà reconnu par le système d'exploitation).
Tu peux même utiliser une carte uno comme interface usb-serie.

Par contre avec l'adaptateur que tu montres tu ne pourras pas programmer (automatiquement) ton atmega328 car il n'a pas de dtr. On peut utiliser un mode manuel en appuyant sur reset au moment du transfert.

gaelcom

Pas de problème.
Mais n'oublie pas de reflasher le bootloader, sinon, ce sera blink for ever.

Je ne comprends pas l'enchaînement des tâches:
1) je flash le bootloader avec la carte Uno (ça ça marche)
2) je téléverse mon programme sur l'Atmega328P via la carte Uno qui fait appel à Serial.println ("essai affichage écran") par exemple (ça marche aussi)
3)j'utilise le FDTI CP2102 en connectant le RX FDTi sur le TX Atméga328P, le TX FDTI sur le RX Atméga328P, GND avec GND et 5v FDTI avec la pin7 de l'Atmega328P (je n'ai pas encore essayé) et je dois voir l'affichage sur l'écran du PC?

C'est très confus. Merci de vos éclairages même si je sais que ces questions reviennent sans cesse.

kamill

Oui c'est ça.
Par contre tu ne connectes pas le 5V si l'atmega est déjà alimenté par une autre alimentation.
Le 5V sert à alimenter l'atmega via l'usb.

gaelcom

Oui c'est ça.
Par contre tu ne connectes pas le 5V si l'atmega est déjà alimenté par une autre alimentation.
Le 5V sert à alimenter l'atmega via l'usb.
Merci.
J'essaie et vous fais un retour.

gaelcom

Quote
Oui c'est ça.
Par contre tu ne connectes pas le 5V si l'atmega est déjà alimenté par une autre alimentation.
Le 5V sert à alimenter l'atmega via l'usb.
Ça fonctionne, j'ai bien la liaison avec l'écran PC. Le message texte s'affiche.
Question bonus!: si je veux changer le texte, à part refaire les étapes 1) à 3), puis je:
a) garder les connexions comme à l'étape 3
b) changer le texte dans l'IDE et téléverser le programme en appuyant sur téléverser. Appuyer sur Reset (mettre pin 1 à la masse?) pendant le téléversement

J'ai essayé mais j'ai un message d'erreur
Code: [Select]
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0
Une erreur est survenue lors du transfert du croquis


Un conseil? Merci.

kamill

Il faut maintenir le reset jusqu'à apparaisse "Téléchargement...", à ce moment là relacher le reset.
Il faut avoir gravé le bootloader.

hbachetti

Tu peux aussi brancher le DTR du converisseur USB / Série sur le RESET de l'ATMEGA, comme sur une NANO, à travers un condensateur de 100nF.

Le schéma ICI.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

gaelcom

Il faut maintenir le reset jusqu'à apparaisse "Téléchargement...", à ce moment là relacher le reset.
Il faut avoir gravé le bootloader.
Il faut que je re-grave le bootloader avec ma carte Uno?
Je ne comprends pas ce principe de bootloader. Je pensais qu'il fallait le faire une fois et qu'après cela n'était plus utile.

hbachetti

#13
Oct 14, 2018, 06:44 pm Last Edit: Oct 14, 2018, 06:46 pm by hbachetti
J'ai déjà expliqué plus haut.
En chargeant l'application Blink en utilisant une UNO comme programmateur tu as écrasé le bootloader. Il n'existe plus.

Tu dois le recharger, toujours avec la UNO. Ensuite tu débranches la UNO, tu branches le convertisseur et tu téléverses l'application par l'USB dans l'ATMEGA.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

68tjs

Si je peux me permettre quelques réflexions et conseils je dirais volontiers :

1) Avoir chercher et réussi à faire fonctionner un micro atmega328p sur breadboard est une très bonne chose qui t'as permis de voir que le micro a d'énormes possibilités.

2) Tu as pu découvrir la programmation par ISCP. Posséder une carte UNO pour programmer en ISCP n'est pas une obligation, il existe pour de 2€ des programmeurs tout faits avec le bon cordon et basé sur un autre micro Atmel, je veux parler des USBasp et TinyUSB.

Ce qu'il faut en retenir c'est qu'il existe deux méthodes pour programmer un Atmega328p :
- par une interface USB/Série qui exige la présence d'un programme permanent dans la mémoire flash : le bootloader
ou
- par l'ISCP comme pour charger le bootloader mais qui ne nécessite pas d'avoir chargé le bootloader.

La plus courante est par l'interface USB/série mais elle n'est pas obligatoire.

Par l'ISCP si tu utilises le même ordre pour charger un programme que celui pour charger le bootloader tu va écraser le bootloader.
Il faut donc lire la notice du logiciel "avrdude" et faire la programmation en ligne de commande.

D'un autre coté utiliser l'ISCP permet de récupérer la place du bootloader dans la mémoire. S'il est toujours le même on récupère 2k sur un total de 32 k, ce n'est pas négligeable.

3) Si tu préfère rester dans "le sérail" et utiliser la programmation par l'interface USB/Série il faut faire comme on t'a dis avec la sortie DTR, franchement cela ne vaut pas le coup de t'embêter avec un module qui ne le possède pas.

4) Dernier point : je ne veux surtout pas te casser et je répete qu'avoir monté un atmega sur breadbord est une excellente initiative dont tu n'auras qu'à te féliciter plus tard, bravo, mais désolé, économiquement ce n'est pas viable et question emmerdes n'en parlons pas.

Les prix des composants varient dans des proportions énormes selon que tu les achètes à l'unité ou que tu négocies un accord pour la livraison de 2,5 millions de pièces selon un rythme de 500 000 pièces par an sur une durée de 5 ans.
Actuellement on trouve des mini pro, qui est ce que tu réalises, pour moins de 2 €, sous un format que tu n'arrivera pas à atteindre.

Go Up