Autor Tema: Ayuda con proyecto Joystick USB (ATMEGA16)  (Leído 8543 veces)

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

Desconectado BlueDemon

  • PIC10
  • *
  • Mensajes: 10
Ayuda con proyecto Joystick USB (ATMEGA16)
« en: 17 de Marzo de 2011, 13:52:09 »
Hola a todos, ayer me inicié en este tema de los microcontroladores. Hace rato estaba interesado en armar un buen joystick para mi simulador de aviación, y opté por armar un proyecto que viene desde hace algunos años llamado Mjoy, que inicialmente estaba construido con al ATMEGA8.

Este microcontrolador no se consigue, por lo menos Semak no lo trae y en lugar trae el ATMEGA16 en montaje superficial (TQFP). Ya de entrada arrancamos mal... tuve que diseñar un adaptador de TQFP a DIP que me llevó mucho tiempo y no conseguí hacerlo debido a que el método de la planchita no me daba el resultado esperado... finalmente opté por mandarla a hacer, el resultado es muy bueno pero hay que pagarlo.

Teniendo 2 micros, y 2 plaquetas empecé a soldar... armé un circuito en el protoboard, instalé el PonyProg, cargué el HEX siguiendo todas las instrucciones como debe ser y todo venía bien hasta el momento donde se programan los fusibles, ahí me tiró error.

Después de eso, ese integrado quedo inútil. busqué más info y encontré una config diferente así que la hice y de nuevo... todo bien hasta el momento de programar los fuses. Ahora tengo 2 muertos...

Sinceramente no se que más hacer. Voy a empezar por postear lo que quiero hacer, lo que hice y alguna información que les pueda ser útil.

Mi primera pregunta es: Se habla de "Fusibles de programación" e inmediatamente se me viene a la mente las famosas memorias que se programaban quemando fusibles internos, pero por lo que leo me parece que no son fusibles, ya que vi algo de que se pueden restaurar. Si alguien me puede aclarar esta duda, se lo agradezco.

Para empezar, acá está el diagrama de mi plaqueta adaptadora:

PCB: TQFP a DIP

Un archivo PDF con el proyecto original:

ATMEGA8 AVR USB Joystick

Un screenshot de como estaban los security bits antes de tocarlos:

ATMEGA16 Default

Archivo HEX:

mjoy

Hoy, antes de escribir este post, conecté al USB a ver que pasaba... Absolutamente nada, windows ni se entera que le conecté el usb. Omití los diodos de 3,3v... a menos que eso tenga algo que ver, hoy a la tarde los compro y pruebo de nuevo.

Según leí por ahí, hay un circuito que permite restaurar la configuración de los fuses... o quizás alguna plaqueta programadora especializada (me gustaría comprar alguna ya que tengo idea de empezar a trabajar con estos micros)(o quizás con los populares PIC... no lo tengo decidido).

Mi circuito es simple, ni si quiera necesito poner un diagrama:

Patas 5, 17, 27 y 38 a +5Vcc.

Patas 6, 18, 28 y 39 a GND.

Pata 4 (RESET) con una resistencia de 10K pull-up a positivo y un condensador 0.22uF a GND.

Pata 40 con condensador 0.1uF a GND.

Omití el circuito del cristal la primera vez teniendo en cuenta que la primera vez usa oscilador interno. Lo coloqué después de programar y nada. Al segundo circuito lo programé con el cristal puesto y lo mismo.

La idea sería publicar la versión final de este lindo joystick, que es igual o mejor que los comerciales. Cuando lo tenga andando voy a publicar la información BIEN DETALLADA, para principiantes como yo. Espero que me puedan dar una mano!

Un saludo!

Fernando.

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #1 en: 17 de Marzo de 2011, 15:05:01 »
Hola Fernando y bienvenido a nuestros foro Todopic, muy interesante tu proyecto y ya habia visto varios en la Web,
ya hay en la web un programdor para revivir los atmega, pues bien los Atemga se pueden programar en 2 modos,
Modo ISP con solo 6 pines
Modo PP/HVSP que quiere decir programacion de sistema en alto voltage, que son 12 voltio
y se necesita un programador muy especial.
pero ahora te  doy una advertencia, cuando programe cualquier micro Atmel, deberia tener en cuenta en que modo lo programa y tambien los Fuses ISP y RESET DISSABLE si no tiene el programador HVSP ni intente programarlo porque una vez programado ISP desactivando los FUSES ISP y RESET DISSABLE no podra programarlo con el ISP  pero con el HVSP si, ahora mismo no recuerdo como se llama ese programador HVSP, pero si busca aqui en el foro encontrara la informacion, te aconsejo que use el buscador de subforo atmel y poniendo la palabra magica  FUSES.
Yo para esto caso uso mi programador STK500.

Suerte y un gran saludos

 

Desconectado dolphin_96

  • PIC12
  • **
  • Mensajes: 73
    • Ezkybel Electronics
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #2 en: 17 de Marzo de 2011, 16:32:35 »
hola, en la parte que dices de los diodos zener si es indispensable que lo pongas por que de lo contrario podria no funcionarte, una vez hice el porgramador de avrs el USBASP, y omití dichos diodos, y resulta que lo conecte a mi PC y funciono, y asi lo deje, hasta que una vez que fui con un amigo, lo puse en su pc y como tu dices ni se entero de que habia conectado algo, probe en otra pc y lo mismo, asi que le puse los diodos y funciona en todas las pc's, en lo que dices de los fuses depende de lo que hayas activado o desactivado, como comenta stk500 hay dos modos de programacion, pero te doy un tip si es que moviste los fuses de oscilador, a mi me paso lo mismo y tenia dos micros muertos, pero yo le movi la opcion de oscilador externo que no es lo mismo que cristal externo, y ya no podia reprogramarlo, lo que hice fue inyectarle en el pin de osc1 unos pulsos de 1Mhz, conecte el programador y logre desbloquerlos, ls pulsos se los inyecte con un pic.

otra cosa que estuve checando es que no moviste nada del bit "SPIE" ya que si lo huvieras movido significaria que no podras programarlo mas con este programador, el jtag tambien se puede mover y reprogramar con tu programador, checa en la hoja de datos que configuracion de oscilador pusiste, quisa sea el problema.

y por ultimo estas seguro que es compatible el atmega8 con el atmega 16?
suerte
« Última modificación: 17 de Marzo de 2011, 18:25:50 por dolphin_96 »
Visiten: www.xbot.es/ezkybel tengo tutoriales para pics con visual basic...:)

Desconectado BlueDemon

  • PIC10
  • *
  • Mensajes: 10
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #3 en: 17 de Marzo de 2011, 23:42:58 »
Hola de nuevo.

Gracias por las respuestas. Acabo de darme cuenta que cometí un error al conectar el cristal, se ve que me confundí de PDF y lo conecté en cualquier otro lado (si, me quería matar... pero son cosas que pasan y eso que revisé 200 veces el trabajo antes de enchufarlo).

La situación ahora es esta: Ambos micros respondieron a la perfección al momento de grabarlos, borrarlos, cambiarles los fuses como dice el proyecto mjoy. En otras palabras, ambos funcionan.

Coloqué los diodos, de todas formas me da que no se reconoce el dispositivo usb. Coloqué 2 hex de dos páginas distintas en ambos micros y siempre lo mismo.

Hice una sola prueba en uno de los micros y deshabilité el clksel3... ahora ese micro está inutilizado para todo, ni si quiera puedo leerlo. Ya se que no debí hacerlo, por eso solo probé una sola vez. Voy a armar una de esas placas programadoras HV.

En cuanto a por qué no se reconoce el dispositivo, es un misterio... los pines del usb estan bien, ya chequié la polaridad. Será que el protoboard no se banca los 12mhz? He probado circuitos de frecuencias cercanas y no he tenido problemas... quizá esta vez sea eso.

No he podido contactarme con nadie que haya hecho el proyecto y lo tenga andando.

En cuanto a si son compatibles Atmega8 y 16 yo creo que sí porque estas páginas hablan de eso...

Ojalá alguien se pase por estos lados y tenga alguna experiencia en este proyecto.

Saludos!

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #4 en: 18 de Marzo de 2011, 03:08:15 »
Hola BlueDemon
acabo de leer un mensaje de una persona que le sucede lo mismo y lo resolvio, pero claro con un Atmega8-16, y el problema que tenia fueron los Diodos Zener en la entrada de USB 3,3voltio zener y lo cambio por 4,3 voltio y le funciona ya, te aconsejo que en la parte USB poner todos los componente que estan en el Esquema.
tampoco encuentra la pagina donde esta ese proyecto,  lo que no se porque no he comprendido muy bien tu mensaje, pero si pone link de la pagina original donde sacaste ese proyecto quizas te pueda ayudar, el atmega8 y atmega16 no son compartible, el atmega16 tiene mas registros que el atmega8, asi que habia que saber los registros que usar el programa, aparte hay muchos variante de Atmega, Que tipo exacto de Atmega16 usa?
Saludo y Suerte

Desconectado dolphin_96

  • PIC12
  • **
  • Mensajes: 73
    • Ezkybel Electronics
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #5 en: 18 de Marzo de 2011, 10:38:53 »
Noo. no compres el programador especial, yo ya intente probar tu .hex en un atmega48 y no me funciono, supongo que este si es incompatible, pero al querer borrarlo tuve el error que tu tiviste, lo que yo hago en estos casos es lo siguiente:

solo pones un cristal en las terminales 9 y 10 cuando lo vallas a programar y funciona, ya puedes reprogramar tu atmega, yo lo hago con un cistal de 8 megas, pero supongo que debe funcionar con uno de 12 Mhz, yo lo he borrado varias veces y desabilitando el clksel3
« Última modificación: 18 de Marzo de 2011, 10:51:21 por dolphin_96 »
Visiten: www.xbot.es/ezkybel tengo tutoriales para pics con visual basic...:)

Desconectado BlueDemon

  • PIC10
  • *
  • Mensajes: 10
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #6 en: 18 de Marzo de 2011, 14:18:52 »
Hola de nuevo. Hoy voy a comprar los diodos de 4.3V pero recién voy a poder responder mañana, así que estén atentos.

Lo que puedo decir por ahora es que, poner el cristal no me permite reprogramar el chip. Voy a probar con un generador de onda cuadrada a ver que pasa.

En cuanto a los esquemas, mañana mismo hago una recompilación de todos los enlaces y publico.

Esten atentos mañana.

Saludos y gracias!

Desconectado dolphin_96

  • PIC12
  • **
  • Mensajes: 73
    • Ezkybel Electronics
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #7 en: 18 de Marzo de 2011, 23:00:51 »


Esten atentos mañana.

Saludos y gracias!

 :shock: que pasara el dia de mañana.. que sorpresas nos traera bluedemon, no podre consiliar el sueño.
Visiten: www.xbot.es/ezkybel tengo tutoriales para pics con visual basic...:)

Desconectado BlueDemon

  • PIC10
  • *
  • Mensajes: 10
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #8 en: 18 de Marzo de 2011, 23:05:46 »
Estaba escribiendo esto justo cuando alguien me respondía...

Hoy estuve toda la tarde probando el ejemplo de los leds que oscilan en todas las salidas del micro. Hay oscilación, porque de cualquier forma que conecte el led enciende, pero debe ser a muy alta frecuencia... Cambié la frecuencia del AVR studio a cientos de valores de megahertz, cambie el cristal, los fuses y siempre hace lo mismo! La verdad que ya no se que pensar...

la verdad que después de haber tenido tantos problemas tengo que decir que estos micros ya me tienen harto! El led se apaga cuando se está programando por el Ponyprog, y si lo borro se apaga o queda prendido (siempre dependiendo de como conecte el led) lo que me lleva a pensar que el micro andaría... lo que no puedo creer es que me de tantos problemas!!! A ver si alguien con experiencia me da una mano y hace lo siguiente:

UN DIBUJO DE COMO SERIA EL CIRCUITO CON EL ATMEGA16 TQFP

COMO CONFIGURAR LOS FUSES PARA QUE FUNCIONE CON EL OSCILADOR INTERNO EN PONYPROG

COMO CONFIGURAR LOS FUSES PARA QUE FUNCIONE CON EL OSCILADOR A CRISTAL EN PONYPROG

Espero que alguien me de una mano!

Saludos!

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #9 en: 19 de Marzo de 2011, 04:31:19 »
Pues el problema no es del  micro sino tuyo, porque si no sabe configurar los fuses para programar el micro mejor leer en el datasheet y otras cosas ha elegido el programador menos indicados para eso, porque por aqui nadie lo usa, al menos yo, recuerdo una vez en mis primera programacion para micro atmel que me instale el Pony Prog. porque el circuito para programar los micros es de lo mas simple, y nunca consegui programar el micro por el lio de los Fuses, resultado fue que me compre el STK500, aparte amigo BlueDemon si no pone el codigo aqui no seria tan facil de ayudarte, no somos adivino, los programadores no nos guiamos por el Hardware sino por el programa y luego el hardware, en tu post anterior prometiste dar mas informacion cosas que no lo ha hecho. no te meta en Aventura sin leer los bit de configuracion de ese micro ya que tiene mas que el Atmega8.

Saludos y Suerte.

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #10 en: 19 de Marzo de 2011, 11:39:32 »
Hola No Sé Si Eso Podra Ayudar
De Momento E Encontrado Varios Errores En Tu Fichero .Hex
En Principio El Hex Segun Lo Que Veo Esta Compilado Para Un Atmega 8
;* Target MCU           :ATmega8
;* AUTHOR      :   Mindaugas Milasauskas
Asi Que Si Le Estas Gravando Eso Al Atmega8 No Te Puede Funcionnar Nunca
E Hecho La Simulacion En El AvrStudio Y Esos Son Los Errores Que Me Marca

Código: [Seleccionar]
C:\Documents and Settings\mjoy\mjoy.asm(3): Including file 'C:\Archivos de programa\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc'

C:\Documents and Settings\mjoy\mjoy.asm(13): error: Invalid redefinition of 'USR'
C:\Archivos de programa\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc(310): info: previous definition of 'USR'

C:\Documents and Settings\mjoy\mjoy.asm(14): error: Invalid redefinition of 'E2END'
C:\Archivos de programa\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc(686): info: previous definition of 'E2END'

C:\Documents and Settings\mjoy\mjoy.asm(153): warning: Register r28 already defined by the .DEF directive
C:\Documents and Settings\mjoy\mjoy.asm(154): warning: Register r30 already defined by the .DEF directive

Assembly failed, 2 errors, 2 warnings
Es Decir 2 Errores Y 2 Avisos
Esos Son De Momento Los Primeros Errores
Quitando Esos 2 .equ

.equ   USR         =UCSRA
.equ   E2END         =127

Ahora Compilando De Nuevo
Código: [Seleccionar]
C:\Documents and Settings\mjoy\mjoy.asm(1405): error: Operand(s) out of range in 'ldi r21,0x8005'

Assembly failed, 1 errors, 2 warnings
Me Marca Otro Error Mas (out of range in 'ldi r21,0x8005')
Y Tiene Su Explicacion
Si Te Fijas En .equ   CRC16poly      =0b1000000000000101   ;CRC16 polynomial
Te Das Cuenta Que Esta Compilado Sobre 16 Bits high byte Y low byte
Asi Que Para Corregir Este Error Le Añadimos >>8 Al low byte
Código: [Seleccionar]
Error ldi bitcount,CRC16poly ;to bitcount CRC polynomial - low byte
 
 Sin Error ldi bitcount,CRC16poly>>8 ;to bitcount CRC polynomial - low byte
Quedandose Asi :

ldi bitcount,CRC16poly>>8 ;to bitcount CRC polynomial - high byte
eor temp1,bitcount ;and make XOR from remains and CRC polynomial - high byte
ldi bitcount,CRC16poly>>8 ;to bitcount CRC polynomial - low byte
eor temp0,bitcount ;and make XOR of remainder and CRC polynomial - low byte

---------------------------------------------------------------
[.cseg] 0x000000 0x0009ba   2212    278   2490    8192  30.4%
[.dseg] 0x000060 0x000060      0      0      0    1024   0.0%
[.eseg] 0x000000 0x000000      0      0      0     512   0.0%

Assembly complete, 0 errors. 2 warnings
Ya Nos No Quedan Errores Solo 2 Avisos Diciendonos Que Ambos Registros =R28 Y R30 Estan Definidos En
El Archivo .DEF directive (.include "m8def.inc" )

.def   USBBufptrY      =R28      ;YL register - pointer to USB buffer input/output
.def   ROMBufptrZ      =R30      ;ZL register - pointer to buffer of ROM data


Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #11 en: 19 de Marzo de 2011, 11:50:32 »
Y Con El Atmega16 Tambien Me Daba Error De Compilacion

Assembly failed, 3 errors, 2 warnings

Todos Esos .equ Sobran
.equ   UCR         =UCSRB
.equ   UCR   = UCSRB   ; For compatibility
.equ   USR         =UCSRA
.equ   E2END   = 0x01ff
.equ   E2END         =127

El Mismo Error Que Hay Con El Atmega8
ldi   bitcount,CRC16poly>>8

Una Vez Corregidos

---------------------------------------------------------------
[.cseg] 0x000000 0x0009bc   2212    278   2490   16384  15.2%
[.dseg] 0x000060 0x000060      0      0      0    1024   0.0%
[.eseg] 0x000000 0x000000      0      0      0     512   0.0%
Assembly complete, 0 errors. 2 warnings

Desconectado BlueDemon

  • PIC10
  • *
  • Mensajes: 10
Re: Ayuda con proyecto Joystick USB (ATMEGA16)
« Respuesta #12 en: 19 de Marzo de 2011, 18:47:52 »
Hola de nuevo. Gracias a todos por responder.

Estoy ocupado haciendo otro proyecto, el cual me enorgullece decir que funciona a la perfección: Una controladora MIDI USB. Por lo tanto voy a pedir que se elimine este tema, lo volveré a abrir en cuanto termine este proyecto nuevo. En cuanto lo tenga terminado publico los detalles.

Saludos.
« Última modificación: 29 de Marzo de 2011, 01:21:10 por BlueDemon »