Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bootloader ATmega328 P 20Mhz interne

    17 mai 2018 à 18:09:44

    Bonjour,

    je voudrais utiliser un ATmega328 sur une plaque électronique , et garder ma UNO pour essais et prototypage

    Mais j'ai acheté un ATmega328 à 20Mhz d'horloge interne et d'après ce que j'ai lu il n'existe pas de bootloader pour ce type de microconrôleur

    c'est limité à 8 et peut être  16Mhz.

    Est ce que quelqu'un sait où trouver un bootloader pour 20Mhz, ou sinon peut on utiliser un bootloader plus lent  sur mon ATmega 20Mhz

    merci de votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2018 à 8:10:41

      Tu dois te tromper quelque part là, ce n'est pas possible.

      L'oscillateur interne d'un ATMEGA328P est calibré à 8 MHz, il n'existe pas de version disposant d'un oscillateur interne de 20 MHz.

      Pourrais tu nous donner un lien vers le site marchant en question ?

      -
      Edité par lorrio 18 mai 2018 à 8:10:59

      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2018 à 14:20:32

        Oui, voici :

        http://www.conrad.fr/ce/fr/product/155197/Microcontrleur-embarqu-Microchip-Technology-ATMEGA328P-PU-PDIP-28-8-Bit-20-MHz-Nombre-IO-23-1-pcs?ref=list

        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2018 à 18:07:57

          C'est la même puce que celle de l'arduino.

          Le 20Mhz concerne la vitesse maximale de la puce, pour avoir plus de 8MHz ou plus de précision que l'oscillateur interne, il faut utiliser un oscillateur à quartz externe qui détermine la fréquence de fonctionnement, or sur l'arduino, ce quartz est de 16MHz.

          Mais rien n'empêcherait de recompiler le bootloader et d'ajouter une nouvelle définition de carte pour un quartz de 20MHz.

          • Partager sur Facebook
          • Partager sur Twitter
            18 mai 2018 à 18:24:59

            hello. ATMEGA328 est bien un µC 20 mhz alors que le programme PC Arduino qui initialise le µC à 8 Mhz . C'est possible de modifier cela notamment dans les fichiers du programme ARDUINO et la suite GCC, néanmoins je te le déconseille car tu va galérer ensuite avec la compatibilité de certaines bibliothèques se basant sur le 8Mhz comme horloge système.

            • Partager sur Facebook
            • Partager sur Twitter
              18 mai 2018 à 23:38:48

              Il faut se méfier de la description qu'il y a sur les sites de vente, ce n'est pas toujours exacte.

              Dans le cas du ATMEGA328P-PU, il n'y a pas d'oscillateur interne de 20 Mhz mais un oscillateur interne de 8 MHz, c'est clairement écrit dans la doc.

              Ce processeur accepte néanmoins d'être cadencé à 20 MHz en lui ajoutant un quartz externe.

              Du coup, plusieurs solution s'offre à toi :

              • Soit tu mets un quartz 16 MHz ainsi que le bootloader classique et tu obtiendras alors un comportement strictement identique à un arduino
              • Soit tu ne mets pas de quartz et le bootloader compilé pour oscillateur interne et tu auras un processeur qui tourne à 8 MHz
              • Soit tu mets le quartz que tu veux mais il te faut créer ce mode de fonctionnement et recompiler le bootloader pour que cela fonctionne

              Je ne peux que tu conseiller d'opter pour la première solution car toutes les libs ne supportent pas les changements de fréquences (certaines libs considèrent que le processeur tourne forcément à 16 MHz et se comporte bizarrement si ce n'est pas le cas).

              • Partager sur Facebook
              • Partager sur Twitter
                19 mai 2018 à 18:52:38

                d'accord, merci pour vos réponses

                Disons que je vais tourner avec l'horloge interne :

                - je met l'exemple arduino ISP sur ma UNO

                je change ensuite

                -le type de carte Atmega328 standalone internal clock 8Mhz

                -programmateur arduino as ISP

                le branchement sera sans quartz ni condos

                et je téléverse. c'est bien ça ?

                Ce que je ne comprends pas dans les tutos avec l' atmega328 il faut enlever le microcontroleur de la UNO avant de téléverser

                alors que pour la tyni45 il fallait simplement avoir le bootloader pour la tiny45 et téléverser sans rien toucher d'autre

                • Partager sur Facebook
                • Partager sur Twitter
                  20 mai 2018 à 1:19:16

                  Je suppose que tu suis ce tutoriel: https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

                  Le but de ce tuto est d'installer un bootloader sur la puce Atmega328, donc après avoir fait toutes les étapes, tu es censé "graver la séquence d'initialisation", ce qui va installer le bootloader et ensuite il te faudra une passerelle usb/série à chaque fois que tu voudras reprogrammer la puce et la carte arduino sans puce sert justement à ça, en branchant uniquement les broches RST, TX, RX, VCC et GND de ta puce à la carte arduino.

                  Mais si au lieu de "graver la séquence d'initialisation", tu passes par le menu "Croquis" / "Téléverser avec un programmateur", cela va uniquement installer ton programme sur la puce sans installer de bootloader. Tu devras rebrancher la puce de la même façon, MISO, MOSI, SCK, RESET, VCC, GND et installer le programme Arduino ISP sur l'arduino à chaque fois que tu veux la reprogrammer. Tu peux prévoir un connecteur ICSP sur ta carte pour faciliter cette étape, et acheter un programmateur USB ISP dédié (2-3€ sur ebay avec l'adaptateur 6 broches).

                  Tout ce que fait le bootloader, c'est permettre le téléversement en passant par le port série, une fois le programme lancé, il ne sert plus à rien, à toi de voir si tu en as besoin ou pas.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 mai 2018 à 10:01:34

                    oui je vais me procurer un programmateur,

                    mais pour savoir si j'ai bien compris la démarche:

                    donc quand on fait croquis> téléverser avec un programmateur

                    pas besoin d'enlever la puce de l'Arduino ?

                    Après avoir fait les branchements, je téléverse mon programme avec : "téléverser avec un programmateur"

                    Arduino ISP permet de téléverser le programme sur la puce de la breadboard ?

                    Pour une ATTINY45, j'ai installer arduino ISP, installer le bootloader Attiny45,  gravé la séquence d'initialisation ,

                    -avec le type de carte>Attiny45

                    -programmeur> Arduino as ISP

                    -téléversé mon programme pour l'Attiny45

                    tout a fonctionné !!

                    le bootloader j'en avais pas besoin ?

                    Il suffisait de faire téléverser avec un programmateur ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 mai 2018 à 14:20:04

                      fabz1 a écrit:

                      oui je vais me procurer un programmateur,

                      mais pour savoir si j'ai bien compris la démarche:

                      donc quand on fait croquis> téléverser avec un programmateur

                      pas besoin d'enlever la puce de l'Arduino ?

                      Oui, c'est bien ça.

                      Après avoir fait les branchements, je téléverse mon programme avec : "téléverser avec un programmateur"

                      Arduino ISP permet de téléverser le programme sur la puce de la breadboard ?

                      Oui.

                      Pour une ATTINY45, j'ai installer arduino ISP, installer le bootloader Attiny45,  gravé la séquence d'initialisation ,

                      -avec le type de carte>Attiny45

                      -programmeur> Arduino as ISP

                      -téléversé mon programme pour l'Attiny45

                      tout a fonctionné !!

                      le bootloader j'en avais pas besoin ?

                      Il suffisait de faire téléverser avec un programmateur ?

                      Ca dépend du paquet que tu as installé pour gérer l'attiny dans l'IDE, mais si l'attiny était toujours connecté à l'arduino uno quand tu as uploadé le programme, c'est que l'option "téléverser" faisait la même chose que "téléverser avec un programmateur". Et le bootloader a été écrasé quand tu as uploadé le programme.

                      Par exemple, j'ai installé un de ces paquets: https://github.com/sleemanj/optiboot/blob/master/dists/README.md et dans les options, tu peux faire en sorte que le bouton "téléverser" utilise le port série (pour lequel il faut qu'un bootloader soit installé) ou un programmateur.

                      Il y a quand même un avantage à utiliser un bootloader sur les attiny: tu peux récupérer une broche supplémentaire en modifiant les fusibles pour configurer la broche Reset en GPIO standard, mais après ça, tu ne peux plus reprogrammer la puce en utilisant un ISP qui a besoin de la broche Reset. C'est là que le bootloader entre en jeu en permettant de passer par le port série ou autre pour faire cette reprogrammation simplement. On peut toujours utiliser un programmateur haute tension pour reconfigurer les fusibles et réinitialiser la broche reset, mais ces programmateurs sont moins faciles à trouver.



                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 mai 2018 à 9:07:21

                        ah oui d'accord,

                        le crystal et les condos dans le montage ne sont pas indispensables non plus j'ai l'impression

                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 mai 2018 à 18:31:09

                          j'ai suivi vos conseils Alexis avec le branchement basics

                          mais ça n'a pas fonctionné

                          par contre j'ai trouvé chez Adafruit un petit tuto sur un kit AVR pour ATmega328p avec un programme "ArduinoISP bis",

                          Et la ça fonctionne,

                          c'est peut-être lié à mon microcontrôleur, ou à la version de mon IDE.

                          Ce programme, si j'ai bien compris, ajoute une sortie qui permet de se passer du quartz.

                          Donc pas besoin de condos, ni de quartz pour programmer.

                           ni de type de carte spéciale pour ATmega328p du style Standalone 8mhz.

                          On garde Arduino Uno Genuino.

                          Pour Attiny je prend ArduinoISP de l'exemple

                          et il faut juste changer de type de carte Attiny45 trouvé sur Github

                          Bon ben je peux me faire un shield maintenant

                          merci à bientôt

                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 mai 2018 à 2:38:42

                            fabz1 a écrit:

                            c'est peut-être lié à mon microcontrôleur, ou à la version de mon IDE.

                            Ce programme, si j'ai bien compris, ajoute une sortie qui permet de se passer du quartz.

                            Donc pas besoin de condos, ni de quartz pour programmer.

                            Les puces ATmega328p neuves sont déjà censées utiliser l'oscillateur interne (avec un diviseur de 8, donc à 1MHz), pour pouvoir être programmée au départ sans avoir besoin de quartz, à partir du moment où tu la configures via les fusibles pour utiliser un quartz, il en faut un pour la reconfigurer (ou passer par le programmateur haute tension).

                            Je viens de vérifier et effectivement, il faut faire "graver la séquence d'initialisation" au moins une fois avant "téléverser avec un programmateur", même si au final le bootloader est écrasé, parce que téléverser seulement ne change pas les fusibles.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 mai 2018 à 18:27:21

                              Oui, je fais comme ça, mais avec le programme ISP de chez Adafruit,

                              d'ailleurs je me demande ce que fait cette sortie sur le pin 9 du ATmega, je ne comprend pas tout du programme.

                              Envoie t-elle simplement 0 ou 1 ?

                              Voici le lien:

                              https://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduinoisp

                              Quoi qu'il en soit, après avoir téléversé un programme blink_2_LED_clignotantes avec : "téléverser avec un programmateur"

                              (Parce que si je fait:" téléversé", le programme va sur la carte arduino et pas sur la breadboard).

                              j'ai posé un quartz de 20MHZ à l'emplacement prevu: PIN 9, PIN 10.

                              Toujours sans les condos.

                              ça fonctionne!!

                              qu'en pense tu ?

                              La fonction delay aura t'elle la bonne cadence ?

                              A quoi servent finalement ces condos ?

                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 mai 2018 à 14:25:33

                                Si on n'a pas de cristal, on peut envoyer un signal d'horloge directement sur la broche 9 (XTAL1/EXTCLK), c'est ce que génère le programme avec le PWM sur la broche D9.

                                Les condensateurs font baisser la fréquence de résonance du quartz, et comme le quartz est prévu pour l'utilisation avec ces condensateurs, ne pas les mettre va augmenter sa fréquence d'oscillation.

                                fabz1 a écrit:

                                La fonction delay aura t'elle la bonne cadence ?

                                Indépendamment de l'imprécision due à l'absence des condensateurs. Ca dépend de la carte choisie dans l'IDE, si elle est indiquée pour le 20MHz ou pas (la variable build.f_cpu dans le fichier boards.txt doit valoir 20000000L).

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  25 mai 2018 à 17:22:56

                                  D'accord, c'est à 16000000L.

                                  Grand merci pour ces précieux renseignements

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Bootloader ATmega328 P 20Mhz interne

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown