atmega328P et VUSB

Bonjour à tous.
Je suis vraiment nouveau dans le monde Arduino et je sèche sur un Instrutable.
Mon projet est un controleur MIDI à base de ATMEGA328P. En gros je dois mettre une prise USB pour qu'il soit reconnu en USB DEVICE par l'ordi.
liens du projet : GitHub - alexAubin/customMidiController: Code and instructions to easily build a MIDI Controller from scratch
section où je suis bloqué : 5. Flashing the USBasp/V-USB bootloader

Si je pense avoir saisi, après que j'ai raccordé l'ATMEGA238P à mon programmeur (dans mon cas une MEGA2560), je dois chargé l'exemple ArduinoISP sur???? et bien là je ne sais pas si c'est l'ATMEGA328P ou sur la MEGA2560.
Ensuite je dois mettre VUSB sur l'ATMEGA328P mais en thermes d'explications, je ne vois vraiment pas du tout comment faire celà. J'ai essayé de voir des video ou des tuto, mais je ne comprend pas la marche à suivre.

Dans l'Instrutable, il apparait :
#Compile
make bootloader
#Flash
make bootloader-flash

où dois-je taper cette commande, si c'est dans "cmd", il en résulte que des erreurs....

Actuellement, je travail sur un PC windows 7, j'ai téléchargé WINAVR, AVRDUDESS. Mais j'ai beau essayer ce que je crois comprendre, ça reste un échec.

Quelqu'un aurait-il une marche à suivre claire et nette pour celà afin de me dépatouiller de ce bourbier?

Merci beaucoup pour votre aide.
Bonne journée à tous

Rémy

Bonjour,

si tu postes les messages d'erreurs on trouvera peut-être la raison de l'échec de la commande make.

Bonjour,
pourquoi vouloir utiliser vusb, au lieu d'un des ports série + convertisseur ?

trimarco232:
Bonjour,
pourquoi vouloir utiliser vusb, au lieu d'un des ports série + convertisseur ?

bonjour
perso pour faire du "petit" MIDI/USB comme le souhait initial (QQ boutons, pot , encodeur, led) sous IDE arduino j'utilise
quasi exclusivement du pro micro (Base 32U4)
çà coute ~ 3€ et AMHA ça ne vaut pas le cout de "s'emm...er" en plus avec V-USB (sur 328P) et/ou un adaptateur externe SERIAL MIDI/USB
Ce qui n’enlève rien par ailleurs à l'utilité de V-USB ( qui est quand meme assez chatouilleux à utiliser) ou un adaptateur
MIDI USB genre E-MU Xmidi 1x1 que j'utilise aussi assez souvent lorsqu'il s'agit de connecter de vrais equipements en MIDI (DIN5)

Bonjour,
et déjà merci à vous tous pour vos réponses.

Concernant les messages d'erreurs, je vais essayer de refaire les manip pour vous montrer, mais il faut bien comprendre, que je ne suis pas du tout sûr de comment ça fonctionne. Donc n'ayant pas de tuto clair sur ça, difficile de savoir ce qu'il faut faire exactement. Bref j'essaie de faire ça au plus vite.

Pour les autre réponses, j'avais chez moi une ATMEGA328P et je suis tombé sur ce projet qui avait l'air simple sur le papier.
Le projet final consiste à avoir 4 pads pour un batteur. J'utilise 4 capteurs de pression qui vont déclencher des séquences, tap tempo, ... sur un DAW. Je voyais le côté utile que ce soit un USB DEVICE simple pour gérer des déclenchements midi et pour une meilleur compatibilité avec n'importe quel DAW.
Peut-être avez-vous des solutions similaires, alternatives.

Si je comprend bien, V-USB est difficile à mettre en oeuvre et n'est pas fiable sur la durée?
Mais avez-vous déjà fait cette manip? J'aimerais juste au moins comprendre ce qu'il faut faire mais d'après certains appriori c'est une prise de tête sans nom alors je sais pas si c'est compliqué d'expliquer a un novice. Ou au oins si vous aviez un lien assez bien détaillé sur la mise en oeuvre?

Merci à vous tous

Alors perso je saisi l'idée de ce que tu veux faire et c'est sympa mais n'ai pas les compétences pour ta partie électronique. Là de ce que j'ai compris de ton problème de départ, tu butes sur la compilation du bootloader spécifique à ce projet.

L'auteur du dépot git propose une procédure pour les "linuxiens" (d'après la commande dmesg -e -w), mais c'est vrai qu'il ne mentionne pas Windows donc....

Je pourrai peut-être comprendre le message d'erreur mais cela ne sera peut-être que le premier d'une longue série... Sans garantie donc de mon coté.

Alors j'ai continué de chercher, chercher...

Si je comprend a peu près ce dont j'ai besoin, enfin il me semble :
pour rendre mon ATMEGA328P visible USB DEVICE, il faut que je lui mette un bootloader différent du traditionnel mais pour lui envoyer ce bootloader je dois passer par un programmeur USBasp. Si j'ai bien compris ce sera ma carte MEGA2560 qui fera office d'usbasp? pour ça je lui upload l'exemple ArduinoISP?

je raccorde le tout(MEGA et ATMEGA), et je dois aller dans cmd, aller dans le répertoire du bootloader que j'ai téléchargé et entrer la fonction "make"??

En regardant des tuto pour winavr, je pense avoir saisi pour faire la manip sur winavr et je recueuil d'ailleurs les mêmes erreurs (2 pour être exact) :

"make.exe" all
main.c: In function 'leaveBootloader':
main.c:322: warning: 'noreturn' function does return
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: address 0x2002 of main.elf section .text is not within region text
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: address 0x2002 of main.elf section .text is not within region text
make.exe: *** [main.elf] Error 1

Process Exit Code: 2
Time Taken: 00:01

Merci pour vos aides

Voila mon interprétation du message d'erreur : le programme à compilé, c'est l'éditeur de lien qui râle (ld). Il dit, interprétation supposée, qu'il n'arrive pas a placer le programme en mémoire. As tu changé quoi que ce soit au fichier Makefile ?

Alors non, je n'ai absolument rien changé.

et j'ai réessayer en re décompressant le ficher d'origine, donc complètement vierge de toutes interventions...

Question bête, mais sur Winavr, quand je lance make ALL, il faut qu'une carte soit branchée?

Je ne sais pas, je n'utilise pas Winavr (je suis sous GNU/Linux). Mais là make n'est pas encore en phase d'upload"...

Sinon, d'après la doc il préconise non pas un make all mais un make bootloader pour compiler et un make bootloader-flash pour téléverser (là tu auras besoin de la carte).

Ok

Alors sur winavr tu ne peux faire que Make ALL ou Make Program (le dernier je suppose que c'est pour téléverser).

si je vais sur les ligne de commande, je vais dans le répertoire du firmeware et que je tape la fonction "make bootloader", j'obtiens :
make: *** No rule to make target 'bootloader'. Stop.

donc voilà..... :frowning: :frowning: :frowning: :frowning:

Remy74:
Ok

Alors sur winavr tu ne peux faire que Make ALL ou Make Program (le dernier je suppose que c'est pour téléverser).

si je vais sur les ligne de commande, je vais dans le répertoire du firmeware et que je tape la fonction "make bootloader", j'obtiens :
make: *** No rule to make target 'bootloader'. Stop.

donc voilà..... :frowning: :frowning: :frowning: :frowning:

Bonsoir
Réponse qui surement ne va pas te satisfaire , mais.. c'est ma réponse à cette heure 8)

Vouloir "tripoter" V-USB sur de la cible atmega328P avec Windows , ça ne me semble pas etre "une bonne situation d'avenir" :wink:

C'est plus simple (mais pas du tout gagné :grin: ) sous Linux

Pourquoi tu t'obstine dans cette voie (328P MIDI V-USB) ?

V-USB sur 328P

Je ne m'obstine pas. J'avais répondu plus haut à ce sujet, que j'avais cette 328P de dispo, que j'ai trouver cet Instrutable qui correspondait à ce que je voulais faire.

Mais que bien entendu si vous aviez des solutions alternative qui ne m'obligerais pas a racheter du matériel, que j'étais bien entendu toutes ouïes.
Je n'ai pas grande expérience des capacités de chaque shield ou microcontrolleur.

Après je pensais surtout que je ne faisait pas les choses correctement pour commencer donc oui j'essayais au moins de comprendre ce que je ne faisais pas correctement.

Merci pour ton retour apparemment positif du matériel que tu utilises, je vais voir à ce sujet.

Après ça ne règle pas le problème en soit, et plutôt par défis, c'est intéressant aussi de comprendre ce qu'on ne fait pas bien plutôt que d'abandonner et faire autrement (même si le résultat final c'est justement de faire autrement :slight_smile: )

En tout cas je vois que ça à l'air compliqué d'après ce que tu dis et je te fais complètement confiance à ce sujet. Je vais voir pour faire autrement, dommage tout le reste était opérationnel et pour la pro micro (Base 32U4), oui ce serait une bonne alternative, dommage qu'elle que 4 Analog IN j'en avais besoin de 5 pour bien faire
Merci encore

Remy74:
Ok

Alors sur winavr tu ne peux faire que Make ALL ou Make Program (le dernier je suppose que c'est pour téléverser).

si je vais sur les ligne de commande, je vais dans le répertoire du firmeware et que je tape la fonction "make bootloader", j'obtiens :
make: *** No rule to make target 'bootloader'. Stop.

donc voilà..... :frowning: :frowning: :frowning: :frowning:

D'après la doc de WinAVR (http://winavr.sourceforge.net/install_config_WinAVR.pdf) son outil make (clasiique) utilise les cibles (targets) indiquées dans le fichier Makefile. Es-tu certain que quand tu lances la commande "make bootloader" tu te situes dans le dossier contenant le Makefile du projet GitHub - alexAubin/customMidiController: Code and instructions to easily build a MIDI Controller from scratch ?

Encore une fois sans garantie aucune :wink:

ah ok quand je disais que je ne comprenais pas tout :slight_smile:

donc effectivement, moi je comprenais qu'il fallait être dans le répertoire du firmware du bootloader (il y a aussi un fichier Makefile dedans).
Pour info, quand je télécharge les fichiers du projet, jai bien la liste des fichiers mais avec le répertoire bootloader complètement vide, donc j'ai supposé que ce n'était pas normal. J'ai donc retéléchargé juste le contenu du répertoire bootloader et j'ai copié ce contenu dans le repertoire bootloader qui était vide.

En ligne de commande, je me suis mis dans le répertoire racine du projet et j'ai relancé la fonction "make bootloader" et oui, là le résultat est différent mais néanmoins problématique :

makefile:57: *** ARDUINODIR is not set correctly; arduino software not found. Stop

Bon le côté positif c'est qu'il reconnait la fonction, j'ai pourtant IDE 1.6.8 d'installé mais on dirait qu'il ne trouve pas le répertoire.
Ca avance merci pour les pistes, je continu de creuser.

Bonjour

akefile:57: *** ARDUINODIR is not set correctly; arduino software not found. Stop

Adapter la ligne suivante du fichier makefile à votre installation (distribution , mode d'installation d'Arduino...)

ARDUINODIR = /usr/share/arduino

le chemin contient sans doute /.Arduino15

oui je viens de tomber sur cette ligne dans le makefile et je me disais que le soucis venait de là.

par contre : /usr/share/arduino c'est un répertoire mais que je ne trouve pas sur mon ordi, je rappel ma config : windows7

par contre ce sont des répertoire que l'on trouve facilement sur un mac.....

/usr/share on trouve ça avec Linux, Mac, Android..../. tout sauf Windows !!

Pour avoir une idée du chemin quelqe soit le système d'exploitation ouvrir l'IDE Arduino, menu Fichiers/ Préférences
observer l'avant dernière ligne... ça montre comment atteindre .Arduino15
(dossier caché)

Remy74:
Pour info, quand je télécharge les fichiers du projet, jai bien la liste des fichiers mais avec le répertoire bootloader complètement vide

Pour télécharger un projet sur Github tu cliques sur le bouton vert marqué "Clone or download" et dans la fenêtre qui s'ouvre tu choisis "Download ZIP" ce ZIP tu le décompresses dans ton répertoire de travail et là tu as toute l'arborescence du projet.

héhé, j'étais justement entrain de faire celà :slight_smile:

donc effectivement ça avance bien même

J'ai changé la ligne dans Makefile : /usr/share/arduino par le répertoire donné dans IDE.

j'ai relancé la fonction "make bootloader" et là il se passe des choses :slight_smile: :
ça compile le bootloader, en indiquant bien la ATMEGA328P @ 12MHz
ça construit le bootloader (BUILDING BOOTLOADER FIRMWARE
aucune erreur à la fin, juste une mention: ATTANTION (data+text) MUST fit into you MCUs bootloader section avec des données pour les sections : "text", "data", "bss", "dec", "hex filename".

Bref à l'issue de ça, j'ai branché ma carte sur l'ordi (là je pense que j'ai un soucis pour la mise en oeuvre)
j'ai lancé la fonction "make bootloader-flash"
ça lance une procédure mais j'ai l'impression que ça ne communique pas avec la carte

Je joins un ficher txt de rapport.

Sinon la procédure que j'ai utilisé pour utiliser la MEGA2560 pour mettre le bootloader dans la ATMEGA328P :
J'ai télécharger IDE 1.0.1
ouvert l'exemple ARDUINOISP
sélectionné la board MEGA2560, le port com, changer le programmeur en Aduino As ISP
téléversé le sketch
ensuite j'ai fermé l'IDE, débranché la MEGA2560, relié la MEGA2560 à la ATMEGA328P comme indiqué dans le projet
puis j'ai rebranché en USB la MEGA2560 mais le résultat obtenu n'est pas convaincant.

make bootloader.txt (4.5 KB)