Topic: Arduino Mega 2560 Errore: avrdude: stk500v2_ReceiveMessage(): timeout

Ho letto migliaia di post che segnalano questo errore, prevalentemente si consigliava di portare la velocità di upload a 57600, ho provato e riprovato con diversi PC, diversi SO, e diverse versioni di IDE, ma niente. Ho incominciato con la versione Linux 2:1.0.5 che ha suo tempo ha funzionato, ma mi dava errore di compilazione. Sempre con Linux ho provato la versione 1.9.0 beta poi con la versione nightly. Compilazione perfetta, riesco a leggere la scheda, ma errore di comunicazione in upload. Ho provato anche con Windows 10 ma mi da sempre quell'errore. Quando parte l'upload vedo il led rosso di reset della scheda accendersi un attimo, poi niente. Cosa posso fare?

Buongiorno e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Intanto la scheda mega é originale o si tratta di clone?

speedyant:
Intanto la scheda mega é originale o si tratta di clone?

Penso che sia un clone cinese

b]>maidasette:[/b] per evitare un fastidioso "bug" del forum ti prego di leggere e di tenere conto, per il futuro, di quanto scritto QUI. Grazie

Guglielmo

P.S.: L'ho fatto io nei post qui sopra

Quella è una GT2560 A+, scheda di controllo per stampati 3D e ... monta un CH340C come interfaccia USB <-> Seriale.

Arduino NON fornisce i driver per quel chip, in funzione del sistema operativo e della versione, devi andare a cercare i driver per il CH340 e installarli, altrimenti NON vedi la seriale.

Guglielmo

Sembra una scheda "interessante". Esiste un manuale, un link, un qualcosa che spieghi cosa fare se qualcosa va storto, come in questo caso?

Collegata ad un pc widows, trova una porta seriale o "spunta" un punto interrogativo?

Arduino IDE la vede e la legge, se clicco sulla lente in alto a destra (monitor seriale) dopo aver impostato la velocità a 115200 baud, mi ritornano alcuni dati residenti sulla eprom:

echo:⸮start
echo: External Reset
Marlin 1.1.8

echo: Last Updated: 2017-12-25 12:00 | Author: (none, default config)
echo:Compiled: Apr 26 2019
echo: Free Memory: 3785 PlannerBufferBytes: 1232
echo:V47 stored settings retrieved (614 bytes; crc 55347)
echo: G21 ; Units in mm
echo: M149 C ; Units in Celsius

echo:Filament settings: Disabled
echo: M200 D3.00
echo: M200 D0
echo:Steps per unit:
echo: M92 X79.91 Y79.90 Z2580.64 E105.00
echo:Maximum feedrates (units/s):
echo: M203 X30.00 Y30.00 Z2.00 E45.00
echo:Maximum Acceleration (units/s2):
echo: M201 X1000 Y1000 Z100 E10000
echo:Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo: M204 P1000.00 R3000.00 T1000.00
echo:Advanced: S<min_feedrate> T<min_travel_feedrate> B<min_segment_time_us> X<max_xy_jerk> Z<max_z_jerk> E<max_e_jerk>
echo: M205 S0.00 T0.00 B20000 X8.00 Y8.00 Z0.30 E5.00
echo:Home offset:
echo: M206 X0.00 Y0.00 Z0.00
echo:Material heatup parameters:
echo: M145 S0 H215 B70 F255
echo: M145 S1 H240 B110 F0
echo:PID settings:
echo: M301 P19.86 I1.00 D98.93
echo:SD card ok

Se clicco su: Strumenti/Acquisisci informazioni sulla scheda ho la seguente risposta.

BN: Scheda sconosciuta
VID: 0403
PID: 6001
SN: Carica qualsiasi sketch per ottenerlo

Quindi il dialogo fra IDE e scheda è attivo e le porte sono settate correttamente. Se uso un programma (come Pronterface) di pilotaggio da PC via porta seriale tutto funziona, il problema è nell'upload del programma che non parte.
Nei forum dedicati alla stampa 3D si consiglia di ridurre la velocità di upload a 57600, ma continua a non funzionare

Marlin 1.1.8

Non lo conosco, ma siamo sicuri che includa un bootloader riconosciuto? Guardando velocemente su github mi sembra che usi un sistema diverso di compilazione (e forse di upload).

Ciao, Ale.

Usando la versione ArduinoIDE 2:1.0.5 ho già modificato il firmware, ma purtroppo essendo molto vecchia mi dava errori nella compilazione ed ho dovuto usare versioni attuali, che però mi creano questo problema di upload. Proverò a vedere se ci sono problemi con il bootloader.

Io ho paura che ci siano delle limitazioni sulla versione di ide da utilizzare...

Ho attivato la modalità di upload verbose, ho scoperto che tenta di comunicare a 57000 anziché a 115000. Penso che li risieda il problema.

Stai confondendo la velocità della seriale di lavoro del firmware con quella di upload.
La prima influenza come la scheda in questione dialoga con gli slicer che vai ad usare per stampare (Marlin va solitamente a 115200 oppure 250000 bit/s), la seconda ha a che vedere con il bootloader e la fase di caricamento.

Non mi ricordo quant'è il baudrate del bootloader per il mega, ma dovrebbe essere proprio 57600.

Avevo la v3 di quella scheda sulla mia stampante prima di passare ad una board 32bit e l'ho riprogrammata decine di volte.
Per compilare il Marlin Firmware, ti consiglio di usare platformio + VS Code, visto che il repository github ha già tutti i file necessari configurati per questo IDE.

cotestatnt:
Non mi ricordo quant'è il baudrate del bootloader per il mega, ma dovrebbe essere proprio 57600.

No, è da un po' che sulle AVR a 5V è 115200:

## Arduino Mega w/ ATmega2560
## -------------------------
mega.menu.cpu.atmega2560=ATmega2560 (Mega 2560)

mega.menu.cpu.atmega2560.upload.protocol=wiring
mega.menu.cpu.atmega2560.upload.maximum_size=253952
mega.menu.cpu.atmega2560.upload.speed=115200
...
...

Guglielmo

gpb01:
No, è da un po' che sulle AVR a 5V è 115200:

Ah ecco! Però sarebbe da capire che versione hanno installato sulla board in questione...
Io francamente non ricordo a che velocità andava, ma andava senza problemi.
A maggior ragione, gli converrebbe usare platformio cosi può facilmente ridefinire la velocità di upload a livello di singolo progetto senza dover modificare le definizione della board nel file di configurazione dell'IDE.

In effetti quando comunico con la seriale funziona solo a 115000, adesso devo capire come mai mi saltano fuori valori diversi.
Ho provato anche a modificare la riga:

mega.menu.cpu.atmega2560.upload.protocol=wiring
con:
mega.menu.cpu.atmega2560.upload.protocol=stk500v2

Ho sistemato anche il problema della velocità ma gli errori persistono:

Lo sketch usa 128854 byte (50%) dello spazio disponibile per i programmi. Il massimo è 253952 byte.
Le variabili globali usano 4535 byte (55%) di memoria dinamica, lasciando altri 3657 byte liberi per le variabili locali. Il massimo è 8192 byte.
/home/Arduino/arduino-nightly/hardware/tools/avr/bin/avrdude -C/home/Arduino/arduino-nightly/hardware/tools/avr/etc/avrdude.conf -v -patmega2560 -cstk500v2 -P/dev/ttyUSB0 -b115200 -D -Uflash:w:/tmp/arduino_build_55553/Marlin.ino.hex:i 

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

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

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : stk500v2
         Overriding Baud Rate          : 115200
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
         AVR Part                      : ATmega2560
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         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    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 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 : STK500V2
         Description     : Atmel STK500 Version 2.x firmware
         Programmer Model: Unknown
avrdude: stk500v2_ReceiveMessage(): timeout


avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
avrdude: stk500v2_command(): failed miserably to execute command 0x03
avrdude: stk500v2_getparm(): failed to get parameter 0x90
avrdude: stk500v2_ReceiveMessage(): timeout

L'errore:

         User configuration file is "/home/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

sembrerebbe ininfluente stando a quanto scritto su questo topic: User configuration file does not exist or is not a regular file, skipping - Installation & Troubleshooting - Arduino Forum

Quello che chiami "errore", è abbastanza normale, usa il file di configurazione standard di avrdude e non inficia assolutamente nulla.

L'errore è invece quello sopra ... come ho messo, verifica che Arduno MEGA sia dichiarato così ...

## Arduino Mega w/ ATmega2560
## -------------------------
mega.menu.cpu.atmega2560=ATmega2560 (Mega 2560)

mega.menu.cpu.atmega2560.upload.protocol=wiring
mega.menu.cpu.atmega2560.upload.maximum_size=253952
mega.menu.cpu.atmega2560.upload.speed=115200
...
...

Guglielmo

Il file boards.txt è corretto, nella riga:

mega.menu.cpu.atmega2560.upload.protocol=

sia che io metta wiring o che io metta stk500v2 le cose non cambiano.