Autor Tema: como usar el USBasp para programar 8051?  (Leído 23164 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
como usar el USBasp para programar 8051?
« en: 07 de Abril de 2018, 14:43:31 »
Que tal amigos del foro,

Nuevamente vengo a ustedes para preguntarles si alguien ha usado el programmador USBasp:

* usbaspver2.jpg
(78.51 kB, 1024x768 - visto 2475 veces)


para programar los microcontroladores 8051 de Microchip (Antes ATMEL) como los:
AT89S51, AT89S52, AT89S8253, AT89S2051 y AT89S4051.

Eh visto monton de videos y buscado info por toda la red y he hecho algunas pruebas tratando de programar el AT89S52, pero no logro programarlo.

Esta es una captura de lo que obtengo:


* AVRDUDE_8051.JPG
(116.86 kB, 665x683 - visto 2611 veces)


Tambien intente con un software que se llama progisp 1.72, pero simpre obtengo una ventana de error:


* progisp_8051.JPG
(95.7 kB, 960x501 - visto 2400 veces)


Alguien tiene alguna idea de cual seria el posible problema?

Estoy usando mi propio programamdor USBasp con el ultimo firmware diponible.

elreypic.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:como usar el USBasp para programar 8051?
« Respuesta #1 en: 10 de Abril de 2018, 12:25:43 »
Pues sigo en la busqueda de la solucion para esto de programar los microcontroladores 8051 de la serie AT89S51, AT89S52, AT89S8253, etc, usando el famoso y economico programador USBasp; pero sigo sin obtener resultados. Entre algunas cosas que pense es que definitavmente se necesitaba modificar el firmware del programador, y encontré una pagina web que lo mencionaba:

https://blog.mmccoo.com/2012/07/21/using-usbasp-and-avrdude-to-program-89s52/

Segui los pasos, pero nada de nada. Obtengo exactamente el mismo resultado.

Encontre otra pagina web:

https://www.circuitvalley.com/2011/06/usb-8051-avr-microcontroller-programmer.html

En la que de igual manera hacen mencion de la modificacion del firmware, tambien probé este, pero el resultado fue peor.

Sigo en la búsqueda de este "misterio".

Ojalá que entre los amigos del foro alguien tenga una solución.

elreypic.

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
Re:como usar el USBasp para programar 8051?
« Respuesta #2 en: 11 de Abril de 2018, 04:03:29 »
te sale el driver correctamente instalado en el administrador de dispositivos ?

https://www.youtube.com/watch?v=HjVZhOG-pqk

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:como usar el USBasp para programar 8051?
« Respuesta #3 en: 11 de Abril de 2018, 09:41:44 »
Que tal Sispic,

Te comento que el programador funciona perfectamente al programar AVR. Mi problema es al intentar programar los microcontroladores 8051. Es decir esta correctamente instalado, de hecho logre porgramar los AVR con el avrdude con el pickit2.

Siguiendo las instrucciones de las paginas anteriores, modifique el archivo avrdude.conf, agregando los parametros para los microcontroladores AT89S52, AT89S51 y AT89S8253. Eso solo para fines de prueba. Pero no logro progamar ninguno de ellos. Siempre obtengo el mismo resultado. Me puse a ver el codigo fuente del programador USBASP y pienso que no hay manera de hacerlo sin que se modifique correctamente este, ya que en ninguna parte del codigo existe algo que maneje el pin del reset y lo lleve a un nivel alto mientras se ejecutan los comandos (que es como lo requieren estos microcontroladores 8051). En todos los casos el reset lo lleva a bajo (que es como lo requiren los AVR).

Intente ver tambien el codigo fuente del avrdude, pero no logre entender mucho ya que no tengo ese nivel del lenguaje C y no logro entender como es que envia los datos para entonces basado en el protocolo del avrdude poder modificar el codigo del usbasp.
No he intentado la prueba mas sencilla de invertir la señal del reset con un inversor o un simple transistor.

Realizare la prueba de invertir la señal del reset y les comento.

elreypic.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4923
Re:como usar el USBasp para programar 8051?
« Respuesta #4 en: 11 de Abril de 2018, 15:26:50 »
Soy de opinion como Sispic,
yo he tenido tambien problema con el USBasp  al programar algunos Atmel, me llevo semana hasta que al Actualizar el Driver,
siendo asi, deberia de bajar el tiempo al programador y te acconsejo que instale el WinAVR .

Saludos

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:como usar el USBasp para programar 8051?
« Respuesta #5 en: 11 de Abril de 2018, 16:28:43 »
Que tal stk500,

Tengo instalado el WinAVR, pero como al ese no contiene la ultima version del AVRdude. El WinAVR tiene la version 5.1 y la ultima disponible es la 6.3. Pero he probado las dos y he actualizado los drivers tal como lo comentas, de hecho como posiblemente sabras, que es una pesadilla installar los drivers, pero he encontrado una opcion en que estos ya estan signed y no necesitas deshabilitar la opcion de signed driver en el windows 10.

https://protostack.com.au/2012/01/updated-usbasp-windows-driver/

Así que no es por ahí el problema.
Voy hacer mas pruebas y una vez encuentre algo se los comento.
Y muchas gracias por su ayuda.

elreypic.
« Última modificación: 11 de Abril de 2018, 19:48:30 por elreypic2 »

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
Re:como usar el USBasp para programar 8051?
« Respuesta #6 en: 12 de Abril de 2018, 06:55:47 »
El avrdude.conf parece bien configurado si se conpara con el Datasheet del AT89S52


AT89_S52_pdf" border="0

AT89_S52_conf" border="0


Tambien parece que  software tiene en cuenta dispositivos con reset alto o bajo



creo es este el circuido del programador usbasp



se supone  que usas en tu circuito isp el oscilador  pins XTAL1 and XTAL2
el software tiene un boton para detectar el dispositivo , lo reconoce ???

lo qe me tiene intrigado es un cosa... el MISO del programador no deberia ir al MOSI del isp , lo mismo con el MOSI del programador al MISO del isp ???? .




Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:como usar el USBasp para programar 8051?
« Respuesta #7 en: 12 de Abril de 2018, 10:17:41 »
Una vez más reportándome.

Les comento que finalmente logré leer, y programar el microcontrolador AT89S52.
Basicamente eran dos problemas:

1)El circuito de reset en el microcrocontrolador a programar. Yo coloqué un capacitor de 10uF a a VDD en serie con una resistencia de 10K este conectado al pin del RESET. Lo que hice fue simplemente eliminar ese capacitor como primer intento y luego me di cuenta que con un capacitor de 1uf como máximo es posible todavía la programación del microcontrolador.

2)El jumper J3 debe estar colocado, para garantizar la operación correcta con el software progisp.

Para el caso del avrdude con su GUI el AVRDUDESS su funcionamiento es muy inestable, algunas veces programa, otras no. Aquí una captura:


* AVRDUDE_89S52.JPG
(142.84 kB, 658x895 - visto 2288 veces)


Algo muy curioso es que no puede detectar el microcontrolador al usar el boton de "Detect", esta opcion siempre regresa: 1eff1e como se muestra al final de la captura anterior. Pero en la segunda linea del log de la captura anterior el device signature detectado es el correcto.

Bueno pues luego de muchos intentos pase aprobar el microcontrolador AT89S8253 y aplique las lecciones aprendidas, pero en este caso fue imposible lograr leeelo o programarlo.

Este es el script en el config que he usado:


* Config_89S8253.JPG
(101.5 kB, 758x877 - visto 2232 veces)


Luego intente con otro microcontrolador, con el AT89LP52, pero lo raro es que con este microcontrolador para lograr programarlo tuve que definir el signature como 0x1e, 0x1e, 0x1e que no es correcto ya que el signature de este micro es el 0x1e, 0x54, 0x06. Este es el config usado (aparece todo comentado por las pruebas que hice):


* Config_89LP52.JPG
(91.74 kB, 715x867 - visto 2148 veces)


Pero al usar el boton de "detect" obtengo el signature correcto. Pienso que todo esto es problema en el firmware pero no estoy seguro.
Lo que me dice todo esto es que hay que profundizar en el firmware y modificarlo de forma apropiada para poder ejecutar los comandos correctamente y detectar el tipo de microcontrolador o algo para lograr la programacion de forma correcta.
Aquí es donde necesite tu ayuda sispic, pero antes que nada gracias por tu interes y ayuda hasta ahora.

En cuanto a tus preguntas de conexion el MOSI del programador va conectado al MOSI del microcontrolador y el MISO con el MISO, es decir no se cruzan las conexiones.

Saludos y otra vez muchas gracias, sigo en este asunto.

elreypic.
« Última modificación: 12 de Abril de 2018, 11:36:38 por elreypic2 »

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
Re:como usar el USBasp para programar 8051?
« Respuesta #8 en: 12 de Abril de 2018, 13:10:31 »
un consejo , de momento no programes los fuse bits y o  Lock Bits  o dejalos por defecto . no  he mirado los 8051 pero por ejemplo en los avr atxxxx algunos bits marcados o desmarcados pueden inhibir la programacion serial  , ejemplo bit SPIEN . usease solo los programas isp una vez y despues ya no responde , solo en modo paralelo .
haver si das con ello   .


Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:como usar el USBasp para programar 8051?
« Respuesta #9 en: 12 de Abril de 2018, 16:45:52 »
un consejo , de momento no programes los fuse bits y o  Lock Bits  o dejalos por defecto . no  he mirado los 8051 pero por ejemplo en los avr atxxxx algunos bits marcados o desmarcados pueden inhibir la programacion serial  , ejemplo bit SPIEN . usease solo los programas isp una vez y despues ya no responde , solo en modo paralelo .
haver si das con ello   .

De hecho no estoy tocando para nada los fuses ni los lock Bits, precisamente para eso.
Me he puesto a analizar un poco más el código fuente y mi primera impresión es que a menos que se cambie el código el microcontrolador AT89S8253 nunca podrá ser programado basado en este protocolo, ya que este microcontrolador no devuelve respuesta alguna después de recibir el comando de Programming enable.
En el caso de los AT89(L)S51, AT89(L)S52, AT89LP51 y AT89LP52, estos devuelven una respuesta de 0x69 en el cuarto byte:


* AT89S52_PRGEnable.JPG
(136.14 kB, 1025x719 - visto 2202 veces)


Esta respuesta es la que le permite al programador saber que es un 8051 y no un AVR (ya el AVR responde con un 0X53 pero en el tercer byte). Y como no hay respuesta en el caso del AT89S8253 el USBasp envia el mensaje de error: device doesn't answer y por lo tanto no continúa con el proceso.


* isp_c_cpature.JPG
(69.38 kB, 549x644 - visto 2190 veces)


Mi primer objetivo es entender bien el protocolo entre el AVRDUDE y el USBasp. Una vez tenga eso podré modificar el firmware.
Mi objetivo final es poder realizar la programación de los microcontroladores AT89LPXXXX, pero estos son otra historia.

Gracias por todo y seguimos en este asunto.

elreypic.

P.S Cualquier otra sugerencia es siempre bienvenida.



Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:como usar el USBasp para programar 8051?
« Respuesta #10 en: 12 de Abril de 2018, 21:39:57 »
Buenas noticias!!!!! :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/

Finalmente logre realizar la programacion de los siguientes microcontroladores:

1) AT89S52
2) AT89LP52

El firmware utilizado es el que se encuentra en el siguiente link:

https://blog.mmccoo.com/2012/07/21/using-usbasp-and-avrdude-to-program-89s52/

Las consideraciones a tomar son:

1) Colocar el jumper de slow SCK en el USBasp
2) En el AVRDUDESS colocar la opcion Bit clock (-B) en 32KHz, esto aplica tambien para el AVRDUDE o bien se puede omitir este.
3) No usar capacitor > 1uf en el pin del Reset del microcontrolador a programar.

Estos son los script que hay que agregar en el archivo avrdude.conf:


* Config_89S52.JPG
(73.72 kB, 649x847 - visto 2153 veces)



* Config_89LP52_good.JPG
(74.55 kB, 657x848 - visto 2181 veces)


He pedido los microcontroladores AT89S51, AT89LP51, AT89LS51 y AT89LS52 (Estos dos ultimos son de de bajo voltaje, por lo que hay que agregar un level shifter o si  el programador tiene la opcion de perar a 3.3V se puede conectar directo, cambiando el Jumper). Una vez que los reciba realizare las pruebas pertinentes y les comento los resultados.

El siguiente paso será poder programar los microcontroladores: AT89S2041, AT89S4051 y AT89S8253 para ello tendre que realizar las modificaciones en el firmware utilizando algunos jumpers extra para la operacion de dichos microcontroladores, ya que como mencione en el post anterior, estos tipos de microcontroladores no generan respuesta despues de recibir el comando de "Program Enable".

Desenme suerte y cualquier ayuda, sugerencia y/o comentario simpre será bienvenido.

elreypic

P.S Gracias sispic por tu enorme ayuda, tus puntos me sirvieron para ver los detalles faltantes.

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
Re:como usar el USBasp para programar 8051?
« Respuesta #11 en: 14 de Abril de 2018, 04:43:39 »
lo he mirado y si ... los dispositivos  AT89S2041, AT89S4051 y AT89S8253 con el comando "Program Enable" no responden con ningun valor en el tercer y cuarto byte .

la funcion “ispEnterProgrammingMode()” busca respuesta a dos posibles  modelos de dispositivos .
Se podria modificar  de tal manera que si no se  obtiene en ninguno de los dos intentos que haga sin respuesta ,  un tercer intento y  hacer caso omiso a la respuesta  ,  acto seguido preguntar por "Read Signature"  al menos la direccion   (000H) y si responde  = “1EH indicates manufactured by Atmel “.  dar un return 0; ya que quiere decir que hay dispositivo Atmel  para hacerle cositas  .

es solo una idea .

mucha suerte  ;-) .

PD:este fin de semana por curiosidad intentare compilar la fuente de USBasp con avr-gcc
« Última modificación: 14 de Abril de 2018, 17:03:18 por Sispic »

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
Re:como usar el USBasp para programar 8051?
« Respuesta #12 en: 15 de Abril de 2018, 13:18:42 »
he intentado compilar USBasp con avr-gcc a pelo con el  Prompt msdos sin exito , errores por todas partes .
encontre en un rincon de mis descargas el programa AVR Studio 4.19 y ni su tia  :? ya que no tengo experiencia con el .
pero a la tercera cervecita ... voila  :D un bonito archivo .hex y las fuentes se pueden modificar y compilar al gusto .




He disfrutado como un niño recordando las luchas en la arena  :).

elreypic2 puedo pasarte todos los archivos y explicaciones necesarias  que he usado para que puedas modificar el software USBasp .
y a partir de aqui hay que ir probando fisicamente con el software y hardware .


Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:como usar el USBasp para programar 8051?
« Respuesta #13 en: 15 de Abril de 2018, 16:27:43 »
Que tal sispic,

Muchas gracias por tomarte el tiempo de averiguar el como compilar el proyecto del USBasp usando AVR Studio. De casualidad probaste compilarlo con la version 6.2 del AVR studio?
Si me pudieras pasar los pasos que seguiste te lo agredecería mucho.

Yo logré compilarlo usando el promtp del MS-DOS. Te comparto lo que hice:

Primero instalé el WinAVR que lo puedes descargar del sguiente link (o igual hasta ya lo tienes instalado):

http://winavr.sourceforge.net/

Lo importante es tener instalado el compilador avf-gcc y el make.exe:


* avr-gcc_installed.JPG
(91.43 kB, 931x601 - visto 2121 veces)



* make.JPG
(87.25 kB, 934x613 - visto 2132 veces)


Luego usando la consola del ms-dos, simplemente vas al directorio en donde tienes los archivos fuente del usbasp y tecleas "make main.hex" y presionas enter (bueno creo que si lo esta compilando porque es la forma en que obtengo el archivo hex y lo he comprado con el original y los archivos son idénticos).


* usbasp_main.JPG
(75.07 kB, 696x431 - visto 2131 veces)


Pero me gustaría más usar el AVR studio ya que es mas amigable el ambiente. Así que sí, sí me gustaría que me explicaras los pasos que seguiste para poder compilarlo usando el AVR studio.

Muchas gracias por tu interés en este proyecto.

elreypic.
« Última modificación: 15 de Abril de 2018, 17:35:16 por elreypic2 »

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
Re:como usar el USBasp para programar 8051?
« Respuesta #14 en: 16 de Abril de 2018, 07:39:17 »
No dispongo de la  version 6.2 del AVR studio .
encontré la AVR Studio 4.19 por algún rincón de my pc .

Aunque supongo que serán muy parecidas .

y disculpa por que soy muy malo para explicaciones  :(.

Creamos una  carpeta por ejemplo c: avr_studio  , copiar y pegar las fuentes en este directorio
Borramos el archivo  main.hex para que no de la vara y no  haya confusiones
Abrimos avr studio

En Project  - Project wizard  - new project
Seleccionamos  AVR-GCC y ponemos el  nombre del proyecto por ejemplo “main “   y location en este caso c: avr_studio
Después pide el debug ,  selecciono aleatoriamente cualquier cosa , ya que ni p.idea .

En- Project - configuration options – device – se selecciona  “atmega8” o el que se use .
En include directories   IMPORTANTE  - new insert  -
le añadimos la carpeta “c: avr_studio  “
 le añadimos la carpeta “c: avr_studio \ usbdrv”

El  build ahora no cuela .

En la ventana de la izquierda AVR GCC  “source files “  botón derecho “add new existing source  files“ todos los archivos que te salgan en carpeta “c: avr_studio”  y también de  la carpeta  “c: avr_studio \ usbdrv”

Después en “header files”  le añadir los .h  de estas carpetas  por si acaso .

Ver la  imagen del anterior post la  lista de archivos en la  izquierda AVR GCC  …

External Dependencies se llena solo .

Si todo va bien   “build” y  en la carpeta C:\avr_studio\default   un bonito archivo main .hex

Al desensamblar son idénticos al principio , pero a mi me da el . hex ,  2k menos que el original ,supongo que será por la versión  avr-gcc   que optimiza mas o menos . hay que probar fisicamente con el hardware .

Mucha suerte maestro ya tienes tela  :).

PD:no dudes en preguntar .


 

anything