Pages: [1]   Go Down
Author Topic: Arduino Bootloader en atmega328p  (Read 2256 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 9
o_O
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola gente, estoy hace semanas con un problema que no le encuentro explicacion.



Resulta que compré un Sparkfun jpeg trigger para manejar una cámara, pero la cámara que tengo no es compatible con el trigger, asique voy a usar la plaqueta para otra cosa. Para eso, me propuse instalar el bootloader de arduino en su atmega328p (nótese la p) para poder subirle programas mas facilmente con el IDE de arduino.
Aquí el esquema del trigger.

Aqui es donde viene el problema: al momento de quemar el bootloader en el atmega328p , obtengo un mensaje de error:

Code:
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

Estoy usando un arduino duemilanove328 como programador (Arduino as ISP) segun éstas indicaciones
Ya lo hice de ésta forma para programar un atmega8 en una breadboard y todo salio bien, pero con el atmega328p del trigger me tira el error anterior.

Los conecto entre si, asi:

arduino as programmer -----> trigger jpeg
digital 10                      -----> reset (el reset del socalo ISP que le pusieron al trigger)
digital 11                      -----> MOSI (el MOSI del socalo ISP que le pusieron)
digital 12                      -----> MISO (el MISO del socalo ISP que le pusieron)
digital 13                      -----> SCK (el SCK del socalo ISP que le pusieron)
5v                                -----> alimentacion power +
grn                               -----> alimentacion power -

Pinmap del atmega328p (es el mismo micro que usa el arduino pro mini! )


Una vez conectado y con el skeetch "examples/ArduinoISP" quemado en el programmer, selecciono en "tools/boards" todos los que usen atmega328 y despues "tools->burn bootloader-> w arduino as ISP" , y todos me tiran el mismo error.

Un detalle es que el clock del trigger es de 14.7456 Mhz. ¿Puede ser que el bootloader que tengo que quemar, tenga que estár especificamente preparado para éste clock? (tengo que buscar un .hex para 328p a 14.7456 ?? o como lo hago? )
Tambien intente crear mi propio item en la lista de boards, en el boards.txt con los datos que más se ajustan al trigger:

Code:
##################   boards.txt  ###################################

p328p.name=Arduino 3.3v 14.7456 Mhz  w/ ATmega328p

p328p.upload.protocol=stk500
p328p.upload.maximum_size=30720
p328p.upload.speed=57600

p328p.bootloader.low_fuses=0xFF
p328p.bootloader.high_fuses=0xDA
p328p.bootloader.extended_fuses=0x05
p328p.bootloader.path=atmega
#p328p.bootloader.file=ATmegaBOOT_168_atmega328.hex
p328p.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
#probe los dos .hex
p328p.bootloader.unlock_bits=0x3F
p328p.bootloader.lock_bits=0x0F

p328p.build.mcu=atmega328p
p328p.build.f_cpu=147456000L
p328p.build.core=arduino

pero me tira el mismo error.
Tambien intente hacerlo desde linea de comandos:

FacuMac:atmega facu$ avrdude -p m328p -P /dev/tty.usbserial-A9005csa -c avrisp -b 19200 -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex
Code:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Lo que me asusta es que ahi dice avrdude: Device signature = 0x000000
Osea parece que el atmega328p no me responde nada!

Tambien intente con el -F y asi si, termina de copiar todo perfecto, pero no funciona cuando despues intento subirle un prog desde la IDE de arduino:


FacuMac:atmega facu$ avrdude -p m328p -P /dev/tty.usbserial-A9005csa -c avrisp -b 19200 -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex -F
Code:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "ATmegaBOOT_168_atmega328_pro_8MHz.hex"
avrdude: input file ATmegaBOOT_168_atmega328_pro_8MHz.hex auto detected as Intel Hex
avrdude: writing flash (32652 bytes):

Writing | ################################################## | 100% 2.27s

avrdude: 32652 bytes of flash written
avrdude: verifying flash memory against ATmegaBOOT_168_atmega328_pro_8MHz.hex:
avrdude: load data flash data from input file ATmegaBOOT_168_atmega328_pro_8MHz.hex:
avrdude: input file ATmegaBOOT_168_atmega328_pro_8MHz.hex auto detected as Intel Hex
avrdude: input file ATmegaBOOT_168_atmega328_pro_8MHz.hex contains 32652 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 37.57s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

(tambien probe con los .hex de 16Mhz y de 8Mhz)

pero nada...

Que puede estar pasando?
Tengo 5 grandes dudas que quizas el tema viene por ahi y no se la respuesta:
1) ¿puede ser que como la board trigger trabaja a 3.3v no se entiendan atravez del ISP ? o no tiene nada que ver el voltaje?
2) ¿puede ser que el bootloader.hex que le mando, tenga que ser preparado para 14Mhz ?
3) ¿está quemado el atmega328p? por eso responde signature 000000 ?
4) lei por ahi que aveces hay que desactivar el auto-reset (poniendo una resistencia de 120 ohms entre reset y 5v). pero ¿ en cual hay que hacerlo ? en el programer o en el target?
5) ¿Puede ser que quemé el atmega328p porque el programmer le manda 5v por el ISP, y éste solo trabaja a 3.3v?

que mas puedo probar? que pasa?!!

desde ya muchas gracias!
« Last Edit: April 20, 2011, 08:46:12 pm by zaktux » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 9
o_O
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nadie tiene idea?

Ahora intente directo con un programador ISP por puerto paralelo, y tira los mismos errores.
obtengo esta respuesta cuando intento leer los fuse bits:

avrdude -p m328p -P lpt1 -c dapa -F -U efuse:r:-:h -U hfuse:r:-:h -U lfuse:r:-:h -U lock:r:-:h
Code:

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0xffffff
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude: reading efuse memory:

Reading | ################################################## | 100% 0.01s

avrdude: writing output file "<stdout>"
0x7
avrdude: reading hfuse memory:

Reading | ################################################## | 100% 0.00s

avrdude: writing output file "<stdout>"
0xff
avrdude: reading lfuse memory:

Reading | ################################################## | 100% 0.00s

avrdude: writing output file "<stdout>"
0xff
avrdude: reading lock memory:

Reading | ################################################## | 100% 0.00s

avrdude: writing output file "<stdout>"
0x3f

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

el programador funciona, porque cuando lo conecto a mi arduino diecimila, puedo quemarle un bootloader y leer los fuse bits sin problema.

Habre quemado el atmega328p ? como reconocer si esta roto?
o le force unos fusebits que ahora no me dejan conectarme? como funciona esto de los fusebits?

saludos!
Logged

Madrid
Offline Offline
Newbie
*
Karma: 1
Posts: 22
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola no había leído esta consulta antes si no ,la hubiera intentado responder antes.
En primer lugar decirte que el procesador lo puedes alimentar en ese rango de voltaje ,pero cuando es alimentado a 3.3 V. si quieres usar el bootloader de arduino tiene que funcionar a 8Mhz.Esto es lo primero que tienes que mirar ,¿de que frecuencia es el cristal que viene montado en la placa?¿Viene montado algún cristal?(puede funcionar con reloj interno).
Después que verificaras la frecuencia del cristal creo que no tengas pegas en cargar el bootloader de arduino (para 3.3V por supuesto),pero que vas a hacer con las patas del procesador que no tienen conexión ???
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 9
o_O
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, gracias por la respuesta, ya estaba desesperado! jaja.

En la placa viene montado un crital de 14.7456 Mhz

Ya intente cargar el bootloader de 328_3v3_8Mhz pero no se carga porque el atmega no responde correctamente. (¿como reconosco si se rompio?)

Como hago para que empieze a usar el clock interno de 8Mhz? es cuestion de los fuse-bits? o tengo que desoldarle el clock externo y listo?

Puede ser que no responda el atmega, porque en algun momento le force ( -F ) unos fuse-bits que nada que ver?

(la plaquetita la voy a usar para lo mismo que fue diseñada, pero con otra camara. El soft que trae no es compatible con mi camara, entonses lo voy a reescribir)

muchas gracias!
Logged

Chile
Offline Offline
Newbie
*
Karma: 0
Posts: 42
Arduino Chile
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Lograste grabar los bootloader?.. yo tengo el mismo problema.. identico y no consigo nada por ningun metodo.. me arroja el mismo error.. =/
Logged

Pages: [1]   Go Up
Jump to: