Go Down

Topic: [SOLVED] Arduino nano - Problema reset arduino con watchdog (Read 1 time) previous topic - next topic

michelef87

#15
Nov 14, 2013, 05:03 pm Last Edit: Nov 14, 2013, 05:11 pm by michelef87 Reason: 1
Risolto grazie! :D

Allora, ho seguito la dritta di PaoloP e la guida di Testato.

Scrivo qui come ho fatto, perchè magari a qualcuno può servire:

Come ho scritto, ho usato 2 arduino nano. Su di uno ho caricato normalmente come si fa di solito lo sketch che si trova negli sketch di esempio di arduino che si chiama "ArduinoISP".
Questo arduino l'ho usato come programmatore.

Poi ho preso l'arduino nano col bootloader da modificare, e l'ho collegato al precedente arduino tramite i pin "superiori" ICSP seguendo la guida che avevo incollato poco sopra nel thread, ovvero:

Code: [Select]
Arduino without   |  Arduino as ISP
   bootloader     |   programmer
__________________|________________
ICSP pin#1 (MISO) |      D12
ICSP pin#2 (+5V)  |      5V
ICSP pin#3 (SCK)  |      D13
ICSP pin#4 (MOSI) |      D11
ICSP pin#5 (RST)  |      D10
ICSP pin#6 (GND)  |      GND
__________________|________________


(a sinistra i pin ICSP sull'arduino col bootloader da modificare, da collegare con i pin a destra che sono sull'arduino che fa da programmatore).

Poi ho editato il file /usr/share/arduino/hardware/arduino/boards.txt (su linux), aggiungendo questa serie di righe:

Code: [Select]
##############################################################
nano328optiboot.name=Arduino Nano w/ ATmega328 (OptiBoot)
nano328optiboot.upload.protocol=arduino
nano328optiboot.upload.maximum_size=30720
nano328optiboot.upload.speed=115200
nano328optiboot.bootloader.low_fuses=0xff
nano328optiboot.bootloader.high_fuses=0xd6
nano328optiboot.bootloader.path=optiboot
nano328optiboot.bootloader.file=optiboot_atmega328.hex
nano328optiboot.bootloader.unlock_bits=0x05
nano328optiboot.bootloader.lock_bits=0x0F
nano328optiboot.build.mcu=atmega328p
nano328optiboot.build.f_cpu=16000000L
nano328optiboot.build.core=arduino
nano328optiboot.build.variant=eightanaloginputs
##############################################################


Ho qualche dubbio sulla riga
nano328optiboot.upload.maximum_size=30720
perchè l'ho copiata dalla parte "default" dell'arduino nano con atmega328, e mi pare che optiboot occupi meno spazio, quindi lo spazio massimo a disposizione dello sketch dovrebbe essere qualcosa in più, comunque non penso che crei problemi. Il resto i fuse ecc lì ho copiati da altri guide che usano il bootloader optiboot_atmega328.hex, quindi credo siano corretti.

Sucessivamente ho riavviato arduino ide, ho messo "Arduino as ISP" come programmatore nel menù strimenti, , come tipo device: "Arduino Nano w/ ATmega328 (OptiBoot)" (che sarebbe il nuovo modello di arduino creato poco sopra).
Poi "scrivi il bootloader". Ed ha caricato il bootloader.
Poi ho reimpostato il vecchio programmatore (AVRISP mkll) nel menù sstrumenti ( e provato a caricare qualche sketch, tra cui:

Code: [Select]
#include <avr/wdt.h>

void setup() {
  wdt_disable();
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);
    wdt_enable(WDTO_1S);
}

void loop() {
  wdt_reset();
  delay(4000);
}


che funziona correttamente! :) Ogni secondo il led del pin 13 si spegne un attimino e si riaccende. Cambiando WDTO_1S con altri valori, cambia anche l'intervallo di reset, quindi tutto ok! :)
Chiaramente per caricare sketch ora bisogna usare il nuovo modello di arduino aggiunto modificando il file boards.txt.

Grazie per l'aiuto! :)


nid69ita

my name is IGOR, not AIGOR

PaoloP

Dopo aver collegato i 2 nani e messo sul primo l'Arduino as ISP, potevi semplicemente scegliare la board Arduino uno e poi il comando scrivi bootloader senza dover aggiungere una virtual board.
Poi per la programmazione e l'upload degli sketch rimettevi il giusto programmatore e la board del nano.  :smiley-mr-green:

Comunque una guida in più e un po' di sperimentazione non fa male.  ;)

michelef87

Ah ecco :D

Comunque sto un po' convertendo un po' di arduino nano che ho e ricaricando un po' di sketch su dei progetti.... mi pare più performante ora l'arduino.... è una mia impressione o può essere?  :smiley-roll:

PaoloP

No. Il micro è il medesimo ed alla stessa velocità.
Cambia forse l'upload dello sketch che può essere fatto a 115K invece che a 56K come la 2009.
Quindi mette la metà del tempo per l'upload del file sull'Arduino.

Testato

e' anche piu' veloce all'avvio, dal momento in cui parte lo sketch e' tutto come prima

aumenta la flash a 32256 perche' optiboot occupa solo 512Byte

fai bene a tenere una board a parte, perche' cosi' sfrutti sia la velocita' a 115200 sia lo spazio flash superiore
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up