*** Nueva placa dual para C64, sintetizador de voz + wifi ***Como solo tengo un conector para el puerto del usuario y dos sintetizadores de voz para probar, hace tiempo hice una placa modular para poder intercambiar los sintetizadores de voz que usan PICs distintos, dejando los componentes comunes en una placa y modulos con los componentes especificos de cada sintetizador. Cuando quise conectar el modulo wifi ESP-8266, me encontre con el mismo problema, por lo que opte por hacer la placa compatible con el "bus HD1" para conectar el modulo wifi como si fuera un sintetizador de voz, usando solo los contactos que necesitaba. Como el primer sintetizador que hice con este formato fue el HD1, el conector quedo definido con los pines de ese sintetizador, y el modulo con el HR4 se adapta a ese orden, lo mismo que el modulo wifi, por eso lo de "bus HD1", ya que el conector no es mas que los contactos directos del sintetizador HD1.
Ya que ultimamente estuve dedicandome mas al tema wifi que al sintetizador de voz, se me ocurrio analizar si podian conectarse los dos, para no tener que andar cambiando de modulo, y parece ser que es posible. Hace unos dias tengo el plano hecho de como conectar todo, pero recien entre ayer y hoy pude ponerme a terminarlo, hay cosas que funcionan y otras que requieren revision, pero seguramente sale andando.
Aca hay una foto de cuando lo empece a armar, viendo donde ubicar los componentes:
Probando como quedaria con los dos modulos conectados:
Asi quedo ya funcional:
Con los modulos conectados:
La idea basica es utilizar DTR para seleccionar un modulo o el otro, activando DTR (que viene activado por defecto y es lo normal en comunicaciones por modem) se habilita el modulo wifi, y desactivando DTR se podria hablar con el sintetizador de voz. Esto es algo que funciona bien, cuando DTR esta activado se envia una señal a una nueva entrada _CS que tengo que agregar a los sintetizadores, si esta linea esta en 0 el sintetizador deberia ignorar cualquier cosa que reciba, y no enviar cualquier cosa que este transmitiendo, ya que las lineas TX y RX estan casi en paralelo, porque llegan a ambos modulos desde la C64. Con las lineas RTS y CTS no hay problema porque el sintetizador solo utiliza CTS para avisarle a la C64 que no puede recibir datos (porque el sintetizador tiene un buffer limitado), esta linea el modulo wifi no la necesita porque siempre tiene capacidad para recibir lo que envie la C64, por lo cual al activar el modulo wifi (activando DTR) la linea CTS que va a la C64 se pone en 1 siempre mientras DTR este activada, de esta manera se le indica a la C64 que puede enviar datos al modulo wifi en cualquier momento. La linea RTS en cambio sirve para que la C64 le indique a los modulos que no esta lista para recibir datos, esto no se usa en el sintetizador porque nunca envia datos que la C64 no pide, en otras palabras la C64 siempre sabe cuando el sintetizador va a enviar datos, asi que no necesita indicarle al sintetizador que no esta lista para recibir. Sin embargo, si es necesario indicarle al modulo wifi que la C64 no puede recibir datos, por lo cual RTS desde la C64 solo se conecta a ese modulo.
Habia diseñado el circuito para que las lineas TX de los dos modulos se conectaran en paralelo pero sin hacer cortos, esto requeria que la linea TX que sale del sintetizador pasara por una resistencia de 4K7, pero parece ser que es muy alta y la C64 no llega a ver los datos, por lo que tuve que puentearla para que funcionara, voy a tener que probar de otra manera, ya que estando asi no pueden conectarse los dos modulos a la vez.
La linea RX de los dos modulos esta en paralelo, aca no hay problemas de cortos, y esto funciona bien, pero probando me di cuenta de que al seleccionar el sintetizador, igual le estoy enviando todo eso al modulo wifi, lo que ocurre es que originalmente con la linea DTR tambien activaba la linea EN (enable) del modulo wifi, pero no tengo suficiente informacion sobre lo que hace asi que no la conecte. No se si apagando EN deja de recibir y enviar, o si apaga el modulo, si lo apaga no me sirve, asi que voy a tener que ir probando.
Resumiendo, tengo una nueva placa donde puedo probar el modulo del sintetizador de voz, o el modulo wifi, tal como lo hacia antes, solo que ahora tengo que activar la linea DTR del RS232 para hablar con el modulo wifi, y desactivar DTR para hablar con el sintetizador de voz. Si se conecta solo un modulo funciona todo como antes salvo ese detalle de DTR que afecta solo al sintetizador, ya que la C64 la activa por defecto.
La idea es poder conectar tanto el sintetizador de voz (cualquiera de los dos actuales) como el modulo wifi, y poder hablar por turno con los dos activando/desactivando DTR. Para lograr esto todavia hay que hacer unos ajustes de componentes y algunas pruebas, pero supongo que no pasara mucho tiempo hasta que funcione, por lo menos la parte de hard.
Una vez que el circuito funcione al 100%, queda hacer una prueba, y esto va a requerir experimentar con la sincronizacion por soft de la comunicacion con ambos modulos, el objetivo de esto es poder comunicarse con los dos modulos (sintetizador y wifi) a 57600 bps durante la interrupcion de video, tal como hice las ultimas pruebas.
Para finalizar, unas fotos de la placa conectada a la C64:
Con solo el modulo wifi conectado: