Problema Arduino Nano 328PB

Ciao a tutti!

Ho dei problemi con un Arduino Nano che mi è arrivato provvisto del nuovo microcontrollore nominato 328PB (con l'aggiunta della "B").

Avendone 4 ho provato a fare la prova con tutti, ma due presentano il problema per ora.

Tengo a precisare che quelli che vanno sono di un'altra partita ordinati successivamente...

Uso il core "MiniCore" che mi permette di programmare questa versione nuova del chip...

Il problema degli Arduino incriminati succede durante la programmazione, quando il pin GPIO D4 è alto (pull up o connesso a +5v) blocca il trasferimento del programma.

Vedo che il PC scrive i dati seriali ma non riceve il feedback e non parte.

Ho scoperto che se abilito i pin GPIO da 2 a 5 a +5V riesco a programmarlo.
Ho scoperto che quando fallisce la programmazione il micro si blocca e devo resettarlo manualmente...

Come se ci fosse un codice binario SEGRETO che fa pasticci...
Ho già provato a ricaricare il bootloader ma non funziona... Bho :frowning:

Questo è il messaggio d'errore:

Arduino:1.8.19 (Windows 10), Scheda:"ATmega328, Yes (UART1 328PB only), EEPROM retained, Default, 328PB, BOD 2.7V, LTO enabled, External 16 MHz"

Lo sketch usa 2348 byte (7%) dello spazio disponibile per i programmi. Il massimo è 32384 byte.

Le variabili globali usano 215 byte (10%) di memoria dinamica, lasciando altri 1833 byte liberi per le variabili locali. Il massimo è 2048 byte.

avrdude warning: attempt 1 of 10: not in sync

avrdude warning: attempt 2 of 10: not in sync

avrdude warning: attempt 3 of 10: not in sync

avrdude warning: attempt 4 of 10: not in sync

avrdude warning: attempt 5 of 10: not in sync

avrdude warning: attempt 6 of 10: not in sync

avrdude warning: attempt 7 of 10: not in sync

avrdude warning: attempt 8 of 10: not in sync

avrdude warning: attempt 9 of 10: not in sync

avrdude warning: attempt 10 of 10: not in sync

avrdude warning: programmer is not responding; try -xstrict and/or vary -xdelay=100

avrdude error: unable to open programmer urclock on port COM6

avrdude error: unable to open programmer urclock on port COM6

Qualche consiglio?
E' un difetto del chip?
Possibile su due uguali?

GRAZIE IN ANTICIPO :frowning:

Intanto NON mi sembra che Arduino produca Nano con 328PB, quindi ... che scheda stai usando (link)?

Poi ... tu sai che il bootloader si può ricaricare sugli AVR solo via programmatore ICSP e non via la USB vero? Quindi, che programmatore ICSP hai usato? Come lo hai collegato?

Guglielmo

L'Arduino l'ho preso da Aliexpress in uno dei tanti venditori...

Il bootloader l'ho caricato come ho sempre fatto, quindi con un altro Arduino con il programma "Aduino as ISP".

Anche gli altri due Arduino funzionanti ho aggiornato il bootloader e tutto funziona.

Quindi sembrerebbe che la pratica sia corretta... poi non so :frowning:

... se mettevi il link era meglio :roll_eyes:

Ok ... ma hai selezionato la giusta scheda perché ...

... qui leggo ATmega328P e NON ATmega 328PB ... :roll_eyes:

Fai le dovute verifiche perché potresti star sbagliando le varie impostazioni ...

Guglielmo

Poi c'è una voce che seleziono il PB non ho sbagliato nulla e il bootloader si carica tranquillamente...

Fatto lo stesso con altre 3 schede come ho detto e due vanno quindi escludo che stia sbagliando nel caricamento di esso... :frowning:

Ho visto che dalla versione 3 del MiniCore di MCUdude sta usando l'urboot al posto dell'optiboot e che l'urboot è compatibile con avrdude dalla versione 7.1 in su.
Controlla di avere avrdude aggiornato oppure scegli l'optiboot.

Aha ... si, mi fai venire in mente che in passato anche altri utenti hanno avuto problemi con urboot (che viene dichiarato compatibile con optiboot, ma non lo è al 100%). :roll_eyes:

Guglielmo

Dove hai trovato il nano col PB???...

Su Aliexpress ci sono dei venditori che ti vendono il nano col PB... è come se non sapessero che il PB è diverso dal P ma loro lo mettono senza avvisare... :frowning:

Mhh non so nulla di questa cosa... cos'è l'averdude?

Come faccio ad aggiornare cosa?

Non sono riuscito a trovarne...

AVRdude è un programma che si occupa di effettuare l'upload del codice sulla scheda, viene richiamato dall'IDE tramite riga di comando.
Nel mio PC si trova nel percorso C:\Users<nome utente>\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin
E come vedi è la versione 6.3.0 rilasciata il 16 febbraio 2016.
Qui trovi le versioni aggiornate: Releases · avrdudes/avrdude · GitHub

Comunque ti consiglio di caricare il bootloader optiboot piùttosco che modificare AVRdude.

... sicuramente, anche perché cercare di aggiornare avrdude nell'IDE ...è impresa abbastanza complessa :roll_eyes:

Guglielmo

Ah se ne ordini da tre venditori diversi sicuramente te ne trovi uno col PB...

E come faccio a caricare il bootloader optiboot?

Cioè la pratica che faccio è quella di caricare il bootloader "classico" collegando l'Arduino as ISP al target e fare "Carica bootloader"... come faccio a caricare un bootloader diverso da quello che l'IDE mi mette a disposizione? :frowning:

Ho installato il MiniCore di MCdude sull'IDE 2.3.2 e nel package che ha scaricato ho notato che si porta appresso anche AVRdude 7.2 arduino edition. La sottodirectory del tools avrdude si chiama "7.2-arduino.1".
Nella directory hardware dove c'è il core vero, nel file board.txt c'è la definizione del micro

#############################
#### ATmega328/A/P/PA/PB ####
#############################

# General
328.name=ATmega328
328.upload.tool=avrdude
328.upload.maximum_data_size=2048
328.bootloader.tool=avrdude
328.bootloader.unlock_bits=0xff
328.bootloader.lock_bits=0xff
328.build.core=MCUdude_corefiles
328.build.board=AVR_ATmega328
328.build.bootloader_led=led+b5
328.build.extra_flags={build.clkpr}

# Upload port select
328.menu.bootloader.uart0=Yes (UART0)
328.menu.bootloader.uart0.upload.maximum_size=32384
328.menu.bootloader.uart0.upload.protocol=urclock
328.menu.bootloader.uart0.upload.uartpins=uart0_rxd0_txd1
328.menu.bootloader.uart0.build.export_merged_output=true
328.menu.bootloader.uart0.bootloader.file=urboot/{build.mcu}/watchdog_1_s/autobaud/{upload.uartpins}/{build.bootloader_led}/urboot_{build.mcu}_pr_ee_ce.hex

328.menu.bootloader.uart1=Yes (UART1 328PB only)
328.menu.bootloader.uart1.upload.maximum_size=32384
328.menu.bootloader.uart1.upload.protocol=urclock
328.menu.bootloader.uart1.upload.uartpins=uart1_rxb4_txb3
328.menu.bootloader.uart1.build.export_merged_output=true
328.menu.bootloader.uart1.bootloader.file=urboot/{build.mcu}/watchdog_1_s/autobaud/{upload.uartpins}/{build.bootloader_led}/urboot_{build.mcu}_pr_ee_ce.hex

328.menu.bootloader.no_bootloader=No bootloader
328.menu.bootloader.no_bootloader.upload.maximum_size=32768
328.menu.bootloader.no_bootloader.build.export_merged_output=false
328.menu.bootloader.no_bootloader.bootloader.file=empty/empty.hex

Come si vede il bootloader è proprio urclock, ma siccome il core si porta appresso avrdude 7.2 non ci dovrebbero essere problemi di incompatibilità.

Piuttosto, nel menù Strumenti --> Scheda --> Minicore -> hai selezionato ATmega328?
E poi nel menù Strumenti --> Variant --> hai selezionato 328PB?

Sì ho fatto tutti questi procedimenti... ma comunque il pin 4 se è alto non riesco a programmare... :frowning:

E' possibile pensare che siano semplicemente diffettati?

I pin della seriale 1 (quella aggiuntiva) del 328PB sono il PE0 e il PE1, D23 e D24, che non sono presenti nella nano standard poiche non esistono sul 328P.
Non è che nella tua scheda piuttosto che aggiugerli li hanno collegati ad altri pin, ad esempio al 4?
Hai uno schema oppure una foto a buona risoluzione della scheda col PB?

1 Like

Non è che, pur essendoci scritto 328PB, sono dei classici 328P?... :smile:

1 Like

Interessante, farò delle prove... :smiley: