En cours Leonardo bootloader help...

  • Auteur de la discussion gaston83
  • Date de début
G

gaston83

Compagnon
Bonjour à tous,

Me revoilà... avec un Arduino Leonardo reçu hier.

J'ai fait quelques manip et j'ai téléverser un test d'émulation clavier .... ça fonctionne, c'est déjà bien.

J'ai fais une modification, j'ai téléversé et ... la Leonardo c'est mise à envoyer le même caractère en continu alors que je n'appui même pas sur le bouton de ma carte prototype.

Donc là je suis bloqué étant donné que cette folle émet sans arrêt. Dés que je branche la carte, banzaï... elle balance...

Je voudrais remettre en place le bootloader... mais lequel et où le trouver ?
 
S

speedjf37

Compagnon
J'ai fais une modification, j'ai téléversé et ... la Leonardo c'est mise à envoyer le même caractère en continu alors que je n'appui même pas sur le bouton de ma carte prototype.

Bonjour,

A partir du moment ou la carte est passée en mode émulation de clavier , elle se comporte comme un clavier et essaie de s'identifier sur l'USB.

Normalement il doit s'installer un périphérique USB de type "HID".

Il y a 2 ports sur le Léonardo:
With the Leonardo environment, there are two available serial ports; one is the emulated VCP port through the USB connection, the other is the hardware UART on the microcontroller itself.

On doit pouvoir accéder au téléchargement avec le port UART.

PS) pas chez moi pour faire un test
JF
 
G

gaston83

Compagnon
Bonjour,

With the Leonardo environment, there are two available serial ports; one is the emulated VCP port through the USB connection, the other is the hardware UART on the microcontroller itself.

Tout à fait... je dois me servir du port ISP pour reprogrammer le bootloader. C'est ce que je fais pour une Duemilanove équipé d'un atmega328.

Là, je cherche " le bootloader" qui va bien pour la Leonardo....
 
G

gaston83

Compagnon
Voilà ce que j'utilise comme programmateur...
 

Fichiers joints

  • Carte mySmartUSB MK2 V2.11.pdf
    1.8 Mo · Affichages: 82
J

jpbbricole

Compagnon
Bonjour Gaston

As-tu essayé la manip de reset comme celle-ci?
  1. Prepare the basic empty program (empty setup, loop, etc.)
  2. Compile it.
  3. Reset the Arduino using the hardware button on the chip
  4. Press Ctrl + U to upload your code.
  5. If unsuccessful - got to 3.
Cordialement
jpbbricole
 
G

gaston83

Compagnon
Bonjour jpbbricole,

Voilà ce que j'utilise comme programme avec le programmateur

Capture.JPG
 
G

gaston83

Compagnon
et le maga32U4 est bien reconnu.... mais il me faudrait le bootloader en .hex

2.JPG
 
J

jpbbricole

Compagnon
Bonjour Gaston

Je ne comprends pas pourquoi recharger le bootloader.
Fais la manip de reset depuis l'IDE Arduino, j'ai "récupéré" un Leonardo ainsi.

Mets le programme qui a provoqué ton problème en ligne et j'essayerai de provoquer le problème.
J'ai fais une modification, j'ai téléversé et ... la Leonardo c'est mise à envoyer le même caractère en continu alors que je n'appui même pas sur le bouton de ma carte prototype.
Quelle modification?
Est-ce-que l'entrée du bouton est bien polarisée, PULL_UP ou résistance?

Cordialement
jpbbricole
 
S

speedjf37

Compagnon
Je suppose que la procédure est :

choix programmateur :
AVRISP mkII

puis :
graver la séquence d'initialisation

JF

je proposai d'utiliser simplement l'IDE arduino et j'ai l'impression qu'il possède les bootlooder (pas vérifié)
 
J

jpbbricole

Compagnon
Est-ce-que elle apparaît, de façon stable, dans le gestionnaire de périfériques?
Mets ton code qui a provoqué le problème, en ligne.

Cordialement
jpbbricole
 
G

gaston83

Compagnon
Est-ce-que elle apparaît, de façon stable, dans le gestionnaire de périfériques?

Non, y a plus rien

Le code:

#define <Keyboard.h>

// set pin numbers for the five buttons:
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;

void setup() { // initialize the buttons' inputs:
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);

Serial.begin(9600);

Keyboard.begin();
}

void loop() {


// use the pushbuttons to control the keyboard:
if (digitalRead(upButton) == HIGH) {
Keyboard.write('u');
}
if (digitalRead(downButton) == HIGH) {
Keyboard.write('d');
}
if (digitalRead(leftButton) == HIGH) {
Keyboard.write('l');
}
if (digitalRead(rightButton) == HIGH) {
Keyboard.write('r');
}
if (digitalRead(mouseButton) == HIGH) {
Keyboard.write('m');
}
}
 
J

jpbbricole

Compagnon
Quand tu connectes et déconnectes le Leonardo, est-ce-qu'il y a une activité dans dans le gestionnaire de périfériques?
 
J

jpbbricole

Compagnon
S'il ne déclenche aucune activité dans le gestionnaire, c'est qu'il a pris une "secouée", je ne comprends plus!
Il n'y vraiment aucune activité ou cela monte et descend régulièrement?

Cordialement
jpbbricole
 
G

gaston83

Compagnon
et voilà... mais pourquoi... pfffffff

Il n'y vraiment aucune activité ou cela monte et descend régulièrement?

rien .... que dalle , d'ou mon idée de lui recoller le bootloader. mais il me le faut en .hex. J'utiliserais ProgTool comme je fais pour la Due Arduino.
 
G

gaston83

Compagnon
C'est pas grave... je vais fouiller d'avantage.

Par contre pour le code, qu'en penses-tu ?
 
J

jpbbricole

Compagnon
Salut Gaston
Par contre pour le code, qu'en penses-tu ?
Je vais l'essayer, par contre, j'ai une question, as-tu mis des résistances de polarisation entre les entrées des boutons et le GND, si oui de quelle valeur.

Un peu plus tard (après la sieste :smt015)
J'ai testé le programme

il n'y a qu'une erreur:
#define <Keyboard.h>
au lieu de
#include <Keyboard.h>
ce qui empêche la compilation.

J'ai ajouté:
Serial.begin(9600);
while (!Serial) {}
Cette ligne, sur un Leonardo, doit être ajoutée, sans ça, si tu veux faire un Serial.print... rapidement après le Serial.begin, il risque de ne rien se passer.

Sur le fond du programme, le fait de tester si l'entrée == HIGH oblige de mettre, sur chaque entrée, une résistance pour "tirer" l'entrée ver le LOW.
Il est plus pratique de déclarer l'entrée pinMode(upButton, INPUT_PULLUP); et ainsi de profiter des résistances internes (PULL_UP "tirer" ver le haut) et de par là, mettre le commun des boutons au GND.

J'ai, un peu, réaménagé le programme, sinon les touches se répètent à toute vitesse. Le défaut actuel de ce programme, est qu'il faut changer de touche entre chaque pression pour que cela fonctionne.
Mais il serait très facile de faire évoluer tout ça.

A+
Cordialement
jpbbricole
 
Dernière édition:
G

gaston83

Compagnon
Bonsoir jpbbricole,

.... et merci pour ta patience et pour les modifications... comme on dit "il vaut mieux un qui sait que dix qui cherchent" :smt038

Maintenant, je vais attendre de recevoir la nouvelle carte car à priori elle est bel et bien vraquée.... pourquoi ???? j'en ai aucune idée.... le proc 32U4 est bien reconnu par ProgTool mais pas moyen de faire rentrer un quelconque bootloader, ma foi.....

J'ai bien la petite Pro Micro aussi à base de 32U4 mais là, j'ai la pétoche...

Je te tiens au courant...
Merci bon week
 
S

speedjf37

Compagnon
Maintenant, je vais attendre de recevoir la nouvelle carte car à priori elle est bel et bien vraquée.... pourquoi ???? j'en ai aucune idée.... le proc 32U4 est bien reconnu par ProgTool mais pas moyen de faire rentrer un quelconque bootloader, ma foi.....

gaston83 as tu essayé avec l'IDE arduino ?

JF
 
J

jpbbricole

Compagnon
Salut Gaston
Question, dans ton montage, as-tu des résistances de polarisation sur tes entrées de boutons ?

Bonne soirée
jpbbricole
 

Sujets similaires

osiver
Réponses
14
Affichages
32 888
osiver
osiver
Haut