ATMega328 stand alone 1 MHz errore

Ciao ragazzi. Volevo provare per la prima volta a far lavorare un atmega328 in stand alone a 1 mhz.

Cosa faccio:

Seguendo la guida del famoso Prof.Menniti,

_Modifico il file board inserendo le seguenti stringhe

##############################################################

mega3201.name=ATmega in Stand Alone 1MHz internal clock (w/ Arduino as ISP) 
mega3201.upload.protocol=stk500
mega3201.upload.maximum_size=32768 
mega3201.upload.speed=115200 
mega3201.upload.using=arduino:arduinoisp 
mega3201.bootloader.low_fuses=0x62 
mega3201.bootloader.high_fuses=0xdf 
mega3201.bootloader.extended_fuses=0x07 
mega3201.bootloader.path=optiboot 
mega3201.bootloader.file=optiboot_atmega328.hex 
mega3201.bootloader.unlock_bits=0x3F 
mega3201.bootloader.lock_bits=0x0F 
mega3201.build.mcu=atmega328p 
mega3201.build.f_cpu=1000000L 
mega3201.build.core=arduino 

##############################################################

_Apro l'IDE (versione 1.5.0 r2)
_Apro lo sketch Arduino ISP.
_Carico lo scketch arduino ISP su arduino con il tasto UPLOAD.
_Va a buon fine
_Monto il nuovo chip su bread bord completo di quarzo e condensatori
_Collego i pin con la modalità Arduino-Bread Board descritta a pag.10
_Seleziono sull'IDE Strumenti>>Programmatore>>Arduino as ISP
_Seleziono il tipo di arduino (precedentemente creato nelle board virtuali) "ATMega328 stand alone 1 MHz"
_Clicco Scrivi Bootloader
_Va a buon fine
_Apro lo sketch di esempio BLINK
_Seleziono come board dal menù "arduino stand alone 1 MHZ"
_Premo il bottone di UPLOAD
_ERRORE durante la compilazione:

In file included from Blink.ino:10:
C:\Users\Hans\Desktop\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Arduino.h:213:26: error: pins_arduino.h: No such file or directory

Cosa sto sbagliando? :frowning:

Metti il Boadloader per 16Mhz e poi vuoi mettere un Sketch pensando che il ATmega va a 1Mhz?
Ciao Uwe

Aggiungi la riga:

mega3201.build.variant=standard

Poi, altra cosa. La velocità di upload non mi pare vada bene se usi ArduinoISP, dovresti metterla a 19200, che sono i bps che usa lo sketch ArduinoISP per fare il transfer del file verso il chip standalone.

Uwefed

uwefed:
Metti il Boadloader per 16Mhz e poi vuoi mettere un Sketch pensando che il ATmega va a 1Mhz?
Ciao Uwe

Porca miseria, ho saltato un rigo nella descrizione di cosa ho fatto!
Ceto che no, ho selezionato il boot loader del chip stand alone 1 Mhz dall'elenco. Correggo il primo post! :blush: Grazie!

Leo72
Ok oggi pomeriggio correggo e vedo come va. Grazie!

Goretto grazie per il "famoso", chissà che non sia di buon auspicio XD

una domanda per tutti: vi risulta che esiste un bootloader per il clock a 1MHz? Nella mia Guida non credo di aver spiegato una procedura per caricare il BL su un micro settato a 1MHz, per quanto ne so il BL esiste già compilato solo per 8 e 16MHz (dalle varie board Arduino); forse si può modificare e ricompilare.

Goretto non è impossibile che il bl ti funzioni comunque ma certamente darà qualche numero soprattutto in termini di gestione di tempistiche, timer, etc., quindi aspetta le risposte dei nostri esperti e poi regolati di conseguenza. :wink:

Io non l'ho visto, tecnicamente credo ci sarebbero dei problemi di velocità.
Secondo questo tool:
http://www.wormfood.net/avrbaudcalc.php
A 1 MHz andrebbe solo una connessione a 4800 bps, ammesso che si possa compilare correttamente il bootloader per quel clock.

Quindi ricordavo bene; allora, caro Goretto, devi rinunciare all'idea, a mio modesto parere, di operare con un bootloader a 1MHz, opta per l'8MHz (low fuse = E2) interno, così puoi sempre alimentare a bassa tensione ed evitare il quarzo, inoltre hai un bl bell'e pronto :wink:

mettiamo in sospeso un secondo la questione 1-8 MHz.

Professor Menniti! che piacere! Mai più avrei pensato di avere una risposta anche da lei, sono emozionato.
La sua guida l'ho stampata e fatta rilegare, bell'opera spiegata per i più inesperti!
Nulla da togliere al Signor Leonardo, grande esperto da cosa leggo ingiro per la rete eh! non fraintendiamo.

Ho tentato la stessa proceduda però usando il classico bootloader a 16 MHz, va a buon fine dopo la solita classica lampeggiatina dei TX ed RX per una 15ina di secondi.
Dopodichè rimuovo il chip dalla board arduino e lascio collegata solo quella sulla bread board ormai flashata con il bootloader a 16MHz originale arduino, sposto il cavetto del reset dal pin 10 al pin RESET come di consueto e provo a caricare un BLINK. Niente, non va... :astonished:
avrdude: stk500_getsync(): not in sync: resp=0x00
Ma perchè?! mi sta fumando il cervello non sono abituato a seguire ste procedure.... devo dormire di più la notte!!!

PIN usati per il caricamento del BL su Bread Board:
LATO Arduino ------- LATO ATMega328
GND-------------------PIN 8 e PIN 22
5V---------------------PIN 7 e PIN 20
RESET-----------------PIN 1
PIN 11------------------PIN 17
PIN 12------------------PIN 18
PIN 13------------------PIN 19

PIN usati per il caricamento dello SKETCH su Bread Board
LATO Arduino ------- LATO ATMega328
GND-------------------PIN 8 e PIN 22
5V---------------------PIN 7 e PIN 20
PIN 10-----------------PIN 1
PIN 11------------------PIN 17
PIN 12------------------PIN 18
PIN 13------------------PIN 19

Sia durante il caricamento del bootloader sul chip in standalone che durante il caricamento di uno sketch sempre sul chip in standalone, se usi l'Arduino con lo sketch ArduinoISP devi collegare il pin 10 dell'Arduino al piedino fisico del chip su breadboard. Perché il segnale di reset lo dà lo sketch ArduinoISP.

Poi, una volta programmato il bootloader, puoi anche togliere il chip dall'Arduino e spostare il jumper che collega il piedino di reset 1 del chip in standalone al pin RESET della scheda Arduino se vuoi flashare direttamente dall'IDE.

Goretto, finirai per farmi arrossire :blush:
Allora secondo me il bootloader non lo stai caricando, intanto perché l'operazione dura di norma più di 15 secondi ed in secondo luogo perché il collegamento che devi usare è quello che usi per caricare lo sketch (cioè il pin 10 di Arduino, e non il suo reset, va all'1 del micro sulla bread); infatti la connessione ISP non cambia nulla tra bootloader e sketch. Se vuoi la prova ricarica il bootloader sul micro della bread e prova a metterlo sulla UNO al posto dell'originale, vedrai che non riuscirai a caricarci nulla dentro. Se invece ti fidi di me e di Leo (che, ti assicuro, ne sa molto più di me...) fai così:
1 - usa la seconda configurazione per caricare il bootloader (naturalmente sulla bread devi correttamente montare il quarzo da 16MHz e i due condensatori, altrimenti non ci fai nulla) - come board seleziona direttamente "Arduino UNO", quindi niente virtuali....
2 - Se la procedura va a buon fine elimina il collegamento ISP
3 - togli il micro originale da Arduino e mettici quello della bread (OVVIAMENTE con tutto scollegato e spento!)
4 - carica un qualsiasi sketch su Arduino mediante l'IDE.
5 - Se va tutto a buon fine a questo punto vuol dire che il micro è a posto, lo rimetti sulla bread, rifai il collegamento ISP e provi a caricargli un qualsiasi altro sktech, usando il comando "File - Carica con un programmatore" e NON il Carica/UPLOAD.

Rieccomi, nada de nada, sono davvero triste, non perchè non trovo la soluzione perchè è evidente che me l'avete appena scritta, sono triste perchè continua a non funzionare e 99 su 100 è colpa mia che anche se mi spiegate cosa fare come se lo doveste spiegare a vostra nonna, cerco di farlo ma non va quindi sbaglio! mi sento un po' ritardato e francamente inizio a pensare di non avere molto cervello.... sbaglio sempre tutto!
Onde evitare incomprensioni da parte vostra ma soprattutto da parte mia, ho fatto direttamente un video (in buona qualità tranquilli) per esporvi il problema, portate pazienza per favore! grazie.

CLIC QUI per vedere il video:

Il blink che vedi dopo aver ricollegato l'Arduino è dato dallo sketch "Blink" appunto che viene montato su tutti i chip 328 insieme al bootloader, e siccome hai unito insieme i pin 13 dei 2 microcontrollori, il chip sulla breadboard ti fa lampeggiare il led integrato sull'Arduino. E' normale.

L'ultimo passo è errato, nel senso che se stacchi il chip dall'Arduino, poi quello in standalone con il bootloader caricato sopra non devi più collegarlo via SPI (quindi coi pin 10/11/12/13) ma solo tramite i jumper fra i pin 0 e 1, ossia le linee della comunicazione seriale. Quando tu spedisci uno sketch normale via IDE, l'invio avviene appunto sulla seriale. Se non colleghi le linee RX/TX del chip sulla breadboard ai pin RX/TX dell'Arduino, non potrai mai caricarci nulla.
Nella guida di Menniti è scritto, cap. 7.

Ahhhh ma con i Jumper intendevi i cavetti col connettore dupont!! Boia faus! credevo parlassi di un Jumper sulla board che io evidentemente non ho tipo questi 3:

Il capitolo 7 non l'ho mai considerato l'ho solo letto di sfuggita perchè avevo capito trattasse SOLO programmatori, non pensando che inviando lo sketch "come programmatore" appunto dall'IDE la situazione è la stessa! Ora si che mi è limpida la cosa. Provo immediatamente!

Niente da fare! :frowning:
O meglio, se carico il bootloader della UNO a 16 MHz va a buon fine e riesco a caricare gli sketch con la seriale (TX RX RESET +5V GND) e infatti funzionano perfettamente.

Ma...

Se carico il bootloader della stand alone 8 MHz va a buon fine e al momento di caricare lo sketch con la seriale (TX RX RESET +5V GND) il led RX su Arduino fa 3 lampeggi il TX ne fa 1 e stop....

Errore: avrdude: stk500_getsync(): not in sync: resp=0x00

A questo punto, non vedo errori signori miei.... non è che è un problema di IDE? vi prego non mi lasciate nella broda perchè sto impazzendo! :frowning:

No, ma devi avere pazienza, siamo qui per passatempo non per lavoro, se stiamo tutto il giorno sul Forum la sera non si mangia :smiley:
Quando fai il caricamento via seriale (tx, ecc)lo togli il micro originale da Arduino?
Una volta che hai caricato il bootloader a 8MHz lo hai sostituito il quarzo da 16 con uno da 8 sulla breadboard?
Che board stai usando nell'IDE per lavorare col micro a 8MHz? e quali valore di LOW FUSE stai usando?
Secondo me c'è qualche casino a livello clock nella versione a 8MHz

Eccomi, intanto mi scuso per l'insistenza! So benissimo che lo fate per passatempo, i problemi di tutti i giorni già son troppi se poi c'è da sobbarcarsi anche i problemi degli utenti di un intero forum non si vive più, ne sono consapevolissimo e mi ritengo già fortunatissimo ad avere un'assistenza da voi gratuita, aggiungo solo, beati voi che avete il "problema" del lavoro... lo vorrei tanto anche io! se solo qualcuno me lo desse... :disappointed_relieved:

Ad ogni modo... premetto che ho risolto tutto e sono al settimo cielo, ora prima rispondo e poi spiego cosa ho cambiato.

Quando fai il caricamento via seriale (tx, ecc)lo togli il micro originale da Arduino?

Si,signore.

Una volta che hai caricato il bootloader a 8MHz lo hai sostituito il quarzo da 16 con uno da 8 sulla breadboard?

No, signore. Non ho mai letto che bisogna farlo da nessuna parte e non ci avevo pensato...

Che board stai usando nell'IDE per lavorare col micro a 8MHz?

Quella creata con la procedura descritta nella guida ovvero:
"ATmega in Stand Alone 8MHz internal clock (w/ Arduino as ISP)"

quali valore di LOW FUSE stai usando?

quelli della guida, cioè 0xe2


Come sono riuscito a fare funzionare il tutto?
Ho provato a creare una terza nuova board virtuale, con i parametri dettati nella guida ufficiale di Arduino con le seguenti stringe:

atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)

atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F
atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino:arduino
atmega328bb.build.variant=arduino:standard

Ho caricato il bootloader selezionando la sopracitata board virtuale e poi ho caricato uno sketch con metodo seriale TX, RX, GND, 5V,GND pin to pin solita e tutto è andato a buon fine.

Le differenze tra board virtuale creata dalla guida del buon Prof.Menniti sono le seguenti:
(in rosso le vecchie, in blu le nuove)

atmega328bb.upload.maximum_size=30720
mega3208.upload.maximum_size=32768

atmega328bb.upload.speed=57600
mega3208.upload.speed=115200

atmega328bb.bootloader.high_fuses=0xDA
mega3208.bootloader.high_fuses=0xdf

atmega328bb.bootloader.extended_fuses=0x05
mega3208.bootloader.extended_fuses=0x07

atmega328bb.bootloader.path=arduino:atmega
mega3208.bootloader.path=optiboot

atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
mega3208.bootloader.file=optiboot_atmega328.hex

atmega328bb.build.core=arduino:arduino
mega3208.build.core=arduino

atmega328bb.build.variant=arduino:standard
"""mancante""" (aggiunta su consiglio del buon Leo72 senò l'ide non funzionava mega3208.build.variant=standard)


Spero di aver fatto una segnalazione gradita e di non aver fatto solo perdere del tempo.
Il mio dubbio è, non è che i valori sono così discordanti perchè uso l'IDE 1.5.1 R2 1.0.5 R2al posto della 1.0.1?

Goretto:
Il mio dubbio è, non è che i valori sono così discordanti perchè uso l'IDE 1.5.1 R2 al posto della 1.0.1?

Non entro nel merito del thread ...
... vorrei solo capire perché cavolo uno, non solo si mette ad usare un software in BETA invece che uno stabile e definitivo, che già è tutto dire, ma oltretutto di una BETA vecchia ed obsoleta che conteneva degli errori !!! :astonished: :astonished: :astonished:

Se non è masochismo questo ... ]:smiley:

Guglielmo

Goretto mannaggia a te. Tu hai solo una grande confusione in te. Il problema nasce sempre da una lettura superficiale della guida. Risulr: confusione tra versioni ide, tra isp e seriale, tra clock esterno e interno. Ora non ho tempo, domani ti darò gli indispensabili chiarimenti, almeno capirai PERCHÉ hai risolto. :sweat_smile:

Guglielmo e Menniti ferrrrrmi ho solo sbagliato a digitare la sigla!!! :grin: 1.0.5 R2!!! Non 1.5.1R2 (che manco esiste credo) :grin: Lo dimostra anche il VIDEO che ho fatto pocanzi... oooops :sweat_smile:

Come daltronde ho dichiarato all'inizio del post.... sto usando l'ultima versione ufficiale stabile nessuna beta.