Bootloader atmega328pb TQFP package 3V3 8MHZ

Ciao a tutti,

ho una scheda con saldato il micro atmega328pb TQFP package alimentato da un regolatore a 3V3 e un quarzo esterno a 8MHz.
Come potrei caricare il Bootloader? Ho accesso ai pin della seriale e anche ai pin dell'ISP.

Grazie

Con i pin della seriale non ci fai nulla; ti serve un programmatore ICSP, come ad esempio QUESTO e devi utilizzare il connettore ISP.

Poi, ovviamnete, naturalmente devi avere il .hex del bootloader adatto da caricare ...

Guglielmo

... o questo (il guscio è utile):
USBASP - Amazon

e l'adattatore a 6 pin:
Adattatore 10 pin - 6 pin USBASP - Amazon

Entrambi puoi acquistarli anche su Ebay dalla Cina per pochi Euro.

Ma ti serve veramente il bootloader?... Una volta che hai il programmatore, puoi usare quello per caricare i programmi.
Per la comunicazione seriale, d'altra parte, ti serve un convertitore USB.

Grazie delle info.
Il programmatore ISP c'è l'ho però non ricordo se posso cambiare l'alimentazione da 5V a 3V3 perchè potrei danneggiare il micro giusto (dato che lavora a 3V3)?

Dove posso trovare il file .hex da poterlo caricare? Che programma dovrei usare?

Devi installare nell'Arduino IDE qualche "core" che supporti il ATmega328PB (ad esempio QUESTO che è ottimo), collegare il programmatore ISP, selezionare la giusta MCU e velocità di Clock (la tensione è inifluente, quella MCU lavora sino a 5.5V) e poi, dall'IDE, effettuare il "Carica Bootloader".

Guglielmo

la tensione è inifluente, quella MCU lavora sino a 5.5V

l'MCU si, bisognerebbe capire se il regolatore a 3.3 V è contento di essere alimentato al contrario con 5 V, non tutti lo sono...

Ciao, Ale.

penso non sia il massimo. Ad ogni modo ho letto questa guida:

sembra che proponga di alimentare tutto 3V3 sia programmatore che micro da programmare.

Per quanto riguarda il bootloader corretto da caricare proverò a studiarmi la pagina nel link e provare.

Penso che il nuovo atmega abbia potenzialità maggiori rispetto al precedente e molti si troveranno nelle stesse condizioni.

Normalmente tutti i VERI programmatori ISP (... NON quelle "porcherie" fatte con Arduino as ISP :smiling_imp: ) hanno un pin che misura la Vcc ed adattano automaticamente i segnali ...


... il Vcc presente sul connettore NON è difatti pensato per alimentare la scheda, ma per rilevare a che tensione essa lavora ed adattare i segnali.

Ripeto ... i VERI programmatori ISP, no le cinesate da pochi US$ ... ::slight_smile:

Guglielmo

Miki56:
Penso che il nuovo atmega abbia potenzialità maggiori rispetto al precedente e molti si troveranno nelle stesse condizioni.

Beh ... nuovo si fa per per dire, noi avevamo qui sul forum adattato il "core" Arduino UNO al ATmega328PB già parecchi anni fa.

Correva l'anno 2016 ... e c'è un bel thread in Megatopic ;D ... e già vari produttori facevano schede basate su quella MCU ... QUESTA era disponibile proprio nel 2016 !

Guglielmo

ilguargua:
l'MCU si, bisognerebbe capire se il regolatore a 3.3 V è contento di essere alimentato al contrario con 5 V, non tutti lo sono...

... l'alimentazione, come sai, NON deve essere fornita dal programmatore ISP, ma le schede da programmare vanno alimentate. Il Vcc del programmatore è solo un segnale in ingresso verso di esso per dirgli a che tensione sta lavorado la MCU ... ovviamnete questo per i "programmatori" degni di tale nome :wink:

Poi ci sono quelli cinesi/compatibili che, in alcuni casi, possono anche alimentare la MCU, ma allora, normalmente, hanno la possibilità di selezionare la tensione di alimentazione :slight_smile:

Guglielmo

P.S.: Se guardi il modello che avevo suggerito, indica chiaramente:

È in grado di funzionare con dispositivi a 3,3 V e 5 V, può essere configurato per fornire alimentazione al dispositivo di destinazione in sistemi a basso consumo.

... maggiori dettagli QUI :slight_smile:

... l'alimentazione, come sai, NON deve essere fornita dal programmatore ISP, ma le schede da programmare vanno alimentate.

Quindi?

Il Vcc del programmatore è solo un segnale in ingresso verso di esso per dirgli a che tensione sta lavorado la MCU ... ovviamnete questo per i "programmatori" degni di tale nome

Dunque?

Il mio intervento era solo per evidenziare che se si ha una scheda con già montato il regolatore a 3.3 alimentarla a 5 V (come suggerivi te) può non essere salutare, comunque tu gli dia l'alimentazione, non capisco molto il senso della puntualizzazione.

Ciao, Ale.

In effetti, l'USBASP fornisce tensione sul Vcc. Spesso, quando realizzo dispositivi funzionanti a pile, prevedo l'alimentazione anche da ISP per non scaricare le batterie con le varie prove durante lo sviluppo del software.

ilguargua:
Quindi?

... quindi:

  1. semplicemente NON hai capito il senso del mio post #4 (o, molto più probabilmente, mi sono espresso male io) ... la MCU regge fino a 5.5V quindi di base NON si devi preoccupare (... anche perché stavamo parlando delle impostazioni dell'IDE nella selezione della MCU e ... li è veramente ininfluente). Per il resto ... l'alimentazione viene comunque data dalla scheda dove essa è montata dato che il "programmatore" NON è fatto per alimentare le schede (... parlo sempre di "programmatori" degni di tale nome, AVRISP MKII, Atmel ICE, lo stesso Pololu USB AVR v2.1, ...), ma per rilevare la loro tensione di alimentazione.

  2. al post #9 ti ho ribadito che l'alimentazione NON deve arrivare dal programmatore, ma che le schede da programmare vanno alimentate (... e quindi la sua verrà alimentata dal suo regolatore a 3.3v)

Insomma ... pochi post ben confusi ... :smiley: :smiley: :smiley:

Guglielmo

P.S.: Sarebbe poi anche da verificare il LDO che monta la sua scheda, che tensione regge sull'output con l'input non alimentato ... ::slight_smile:

Datman:
In effetti, l'USBASP fornisce tensione sul Vcc ...

... ed in effetti ... quella è "monnezza" ... ma se ti ci trovi bene ... :grin: :grin: :grin:

Ci sono programmatori che sono in grado di alimentare la scheda che programmano dando anche correnti degne di nota (... normalmente richiedono una loro alimentazione), e, ovviamente, sono fatti in modo da poter decidere la tensione da fornire al target (... anche via software in modelli di un certo livello).

Guglielmo

Ciao a tutti,

faccio un aggiornamento del post che ho aperto.
Ho trovato varie soluzioni al problema che però devo ancora provare a livello pratico.

  1. Caricare Arduino ISP su Arduino mini, funziona già a 3,3V.

  2. Caricare Arduino ISP su una scheda Arduino qualsiasi e usare dei traslatori di livello sui pin di programmazione.

  3. Usare dei programmatori come ad esempio USBTinyISP. Alcuni di questi (V2.0) hanno un jumper che se è aperto il livello logico dei pin in uscita è uguale alla tensione della scheda da programmare.

Ho provato questa soluzione avendo a disposizione un programmatore USBTinyISP ma pur avendo il Jumper staccato, collegando il connettre ISP mi alimenta ugualmente la scheda. Non ho ancora capito il perchè.

Se ho scritto cose sbagliate correggetemi pure.

Ho una domanda sul protocollo IPS.

Se metto un oscillatore da 16MHz sono riuscito a caricare il bootloader. Con un oscillatore da 8MHz non funziona.
Quale può essere la causa secondo voi? Ho letto che gli Atmega328PB vergini sono preimpostati di fabbrica per funzionare a 1MHz tramite l'oscillatore interno.

Usando la programmazione ISP il clock non è passato dal programmatore (SCK)?
Quindi a prescindere se c'è un'oscillatore interno o esterno da 8 o da 16 non dovrebbe avere importanza per quanto riguarda il caricamento del bootloader?
Non usa altri clock, perchè come riferimento usa quello del segnale SCK? E' corretto?

La prima cosa che si deve fare su un chip è ... impostare i FUSE per come dovrà lavorare, difatti ...
... tutti AVR standard escono di fabbrica con i FUSE impostati per oscillatore interno (8MHz) e divisore per 8 attivo (8MHz / 8 = 1 MHz).

Il clock fornito dal connetore ISP nulla ha a che vedere con il clock della MCU ... quello è il clock del bus SPI !

Se carichi un bootloader fatto per lavorare a 16 MHz e cerchi di usarlo con una MCU che sta andando a 8 MHz o, peggio, ad 1 MHz, il bootloader ovviamnete non funziona.

A te fallisce il caricamento del bootloadre via ISP o lo carichi e poi NON funziona?

Guglielmo

Non usa altri clock, perchè come riferimento usa quello del segnale SCK? E' corretto?

ICSP (In Circuit Serial Peripheral) o (In Circuit Serial Programming).

Comunque la MCU il clock lo deve avere e infatti ha quello ricavato dall'oscillatore RC interno che appunto lavora a 1MHz.

Quindi per 16MHz devi installare il quarzo e i condensatori.

Anticipato da @gpb01.

Ciao.

Miki56:

Ho provato questa soluzione avendo a disposizione un programmatore USBTinyISP ma pur avendo il Jumper staccato, collegando il connettre ISP mi alimenta ugualmente la scheda. Non ho ancora capito il perchè.
...

Se intendi quello schema ... non e' chiaro, ma a me sembra che il pin VCC del connettore ICSP possa essere scollegato dal VCC con il ponticello JP3 ... ma allo stesso tempo lo vedo connesso al VCC dell'integrato IC2 ... dato che immagino che IC2 sia comunque alimentato, non vedo il senso di quel ponticello ... o sbaglio io ?

gpb01:
La prima cosa che si deve fare su un chip è ... impostare i FUSE per come dovrà lavorare, difatti ...
... tutti AVR standard escono di fabbrica con i FUSE impostati per oscillatore interno (8MHz) e divisore per 8 attivo (8MHz / 8 = 1 MHz).

Il clock fornito dal connetore ISP nulla ha a che vedere con il clock della MCU ... quello è il clock del bus SPI !

Se carichi un bootloader fatto per lavorare a 16 MHz e cerchi di usarlo con una MCU che sta andando a 8 MHz o, peggio, ad 1 MHz, il bootloader ovviamnete non funziona.

A te fallisce il caricamento del bootloadre via ISP o lo carichi e poi NON funziona?

Guglielmo

Ho 2 schede identiche una con oscillatore da 16Mhz e una da 8 MHz. Quella da 16 Mhz sono riuscito a carica il bootloader. Quella con l'oscillatore da 8 non sono riuscito (caricamento tramite ISP). Naturalmente ho impostato il clock esterno da 8 prima di effettuare il caricamento.

Non ho ancora provato a caricare dei programmi, sono ancora alla fase del bootloader.