J'utilise un Boarduino et une planche à pain à 30 rangées pour programmer mon ATtiny. Je charge un croquis pas trop compliqué appelé ArduinoISP (inclus par défaut maintenant dans l'IDE Arduino), et soudain j'ai un programmeur qui fonctionne. Atmel vend un bon programmeur entre 30 $ et 40 $, et il existe de nombreux kits pour en faire des moins chers.
J'étais très heureux une fois que j'ai eu mon programmeur qui fonctionnait et que j'ai fait clignoter quelques leds. Cependant, maintenant mon pauvre boarduino est coincé en devoir de programmeur.
Autant que je sache, ce programmeur maintient le bouton de réinitialisation enfoncé, puis transmet et reçoit sur les broches MOSI et MISO. Je pense que le SCK est inutilisé ou du moins inutile. (SCK est nécessaire selon la fiche technique ATtiny, mon programmeur ne fonctionne pas sans lui, et je ne trouve pas l'endroit où je pensais l'avoir lu n'était pas nécessaire.)
Pourquoi ai-je besoin d'un programmeur matériel pour simplement transmettre en série? Je veux dire, supposons que je suis prêt à maintenir le bouton de réinitialisation avec mon doigt au lieu d'utiliser un IC. Tout ce qui reste est l'envoi et la réception en série, donc tout ce dont j'ai besoin est de trois fils GND, RXD et TXD. Heck, si j'ai la ligne "DTR" ou autre chose, vous pouvez même maintenir enfoncé le bouton de réinitialisation avec le câble série.
Pourquoi y a-t-il toutes ces solutions matérielles qui nécessitent également des logiciels sophistiqués (comme AVRdude, ou AVR studio, ou autre)?
Je veux dire que je pouvais comprendre un petit câble USB qui présentait le microcontrôleur comme un périphérique de stockage de masse et vous permettait de faire glisser des fichiers binaires pour la programmation (comme cette carte de développement ARM ). Matériel uniquement, à l'aide de pilotes logiciels standard.
Je pourrais également comprendre une solution logicielle uniquement (modulo accrocher les fils de l'USB à la puce, en utilisant quelque chose comme la puce FTDI pour simplifier ce qui descend les fils). Tout le protocole de programmation sophistiqué serait géré par un logiciel sur l'ordinateur, et le matériel ne serait que quelques fils.
Pourquoi avons-nous à la fois des logiciels et du matériel (compliqués)? Je veux dire, pour autant que je sache, la programmation des microcontrôleurs est assez facile, mais quand je commençais à peine, j'étais vraiment inquiet de savoir comment j'allais jamais acheter une puce de mouser ou digikey sans payer un gourou pour programmer un chargeur de démarrage pour moi.
Je suis sûr qu'il y a une bonne raison (ce n'est pas comme si j'avais écrit le logiciel ou commencé à fabriquer le programmateur USB glisser-déposer), mais en tant que nouveau venu, je n'ai aucune idée de ce que c'est.
la source
Réponses:
Vous avez raison, la programmation des AVR est assez simple. C'est juste un protocole personnalisé implémenté au-dessus de SPI, fonctionnant à basse tension. SCK est nécessaire.
Cependant, la programmation de PIC plus anciens (et de programmation AVR non FAI) nécessite des tensions élevées et un protocole personnalisé différent. Cela nécessite un programmeur matériel spécial.
D'autres appareils sont plus complexes. La plupart des microcontrôleurs ARM doivent être programmés via JTAG, ici la mémoire est écrite directement et le processeur est invité à écrire sur le flash. Encore une fois, chaque appareil est différent.
la source
J'ai fait beaucoup de recherches et je me prépare à commencer à jouer avec les AVR, mais je n'en ai jamais utilisé, donc cela peut être faux, mais:
La plupart des programmeurs bon marché ne prendront pas en charge la programmation haute tension AVR. Il est nécessaire si le contrôleur est configuré pour être non programmable à l'aide de bits de fusible ou si vous avez en quelque sorte fait de sérieux bugs et devez le réinitialiser aux valeurs par défaut et ainsi de suite.
la source
La plupart des programmeurs AVR bon marché ne sont que des interfaces série de synchronisation avec une ligne de réinitialisation. Vous pouvez vous un FT232 pour bitbang out Serial Peripheral Interface (SPI). Le FT232 est conçu pour la synchronisation asynchrone non synchronisée, donc tout est fait dans le logiciel.
Vous pouvez simplement télécharger un chargeur de démarrage comme arduino qui vous permettrait de télécharger du code via l'interface série asynchrone en utilisant le ft232 en mode normal ou n'importe quelle interface série asynchrone en utilisant des convertisseurs de niveau selon les besoins. N'oubliez pas d'utiliser le bon chargeur de démarrage pour votre vitesse d'horloge et de régler correctement les octets de fusible.
la source
De nombreux appareils programmables ont toujours exigé qu'ils soient programmés à l'aide de séquences de signaux temporisés de manière relativement précise. Dans de nombreux cas, si l'on voulait seulement programmer un type particulier de périphérique, le matériel requis aurait été assez simple, mais comme différents périphériques avaient des exigences différentes, la construction d'un programmeur plus général était un peu plus difficile.
Aujourd'hui, on pourrait probablement programmer plus de 50% des appareils programmables en utilisant rien de plus qu'un câble d'E / S USB et un logiciel PC, mais les programmeurs "matériels" ont toujours un avantage de vitesse considérable. Pour que le PC réagisse à un signal reçu par un périphérique USB et envoie une réponse, cela prend généralement au moins 1 à 2 millisecondes. Si une séquence de programmation nécessite de demander à plusieurs reprises à un périphérique quand il est prêt pour le prochain bloc de données, puis de l'envoyer, l'utilisation d'un simple câble d'E / S ajouterait une ou deux millisecondes supplémentaires au temps nécessaire pour gérer chaque bloc. Selon la nature de l'appareil en question, cela pourrait augmenter le temps global requis pour la programmation d'un ordre de grandeur par rapport à un programmeur qui pourrait être informé, en attendant qu'un appareil soit prêt, de ce qu'il devrait faire une fois qu'il est.
Personnellement, j'aime l'approche consistant à faire expédier les appareils équipés de flash de l'usine avec un chargeur de démarrage en mémoire qui peut être utilisé avec un minimum de matériel de programmation. Si l'appareil prend en charge la programmation flash sous contrôle logiciel, une telle approche peut simplifier la production sans ajouter quoi que ce soit au coût du silicium au-delà du très petit temps marginal requis pour avoir le programme de test en usine dans le chargeur de démarrage après avoir fait tout le reste. .
la source