Autor Tema: UniJoystiCle + mouse/paddles  (Leído 20171 veces)

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:UniJoystiCle + mouse/paddles
« Respuesta #15 en: Enero 09, 2017, 09:16:07 »
No conseguí estabilidad alguna haciendo lo mismo que tú.
No tenia problemas a la hora de detectar la señal usando un pull-up que el propio commodore ponia a down en cada ciclo.

Al aplicar el tiempo de carga en la patilla, no sé por qué razón, el commodore seguía leyendo prácticamente todo o nada.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:UniJoystiCle + mouse/paddles
« Respuesta #16 en: Enero 09, 2017, 17:43:50 »
Al aplicar el tiempo de carga en la patilla, no sé por qué razón, el commodore seguía leyendo prácticamente todo o nada.

Es lo que me esta pasando ahora que estoy usando un 7404 en el medio... lo cual no tiene sentido... Ahora rediseñé un poco como debería conectarse el circuito, conectando las tierras de la c64 y del esp32 y ahora la interrupción se dispara siempre en "raising" y "falling" sin importar que le diga que solo lo haga en raising o falling o ambas... algo mal estoy haciendo, pero creo que debe haber algún temilla con el esp32.

quizas quemé el Sid... yo que se. tengo que seguir haciendo pruebas.

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:UniJoystiCle + mouse/paddles
« Respuesta #17 en: Enero 09, 2017, 18:32:35 »

quizas quemé el Sid... yo que se. tengo que seguir haciendo pruebas.

Si solo trabajas con 5V es imposible estropearlo a no ser que cortocircuites los 5V a masa directamente, pero freiras el 7805 u otra cosa , no el SID.


LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:UniJoystiCle + mouse/paddles
« Respuesta #18 en: Enero 09, 2017, 19:23:09 »
Yo a fines de los 80s me puse a experimentar con las entradas de potenciometro y seguramente excedi el voltaje permitido porque le mande audio (en esa epoca no tenia herramientas para medir la amplitud de una onda de audio), el tema es que un dia dejo de leer los potenciometros, y despues descubri que por el otro puerto si leia bien, asi que en todo caso ya sabes que lo primero que quemas son los 4066.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:UniJoystiCle + mouse/paddles
« Respuesta #19 en: Enero 09, 2017, 19:58:14 »
despues descubri que por el otro puerto si leia bien, asi que en todo caso ya sabes que lo primero que quemas son los 4066.

excelente dato. si, creo que lee de uno bien, y no del otro.  la prendo, lee del pot-x y no del pot-y... la vuelvo a prender y al reves.
asi que seguro quemé el 4066.  gracias! (aliviado que no quemé el sid!).




riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:UniJoystiCle + mouse/paddles
« Respuesta #20 en: Enero 13, 2017, 19:23:36 »
hice este pequeño circuito anoche y pude hacer que la interrupción de GPIO se genera en "falling"... seeee! (en este caso era "raising" ya que la señal esta invertida por el 7404).



pero luego lo modifiqué un poco para simplicarlo, no funcinó, y traté de armarlo otra vez y no me anduvo :(
bueno la cosa es que lo más probable es que al ESP32 le llegue la señal con ruido.

puede ser que sean los cables, el mismo osciloscopio que genere ruido, o alguna otra cosa.
voy a seguir con más pruebas la semana que viene.

@Maniako
que transistor estas usando vos? me gustaría probar con tu diseño para ver si me llega la señal un poco más limpia. gracias!

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:UniJoystiCle + mouse/paddles
« Respuesta #21 en: Enero 13, 2017, 19:29:41 »
.
@Maniako
que transistor estas usando vos? me gustaría probar con tu diseño para ver si me llega la señal un poco más limpia. gracias!

Un PNP .
Te lo pasó por watsapp.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:UniJoystiCle + mouse/paddles
« Respuesta #22 en: Enero 13, 2017, 20:42:55 »
He mirado el croquis.
¿Cuando inyectas los 5v en el puerto analógico X , desconectas la interrupción para ignorar mas llamadas mientras se ejecuta o el micro ignora más llamadas hasta que termina el bloque de código inyector de señal?.

No he usado mucho ese método y desconozco su funcionamiento.

También está el tema de si al cortar la señal de 5v, el micro hace un pulldown. Si lo hace, te descargará el condensador del c64 si no hay un diodo para evitarlo.
« última modificación: Enero 13, 2017, 20:48:44 por Maniako »
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:UniJoystiCle + mouse/paddles
« Respuesta #23 en: Enero 13, 2017, 23:48:19 »
creo que funciona más o menos así:

las GPIOs tiene soporte de interrupciones de hardware (interrupciones en el sentido de la c64... sucede algo en el hardware y te llaman a un callback).

las interrupciones que tiene la GPIO son 3:
  - subida (raising)... cuando la señal va de Vil a Vih (de 5v a 0v en un Arduino)
  - bajada (falling)... cuando la señal va de Vih a Vil (de 0v a 5v en un Arduino)
  - ó ambas

en verdad tienen cierto margen... creo que es algo así como que pasan del 80% de Vih  a 20% de Vih... no estoy seguro bien cuales son esos valores.

Entonces cuando te llaman a tu callback tenes que hacer lo que tengas que hacer lo más rápido posible.
El período es de ~500us, asi que tenes que hacer lo que tengas que hacer en menos de ~500us.

La idea es hacer algo así:

- escuchar en la interrupción de Falling
- Y en el callback de Falling hacer esto:
   - delay(~200us)... que es cuando la señal esta baja. cuando se acaba el delay, es cuando se empieza a cargar el condensador. este valor lo tenes que calcular vos con un osciloscopio para que sea exacto.
   - delay( variable )... Aca tenes que hacer un delay del valor que quieras que tenga el POT
   - levantar el GPIO (a 5v).
   - un delay de unos 20us
   - bajar el GPIO (a 0v).

este algoritmo me funcionó bien a mi, super estable... pero como solo me disparaba interrupciones de Raising, solo podia cambiar valores de 65 a 255 (el delay fijo del principio lo tuve que sacar, claro esta).

El algoritmo que usa Leif Bloomquist es el siguiente:

interrupt_callback:
   - bajar el GPIO (0v)
   - delay( ~200us)
   - delay( variable )
   - subir el GPIO (5v)

y conecta el POT-x a una linea con el Arduino con un pull-up.


riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:UniJoystiCle + mouse/paddles
« Respuesta #24 en: Enero 24, 2017, 03:04:44 »
usando el circuito que me pasó @Maniako logro que me llegue una señal limpia al ESP32 y así poder hacer lo que necesitaba (todavía falta mucho... pero es un gran progreso).
Gracias Maniako!

https://www.youtube.com/watch?v=_5h3ouflAc0


Que puedo hacer:

- escribo en el pot Y de manera estable
- pero solo entre 2 y 224...

tengo que ver como hacer para llegar a los demás valores.

No tuve problemas de red... pero supongo que tendré algunos problemillas en el futuro.

EDIT: En el video menciono a Canseco, pero es Maniako el que me dió el circuito.
« última modificación: Enero 24, 2017, 03:47:06 por riq »

danytoon

  • Visitante
Re:UniJoystiCle + mouse/paddles
« Respuesta #25 en: Enero 24, 2017, 05:36:58 »
Me siento mal viniendo aquí y no entendiendo nada de lo que decís, con la trabajera que se nota que os estáis dando...
« última modificación: Enero 24, 2017, 07:09:50 por Dany Quest »

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:UniJoystiCle + mouse/paddles
« Respuesta #26 en: Enero 24, 2017, 13:13:42 »
WOW!! Qué estabilidad!!!
Para leer 0 deberias poner una resistencia pulldown de 10k entre el pin analogico y masa . Puede que de más valor funcione igual, conecta un potenciómetro de100k+ la resistencia de10k en serie y ajustalo hasta conseguir el valor real que necesita.
Lo de que no llegue a 255 es extraño. Deberia ser cuestión de más tiempo de carga.

Tú puedes llamarme como quieras, me dá igual XD. Con el trabajo que os pegáis algunos foreros , os habeis ganado ese derecho.

Seguiré intentandolo sobre PWM.
« última modificación: Enero 24, 2017, 13:26:33 por Maniako »
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:UniJoystiCle + mouse/paddles
« Respuesta #27 en: Enero 24, 2017, 13:14:20 »
Me siento mal viniendo aquí y no entendiendo nada de lo que decís, con la trabajera que se nota que os estáis dando...

Así me siento yo en el hilo del wassap XDXDXD
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:UniJoystiCle + mouse/paddles
« Respuesta #28 en: Enero 24, 2017, 15:56:58 »
Me siento mal viniendo aquí y no entendiendo nada de lo que decís

es como todo, una vez que uno lo entiende se da cuenta que no era dificil o complejo.

WOW!! Qué estabilidad!!!
Para leer 0 deberias poner una resistencia pulldown de 10k entre el pin analogico y masa . Puede que de más valor funcione igual, conecta un potenciómetro de100k+ la resistencia de10k en serie y ajustalo hasta conseguir el valor real que necesita.
Lo de que no llegue a 255 es extraño. Deberia ser cuestión de más tiempo de carga.

Le hice unas pequeñas modificaciones al circuito que me pasaste... no creo que cambie nada pero te cuento lo que hice por si acaso. Reemplacé:

- la resistencia de 16k por una de 15k
- la de 2k la reemplacé por otra de 2.2k

Los cambié porque no tenía esos valores.


Luego pruebo con su sugerencias y te cuento. Gracias (y perdón por la confusión de nombres).

Esto es lo que hice:



riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:UniJoystiCle + mouse/paddles
« Respuesta #29 en: Enero 25, 2017, 08:27:36 »
Don @Maniako ,

¿se te ocurre algún circuito similar al que me diste, pero sin que se altere el voltaje/corriente del Pot x?

Me refiero a que si bien el circuito que me diste funciona muy bien, lo que me sucede es que me esta modificando el voltaje/corriente del Pot X. Si bien estoy usando el Pot X para leer, lo necesito para escribir también.

Asi como esta el circuito, el Pot X tiene un valor de 0 (o 1 o 2) no importa lo que haga ya que lo carga muy rápido por la cantidad de voltaje/corriente que hay.

No se si poniendo alguna resistencia más, o algún diodo entre el Pot x y la base el transistor o alguna otra cosa para impedir que se altere.

gracias!