buongiorno a tutti,
avrei bisogno di un aiuto per programmare un pro-mini 5v-16mhz in 1,8v-1mhz.
sto cercando di realizzare questo sensore
credo di esserre riuscito a programmare correttamente i fuse: ho usato un arduino UNO con arduinoISP e il seguente comando: avrdude -c arduino -v -p m328p -P /dev/ttyACM0 -b19200 -U lfuse:w:0x62:m
come output ottengo ..... avrdude: safemode: hfuse reads as DA avrdude: safemode: efuse reads as 7 avrdude: safemode: Fuses OK (E:07, H:DA, L:62)
quidi credo sia ok.
ora però ho problemi a caricare lo sketch.
dal pro-mini ho tolto il regolatore e il power led.
se provo a caricare lo sketch tramite arduinoISP selezionando la board riportata nella guida e "arduino as ISP" come programmatore i led tx-rx dell'UNO lampeggiano come ci si aspetterebbe, ma alla fine esce questo errore:
avrdude: verification error, first mismatch at byte 0x0042
ma il caricamento non sembra andare a buon fine (sto provando con il classico esempio del blink).
se invece provo a caricare il pro-mini con l'adattatore usb-serial ricevo questo errore: avrdude: stk500_recv(): programmer is not responding
qualcuno mi sa dire dove sto sbagliando?
PS. ho letto diverse guide in internet, compresa quella in oggetto, e tutte usano come base di partenza un pro-mini 3v3-8mhz: non credo ci siano problemi ad usare un 5v-16mhz anche perchè il micro è sempre lo stesso, il regolatore l'ho tolto e una volta programmati i fuse non dovrebe esserci alcuna differenza, però mi ha incuriosito molto il fatto che tutti usino esclusivamente il 3v3
Quando cambi la velocità del micro devi caricare sopra un bootloader creato per girare a quella velocità.
Per la compilazione devi crearti una nuova board da includere nel file board.txt
Qui trovi alcune indicazioni e un bootloader che funziona a 9600 e 1Mhz.
--> http://auroraproject.eu/how-to-setup-an-arduino-1-8v-1mhz-using-internal-oscillator/
grazie PaoloP,
dalla tua risposta credo di aver capito perchè tutti usano la versione 3v3: avendo già un bootloader a 8mhz basta impostare il fuse del prescaler per avere un chip a 1mhz senza dover flashare il bootloader.
è giusto, o anche in questo caso è necessario caricare un nuovo BL?
Lo devi ricaricare perché il codice è compilato per gli 8mhz e quindi sbaglia la sincronizzazione dei comandi di scrittura dello sketch.
Se puoi evita comunque il bootloader a 1mhz e programma direttamente via ISP.
PaoloP:
Se puoi evita comunque il bootloader a 1mhz e programma direttamente via ISP.
vuoi dire che programmando il chip tramite arduinoISP non è necessario cambiare il BL? scusa se faccio domande stupide ma non ho mai capito a cosa serve il BL
comunque ho già provato a programmare via ISP ma....
se provo a caricare lo sketch tramite arduinoISP selezionando la board riportata nella guida e "arduino as ISP" come programmatore i led tx-rx dell'UNO lampeggiano come ci si aspetterebbe, ma alla fine esce questo errore:
avrdude: verification error, first mismatch at byte 0x0042
0x58 != 0x18
avrdude: verification error; content mismatch
ma il caricamento non sembra andare a buon fine (sto provando con il classico esempio del blink).
Il bootloader è uno sketch particolare che serve per caricare gli sketch tramite connessione seriale.
Il bootloader si installa nell'ultima parte della memoria e permette di scrivere la restante. Ecco perché ad esempio sulla UNO non puoi scrivere sketch da 32K ma solo da 31.5K, perché negli ultimi 500 byte c'è il bootloader.
Programmando il chip tramite ISP hai a disposizione tutti i 32K di memoria flash della UNO, ma con questa operazione cancelli il bootloader presente.
Tramite fuse si può decidere se all'accensione del micro eseguire il bootloader o lo sketch.
grazie PaoloP, finalmente ho capito il bootloader.
mi restano però molti dubbi sulla guida postata sopra, dove non si parla di bootloader, ma solo di fuse e di caricare gli sketch con il convertitore usb-serial, ma forse è meglio aprire un nuovo topic sull'argomento specifico.
Se si vuol usare la rs232 per caricare gli sketch è sempre sottointeso che bisogna sempre avere il BL caricato. A livello produttivo comunque la quasi omnipresente porta ISP è la più usata per programmarli, mentre su molti microcontrollori atmel sono presenti anche le porte PDI e TPI specialmente quelli che hanno pochi piedini