Go Down

Topic: Freeze Arduino Duemilanove (Read 15265 times) previous topic - next topic

Antroid

Quote
Anzi, non dovresti neanche modificare il codice ma solo ricompilarlo passandogli un parametro per attivare l'uso del watchdog. Penso...

Apri il file /hardware/arduino/bootloaders/atmega/Makefile e cerca la riga
Code:
atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600

sostituiscila con questa
Code:
atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DWATCHDOG_MODS

Ricompila con make atmega328 e poi flasha il nuovo bootloader sulla tua 2009: ti serve un altro Arduino o un programmatore.
Altrimenti flasha il bootloader su un chip in standalone con l'ArduinoISP e poi sostituisci il chip a quello della tua scheda.

Dovrebbe funzionare. Dico "dovrebbe" perché non ho una 2009 per provare.

sto installando una vm con debian per compilare il makefile... vi faccio sapere...
serve qualche pacchetto particolare per compilare correttamente il bootloader?

leo72

Quelli soliti: autoconf, make, ecc..
Sui sistemi Debian-base dovresti trovare tutto mettendo un pacchetto che mi pare si chiami build-essentials o build-dep.

Antroid

#62
Jul 12, 2013, 06:51 pm Last Edit: Jul 12, 2013, 06:54 pm by Antroid Reason: 1
buona sera leo!
allora ho apportato la modifica al make file
Quote
atmega328: TARGET = atmega328
atmega328: MCU_TARGET = atmega328p
atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DWATCHDOG_MODS
atmega328: AVR_FREQ = 16000000L
atmega328: LDSECTION  = --section-start=.text=0x7800
atmega328: $(PROGRAM)_atmega328.hex

quando eseguo il comando su debian mi dice:
Quote
make: *** No rule to make target `atmega328'.  Stop.

eppura sembra specificato  :(
UPDATE: non effettuavo il make nella stessa cartella... MEA CULPA.
Adesso quando faccio il make mi restituisce questo errore:
Code: [Select]
make: Nothing to be done for `atmega328'

leo72

Sì, c'è un baco nel codice.
http://n0m1.com/2012/04/01/how-to-compiling-the-arduino-bootloader/

Fai la modifica al punto 2. Poi cancella tutti i file .hex e ricompila con "make atmega328"

Antroid

#64
Jul 12, 2013, 07:41 pm Last Edit: Jul 12, 2013, 07:43 pm by Antroid Reason: 1
siiiii!!!!! grande! GRAZIE LEO!
ho ottenuto questo file!
Code: [Select]
ATmegaBOOT_168_atmega328.hex
corretto?
adesso dovrei seguire questa guida: http://blackstufflabs.com/2011/11/19/installare-optiboot-su-arduino-duemilanove/
mi confermeresti tutti i parametri anche se non parliamo di optiboot? THX ^_^

leo72

Le istruzioni dovrebbero essere quelle. Non ho una 2009 per cui non posso confermare al 100%.

Antroid

strano ma vero ma ho trovato la soluzione...dopo il consiglio di pablos ho perso il weekend a debuggare il firmware.
Il problema è qui:
Code: [Select]
updateThingSpeak("field1="+stringLightValue+"&field2="+pirValue+"&field3="+tempcString);
In pratica veniva invocato per la seconda volta quando ancora dovevo terminare la prima richiesta..
Ho notato che il problema risiede sulla variabile "pirValue" che cambia valore durante la request.
Ora sta trasmettendo da circa 4 gg senza alcun problema.. quindi niente flashing del bootloader.
Ringrazio ancora leo che mi ha insegnato tanto sul watchdog e sulla ricompilazione del bootloader, non da meno ringrazio pablos per avermi dato la spinta morale a ricontrollare il firmware! :)
GRAZIE ANCORA!

Go Up