328 no voltage on oscillator pins

Hi !
I made 3 clones of arduino pro mini (8MHZ crystal - see photo and schematic below) without power supply (I give 5V from an external source).
The 3 boards have the same issue : no heart. Voltage is about 0.1V on xtal pins (about 2.5V on the pro mini).

Do I miss something to awake the oscillator/mcu ?

Thx for ideas

What do you mean by "no heart"?

Did you set the configuration fuses on the ATmega328P for the external crystal? The chips come from the factory configured to use the internal oscillator.

Oh ! thx

I didnt try to communicate as I didnt see frequency on the cristal pins ^^

if it wouldn(t be too much... do you h

Test if the boards work, ie, if you can program them.

Cheap multimeters react oddly to high frequency signals, and connecting a probe to the crystal pins can be enough to stop it from oscillating.

(previous message gone by accident)

Oh ! thx, I forgot that

I didnt try to communicate as I didnt see frequency on the cristal pins with the scope ^^

if it wouldn't be too much... do you have a "good" link to the bootloader upload and fuse programming ?

The best option for the ATmega328P is MiniCore:

After installing MiniCore, following the instructions at the link above, you can do this to set the fuses and upload the bootloader:

  • Tools > Board > ATmega328
  • Tools > Clock > 8 MHz external
  • Tools > Programmer > select the ISP programmer you are using. If you don't own an ISP programmer, you can use a spare Arduino board as an "Arduino as ISP".
  • Tools > Burn Bootloader

Burn bootloader sets the fuses as well as uploading the bootloader. After doing this. Make sure to always use the same Tools > Board and Tools > Clock menu options when uploading to your board.

Thank you very much

Oh! I see, I didn't look at the pictures, so I thought you were talking about "pro mini clones", ie, the cheap clones on ebay, not an own-built clone. Yes, you need to do as Pert said.

New issue...

Bootloader programming goes well (thank you message at end)

I use an USBASP device with drivers USBasp-win-driver-x86-x64-v3.0.7 to do it.

But, when I try to upload a sketch (holding down the shift button while clicking Upload) I have the following :

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x76
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x76
Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.
Le croquis utilise 1116 octets (3%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 9 octets (0%) de mémoire dynamique, ce qui laisse 2039 octets pour les variables locales. Le maximum est de 2048 octets.
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: warning: cannot set sck period. please check for usbasp firmware update.

Thx for help

Just to make sure we have all the information, please do this:

  • (In the Arduino IDE) File > Preferences
  • Uncheck the checkbox next to “Show verbose output during: compilation”
  • Check the checkbox next to "Show verbose output during: upload
  • Click “OK”
  • Sketch > Upload
  • After the upload fails, you’ll see a button on the right side of the orange bar “Copy error messages” (or the icon that looks like two pieces of paper at the top right corner of the black console window in the Arduino Web Editor). Click that button.
  • In a forum reply here, click on the reply field.
  • Click the </> button on the forum toolbar. This will add the forum’s code tags markup to your reply.
  • Press “Ctrl + V”. This will paste the upload output between the code tags.
  • Move the cursor outside of the code tags before you add any additional text to your reply.
Arduino : 1.8.9 (Windows 10), Carte : "ATmega328, Yes (UART0), 328P / 328PA, BOD 2.7V, LTO disabled, 8 MHz external"

Le croquis utilise 1116 octets (3%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 9 octets (0%) de mémoire dynamique, ce qui laisse 2039 octets pour les variables locales. Le maximum est de 2048 octets.
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Users\al\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.3/avrdude.conf -v -patmega328p -carduino -PCOM11 -b38400 -D -Uflash:w:C:\Users\al\AppData\Local\Temp\arduino_build_587249/Blink.ino.hex:i 

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\al\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.3/avrdude.conf"

         Using Port                    : COM11
         Using Programmer              : arduino
         Overriding Baud Rate          : 38400
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xa5
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xa5

avrdude done.  Thank you.

Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Are you trying to upload via your USBasp, or using a USB to serial adapter (AKA "FTDI")?

From your previous reply, I got the impression you were using the USBasp (because that's what shift + Upload does). However, the instructions in my last reply were a copy/paste of my stock reply and they instructed you to do a standard Upload, not an Upload Using Programmer. If you're trying to upload via the USBasp, then step 5 of my instructions should have been "Sketch > Upload Using Programmer". I apologize for any confusion.

My bad... you are right !

I made confusion between serial and usbasp programming and surely made a wrong mix in the connecting and operation.

USBasp works for bootloader and programming now. Thank you.

You're welcome. I'm glad to hear it's working now. Enjoy!
Per

A little question again...

I suppose that the bootloader loaded via MiniCore board choice is different than the "genuine" one from arduino,
so it uses different procedure.

I am right ?

The bootloader used by MiniCore is optiboot. Optiboot is the bootloader used on the Arduino Uno but MiniCore uses a newer version of optiboot. The only difference you would notice between the old version of optiboot used by the Uno and the new version of optiboot used by MiniCore is that the new optiboot has the ability to write to the flash memory at runtime, as documented here:

The Arduino Pro Mini uses a bloated and buggy old bootloader called ATmegaBOOT. The differences between optiboot and ATmegaBOOT are:

  • ATmegaBOOT requires a 2 kB boot section, while optiboot fits in the minimum 0.5 kB boot section. This means you free up 1.5 kB of precious flash memory by using optiboot instead of ATmegaBOOT.
  • ATmegaBOOT has a bug that causes the microcontroller to go into an endless reset loop after a watchdog timer reset. Optiboot does not have this bug. So you can't use the watchdog when you are using ATmegaBOOT.

I have an other difference :

With the "genuine" bootloader and selection of pro mini board I can upload sketchs without DTR pulse just pushing reset button when message "telechargement" (upload ?) appears.

That doesn't work with the choice of MiniCore 328 board.

I found why I had problems with USBasp sketch upload : That is working only with verbose checked !

You can do the manual reset technique with the MiniCore bootloader as well. However, you need to get the timing right for when you press the reset button. The tricky thing is that when you press the "Upload" button in the Arduino IDE, it first compiles your sketch before starting the actual upload. So you need to wait until after the compilation finishes before pressing the reset button. The way to get the timing right is to watch the black console window at the bottom of the Arduino IDE window. As soon as you see something like this:

Sketch uses 444 bytes (1%) of program storage space. Maximum is 30720 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

press and release the reset button.

Note that when you do an "Upload Using Programmer" via your USBasp programmer it erases the bootloader from the ATmega328P. This means you need do another Tools > Burn Bootloader before you can go back to doing regular serial uploads over the USB cable.

max777:
I found why I had problems with USBasp sketch upload : That is working only with verbose checked !

That is very strange. I can't think of how that could occur.

I confirm :

with or without DTR pulse, serial upload to ProMini with promini board board works well. But with Minicore 328 board, it's always the following :

Arduino : 1.8.9 (Windows 10), Carte : "ATmega328, Yes (UART0), 328P / 328PA, BOD 2.7V, LTO disabled, 8 MHz external"

Les options de compilation ont été modifiées, tout sera recompilé
Le croquis utilise 1156 octets (3%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 9 octets (0%) de mémoire dynamique, ce qui laisse 2039 octets pour les variables locales. Le maximum est de 2048 octets.
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Users\al\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.3/avrdude.conf -v -patmega328p -carduino -PCOM5 -b38400 -D -Uflash:w:C:\Users\al\AppData\Local\Temp\arduino_build_587249/Blink.ino.hex:i 

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\al\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.3/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 38400
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xc7
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xc7

avrdude done.  Thank you.

Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting#upload pour suggestions.

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.