Échec incohérent du chargeur de démarrage ATMEGA328P

Aug 19 2020

Je crée un chargeur sans fil avec un microcontrôleur dessus.

J'ai assemblé 3 planches. L'un d'eux a un microcontrôleur qui fonctionne bien - brûle le chargeur de démarrage et télécharge correctement l'esquisse de code. Cependant, j'ai deux autres cartes - les mêmes composants qui ne fonctionnent pas. Le chargeur de démarrage échoue avec les messages suivants :

Première planche

     System wide configuration file is "/home/bem22/tools/arduino-1.8.10/hardware/tools/avr/etc/avrdude.conf"
     User configuration file is "/home/bem22/.avrduderc"
     User configuration file does not exist or is not a regular file, skipping

     Using Port                    : /dev/ttyUSB0
     Using Programmer              : stk500v1
     Overriding Baud Rate          : 19200
     AVR Part                      : ATmega328P
     Chip Erase delay              : 9000 us
     PAGEL                         : PD7
     BS2                           : PC2
     RESET disposition             : dedicated
     RETRY pulse                   : SCK
     serial program mode           : yes
     parallel program mode         : yes
     Timeout                       : 200
     StabDelay                     : 100
     CmdexeDelay                   : 25
     SyncLoops                     : 32
     ByteDelay                     : 0
     PollIndex                     : 3
     PollValue                     : 0x53
     Memory Detail                 :

                              Block Poll               Page                       Polled
       Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
       ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
       eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
       flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
       lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
       calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
       signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

     Programmer Type : STK500
     Description     : Atmel STK500 Version 1.x firmware
     Hardware Version: 2
     Firmware Version: 1.18
     Topcard         : Unknown
     Vtarget         : 0.0 V
     Varef           : 0.0 V
     Oscillator      : Off
     SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

Error while burning bootloader.
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Deuxième Conseil

         System wide configuration file is "/home/bem22/tools/arduino-1.8.10/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/bem22/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Error while burning bootloader.
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0xff007f
avrdude: Expected signature for ATmega328P is 1E 95 0F
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Pour la dernière carte, je génère souvent device signature 0xffffff ou 0xfff000 ou 0x000fff ou 0x00ff00 etc.

Pour les cartes 1 et 2, j'ai vérifié les connexions manuellement (de la broche QFN au FAI Arduino) à l'aide d'un multimètre. Les tensions sont correctes aussi - la carte obtient un 3v3 normal.

La seule crainte pour moi est d'avoir brûlé les puces lors de la soudure. J'ai utilisé du fil à souder 60/40 et une station de soudage à 300 degrés. Est-ce trop élevé ? Le temps de contact était relativement faible (moins de 5 secondes).

Voici quelques images avec ma configuration : [![enter image description here][1]][1] [![enter image description here][2]][2]

Et voici mon schéma : [![enter image description here][3]][3]

Des indices pourquoi? [1]:https://i.stack.imgur.com/pUEs3.jpg[2] :https://i.stack.imgur.com/R9LLc.jpg[3] :https://i.stack.imgur.com/F832p.png

Réponses

bem22 Sep 19 2020 at 17:49

Au final, c'était un problème de soudure. Je n'ai pas respecté plusieurs précautions lors de la conception de la planche.

Par exemple, j'ai utilisé des vias dans les pastilles déjà courtes et cela augmenterait la tension superficielle de la soudure liquide, ne lui permettant ainsi pas de se lier au cuivre.