Pololu-Romi-32U4-A-Star-Bootloader

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Introduction

La famille de carte 32U4 de Pololu dispose d'un bootloader USB qui peut être utilisé avec Arduino IDE ou AVRDUDE pour charger un nouveau programme dans le périphérique. Cette section du document contient des détails techniques concernant le bootloader. Ces informations intéresserons les utilisateurs avancés désirants avoir une meilleure compréhension de son fonctionnement interne. Si vous voulez désirer seulement utiliser votre périphérique alors vous pouvez simplement ignorer cette section.

Le Bootloader de l'A-Star 32U4 est basé sur le bootloader Caterina utilisé par les Arduino Leonardo, Arduino Micro et plusieurs autres cartes ATmega32U4. Ce bootloader est Open Source et son code source est disponible sur GitHub. The bootloader utilise les 4 premiers kilooctets dans la mémoire programme de ATmega32U4, laissant ainsi 28 Kio pour les programmes utilisateurs. Le bootloader de l'interface USB consiste en un simple port série virtuel acceptant des commandes de programmation telles que définies dans le document AVR109. Le bootloader démarre toujours en premier après une réinitialisation/reset de l'AVR.

Logique de démarrage

La différence principale entre le Bootloader A-Star 32U4 et Caterina concerne la logique de démarrage. C'est la partie du bootloader qui est exécuté immédiatement après le reset de l'AVR et décide s'il doit exécuter le programme utilisateur ou le restant du Bootloader.

Le bootloader Caterina des Arduino standard est conçu pour démarrer lorsque la broche RST est placée au niveau bas. Cela signifie que is vous désirez redémarrer votre plateforme en appuyant sur le bouton Reset alors le Bootloader attendra pendant 8 secondes après le transfert d'un nouveau programme via le port USB. Au terme de ce délai (ou transmission effective d'un nouveau programme), le programme utilisateur stocké en mémoire est exécuté.

Le bootloader de A-Star 32U4 utilise une logique améliorée vous permettant d'utiliser la broche RST pour redémarrer la carte avec un faible attente. Si la broche RST passe une fois au niveau bas alors le programme utilisateur est démarré après 750 ms. Si la broche RST passe une deuxième fois au niveau bas durant cette période de 750 ms (donc Reset pressé deux fois) alors le bootloader est exécuté. Cette fonctionnalité est la même que pour la carte Micro Pro de Sparkfun.

La logique de démarrage du bootloader A-Star 32U4 est visible dans le graphique ci-dessous:

Pololu-Romi-32U4-A-Star-Bootloader-00.jpg

Détection Brown-out

Le "Brown out" est une brève baisse de tension qui se produit généralement/souvent durant la mise sous-tension. De nombreux microcontrôleurs intègre un mécanisme de détection de Brown-out.

Au contraire des autres cartes ATmega32U4, la famille 32U4 de Pololu inclus une détection de "brown-out". Le seuil de "brown-out" est fixé à 4.3 V et si la tension de VCC chute sous 4.3V alors l'AVR redémarrera (fera un Reset). Le bootloader à été conçu de sorte à permettre au programme utilisateur de détecter un redémarrage "brown-out".

Pour détecter le "brown-out", il faut vérifier l'état du bit BORF dans le registre MCUSR. S'il est à 1, il y a eu brown-out, vous paouvez ensuite le remettre à 0.

Voici un code d'exemple que vous pouvez utiliser dans la fonction setup pour détecter le "brown-out":

pinMode(13, OUTPUT);
if (MCUSR & (1 << BORF))
{
  // A brownout reset occurred.  Blink the LED
  // quickly for 2 seconds.
  for(uint8_t i = 0; i < 10; i++)
  {
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(13, LOW);
    delay(100);
  }
}
MCUSR = 0;

Basé sur "Guide utilisateur de la carte de contrôle Romi 32U4" de Pololu (https://www.pololu.com/docs/0J69) - Traduit en Français par shop.mchobby.be CC-BY-SA pour la traduction
Toute copie doit contenir ce crédit, lien vers cette page et la section "crédit de traduction". Traduit avec l'autorisation expresse de Pololu (www.pololu.com)

Based on "Pololu Romi 32U4 Control Board User’s Guide" from Pololu (https://www.pololu.com/docs/0J69) - Translated to French by shop.mchobby.be CC-BY-SA for the translation
Copies must includes this credit, link to this page and the section "crédit de traduction" (translation credit). Translated with the Pololu's authorization (www.pololu.com)