Problemas con Programador Paralelo

Antes de nada un saludo a todos,

hasta la fecha había programado solo con microcontroladores de microchip, pero desde que conocí el proyecto arduino siempre he tenido ganas de probarlo.

Por el momento he empezado comprando unos ATmega168 y mediante la placa StandAlone me gustaría empezar a probar el código de arduino.

El problema radica en que no soy capaz de programar el Bootloader ni con UISP ni con AVRdude. En ambos parece que el micro no responde. Antes de postear me he mirado todos los posts que he encontrado al respecto pero ninguno a solucionado mi problema, también he hecho búsquedas por internet y nada. A continuación os explico todos los pasos y pruebas que he seguido:

1.- El programador

El programador paralelo es de la propia pagina de arduino.
Lo he comprobado decenas de veces y parece que funciona bien. Lo acorte hasta unos 25cm, le he añadido algún pin más de GND que he visto por internet (concretamente a los pines 21 y 22 del db-25) tambien la salida de VCC (del pin 3) tal y como dice AVRdude.

Para probar el cable, he conectado unos leds a SCK, MOSI y MISO y si hago una petición con AVRdude puedo ver como el pin de SCK y el de MOSI parpadean, en cambio el pin de MISO permanece siempre medio iluminado suficiente para obtener en todas las medidas 0xFF.

2.- La conexión al micro

Los pines del microcontrolador están bien, o al menos lo he comprobado muchas veces.

Diferentes pruebas:

  • Con y sin alimentación externa (5V mediante 7805)
  • Con y sin el led del pin 19 que lleva la StandAlone
  • Con y sin cristal de cuarzo @ 16MHz

Tan solo he probado con uno de los atmega168, por temor a romper el segundo si hay algo mal...

3.- Los resultados obtenidos

Mediante las pruebas que he hecho con AVRdude siempre obtengo lo mismo, por ejemplo:

$ avrdude -p m168 -c dapa -P /dev/parport0 -t -vvvv

obtengo toda la información sobre avrdude que por cierto es la versión 5.2 y seguido obtengo el resultadod e la comunicación:

avrdude: Calibrating delay loop... calibrated to 548 cycles per us
bitbang_cmd(): [ AC 53 00 00 ] [ FF FF FF FF ]
bitbang_cmd(): [ AC 53 00 00 ] [ FF FF FF FF ]
...

Si hago un puente entre el MISO y GND obtengo lo mismo pero con :

bitbang_cmd(): [ AC 53 00 00 ] [ 00 00 00 00 ]

Por lo que parece que el cabe funciona.

Mediante el IDE de arduino, modificando previamente el archivo "preferences.txt" tal y como se explica, de nuevo parece que la información se envía pero que no hay respuesta, además recibo el error:

flash error at address 0xXXXX : file=0xXX, mem=0xff

Con todas mis pruebas parece que el chip este muerto, ya que sin conectarlo el resultado obtenido siempre es el mismo.

4.- Ordenadores

He usado dos ordenadores, un windows 98SE que con UISP me daba problemas de error de memoria flash al verificarla y el ordenador que estoy usando actualmente, con un Ubuntu 7.04 (1500MHz, 512MB ram)

Aun no he podido comprobar la integridad de las señales que le llegan al microcontrolador, espero que me traigan un osciloscopio portátil un día de estos a ver que veo. Pero mientras si me dais alguna posible solución sería muy bien recibida.

Muchas gracias de antemano!

PD: Supongo que me habré dejado muchas cosas y detalles por comentar pero si surgen ya iré respondiendolos :wink:

Hej!

este estudio es exhaustivo, se agradece el esfuerzo :slight_smile:

Por otra parte, dejame que te pregunte: has probado a lanzar la programacion como command line o desde el link del IDE? En windows instalaste los drivers GiveIO que vienen en el paquete de instalacion de Arduino en la carpeta drivers? En linux se supone que esos driver ya van instalados.

/d

Hola de nuevo, primero agradecerte tu dedicación a los foros (como a tantos otros).

Pues veras he hecho varias pruebas, con AVRdude he intentado comunicarme y cargar el bootloader del 168. Con el UISP igual y mediante el IDE he intentado cargar un sketch mediante el botón de Upload, este intenta cargarlo en el micro pero al acabar de enviar los datos da los errores de que la flash sigue siendo 0xFF.

Lo del GiveIO no lo instale porque creí que era para Win2000 y winXP (yo usaba win98) además creo que al final ya lo intente también por si acaso pero no se instalo.

Por cierto ya que preguntas por lo del IDE, al intentar usarlo para cargar el bootloader del 168, el programa me inhabilita los "links" en el menu tools, tan solo me deja para el atmega8 (pero supongo que es de alguna propiedad que falta cambiar en el preferences.txt, solo lo decía por si fuera un error).

Hola,

veras, el programador de puerto paralelo en Windows solo puede funcionar si GiveIO funciona. Es lo que hace falta para poder incluir esa linea de comandos que lanza la programacion por el puerto paralelo.

Yo nunca he podido probar en windows98, porque no tengo licencias para ese sistema operativo. Sin embargo te dire que si te montar un ordenador con linux seguro que lo haras funcionar.

Un abrazo,

/d

Bueno, de hecho (creo que lo comentaba en el primer post) la mayoria de pruebas las he hecho con linux, concretamente con Ubuntu 7.04,. Ya me han dejado un osciloscopio y no parece ser problema ni del puerto paralelo ni del programador puesto mediante el osciloscopio se pueden ver bien las señales que AVRdude o UISP envían.

Ayer estuve un buen rato (todos los momentos del día de que dispuse) haciendo pruebas a diferentes velocidades y con diferentes alternativas.

De lo que a mi me parece entender del datasheet, al ser un micro nuevo deberia venir con un reloj interno de 8MHz activado y con un divisor de 8 en total 1 MHz, y además según también el datasheet, el reloj SCL del programador SPI funciona (según valores de fábrica) a 1/4 del valor del reloj actual cosa que quedaría sobre los 250kHz.

La verdad he hecho pruebas a muchas velocidades puesto creo que ese debería ser tan solo el valor máximo de frecuencia del SCK.

No se si me estoy liando mucho y queda poco congruente pero a lo que me refiero es que la forma que enviar la señal parece la correcta, pero que el chip no responde, y me parece que el error o bien esta en los 2 micros que tengo (dificil) o que la señal no cumple las especificaciones ya sea por voltaje, o por "timing".

De lo que he podido ver en el osciloscopio, el voltaje se mantiene sobre unos 3.08V y parece que hay un pequeño offset de 360mV en el SCK, tal como se puede ver en la primera imagen, esta concretamente esta hecha mediante UISP y el período de la señal SCK es e unos 80us.

En esta segunda imagen se puede apreciar el envío de la palabra código que informa al micro que va a ser programado (mediante AVRdude).

Si vosotros sois capaces de ver algo extraño, tengo algunas imágenes más pero ahora mismo no puedo colgarlas...

Como he visto que esto me dará bastantes quebraderos de cabeza, la verdad es que me he informado un poco de otros programadores y por casualidad vi que en la pagina donde compre los micros, vendían el MKII de atmel a un precio razonable, esperaré que llegue y que funcione. Después de jugar un rato con los atmega (si es que funciona :P) intentare ver porque falla el programador paralelo y intentare hacer que funcione y ya os comentaré.

Sigo abierto a posibles soluciones ;), muchas gracias

¿Has probado a 125 Khz?. Esta es la frecuencia que hay que poner en el MKII...

Si, lo he probado a 125kHz con el mismo resultado, aunque a esta frecuencia el voltaje de la señal SCK me baja a 2V :S

Yo, personalmente, intenté programar un ATmega168 con el programador paralelo y no fui capaz.... y mira que le dí vueltas. Al final me compré un MKII, que está a un precio razonable, y a la primera...

Creo que a veces tenemos que poner un precio a nuestro tiempo.... :wink: