TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: jorgenuviola en 13 de Julio de 2014, 22:17:53
-
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.
-
Creo recordar que solo está en lenguaje máquina, pero en Basic o cualquier otro lenguaje también se puede hacer, es cuestión de aumentar la velocidad del microcontrolador.
-
Creo recordar que solo está en lenguaje máquina, pero en Basic o cualquier otro lenguaje también se puede hacer, es cuestión de aumentar la velocidad del microcontrolador.
es decir que con 20 mhz no alcanzaria?
-
No sabria decirte, mis conocimientos de señal de TV son generales. Si no recuerdo mal la revista mcontrol tenia un proyecto terminado, es cuestión de localizar el número y leer los detalles técnicos.
-
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.
Hola Jorge.
Si ya sabes como es la logica, como es la señal de video y como funciona el monitor vga ya tenes todo como para programar. ¿Cual es el inconveniente?.
Ya habras calculado los tiempos de acuerdo a la resolucion de la señal. Solo tenes que mantener las tensiones que correspondan en los pines que utilices el tiempo calculado.
Pensa un poquito y luego me contas.
Saludos.
-
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.
Hola Jorge.
Si ya sabes como es la logica, como es la señal de video y como funciona el monitor vga ya tenes todo como para programar. ¿Cual es el inconveniente?.
Ya habras calculado los tiempos de acuerdo a la resolucion de la señal. Solo tenes que mantener las tensiones que correspondan en los pines que utilices el tiempo calculado.
Pensa un poquito y luego me contas.
Saludos.
claro, lo que no me doy una idea es como hacerlo en programacion, vengo pensando hace semanas como hacerlo en basic y por eso tire la pregunta, por ahi alguien se habia tirado a hacerlo y me podia orientar en la programacion.
si comprendo como funciona, la señal horizontal para controlar el barrido y los tres colores. Queria llevarlo a la programcion.
-
hola comunidad, ¿alguien ha logrado generar video programando en basic? porque aun no me doy una buena idea de como hacerlo, entiendo la logica de como funciona la señal de video y como funciona el monitor vga. Pero no encuentro algun ejemplo en basic que me impulse.
Hola Jorge.
Si ya sabes como es la logica, como es la señal de video y como funciona el monitor vga ya tenes todo como para programar. ¿Cual es el inconveniente?.
Ya habras calculado los tiempos de acuerdo a la resolucion de la señal. Solo tenes que mantener las tensiones que correspondan en los pines que utilices el tiempo calculado.
Pensa un poquito y luego me contas.
Saludos.
claro, lo que no me doy una idea es como hacerlo en programacion, vengo pensando hace semanas como hacerlo en basic y por eso tire la pregunta, por ahi alguien se habia tirado a hacerlo y me podia orientar en la programacion.
si comprendo como funciona, la señal horizontal para controlar el barrido y los tres colores. Queria llevarlo a la programcion.
Aja !!... ¿y?....¿que es lo que pensaste?.... no nos contas nada al respecto. ¿Que resolucion queres usar?. ¿Que tiempos has calculado?. ¿En que orden estan? ...¿segundos, milisegundo, microsegundos?. ¿Podes manejar esos tiempos desde Basic?.
Saludos
-
Aja !!... ¿y?....¿que es lo que pensaste?.... no nos contas nada al respecto. ¿Que resolucion queres usar?. ¿Que tiempos has calculado?. ¿En que orden estan? ...¿segundos, milisegundo, microsegundos?. ¿Podes manejar esos tiempos desde Basic?.
Saludos
bueno el tema era ver como hacerlo, me lei todo el post de como hicieron el video compuesto en blanco y negro usando un pic para la señal de sincro, mi meta es manejar un monitor.
Todavia estoy en la etapa de las señales de horizontal y vertical, no llegue a la resolucion aun, si interprete que puedo hacer 525 lineas.
Esto es lo que hasta ahora fui haciendo. Tengo varios micros 16f84a 16f628 16f877 16f876 16f886 y yb 18f (pero ya tiene uso en otra cosa)
Por ahora es todo experimento con un 16f84, supongamos que lo haga con un 628 definitivamente para hacerlo trabajar en 20mhz
Para lograr los 31,75 microsengundos uso una interrupción
Timer = 4/fos(velocidad del cristal) * (256 – valor timer) * prescaler
Prescaler 64 TMRO 125 crystal 10 mhz = 31,74
Con esto logro el pulso horizontal.
para el vertical uso una simple suma de ciclos, contando 530 siglos de trabajo emitiendo el pulso y volviendo a cero.
a ver que piensan de mi idea.
define osc 10
I var byte
on interrupt goto retardo
A var word
symbol TOIF = intcon.2
symbol GIE = intcon.7
symbol VSYNC = porta.0
symbol HSYNC = porta.2
option_reg = %0000101
intcon = %10100000
disable
low vsync
inicio:
high vsync
call retardo
low vsync
goto inicio
retardo:
a = a+1
if a = 530 then goto horizontal
low hsync (por ahora no esta determinado el back porch en ms y es algo que debere pensar bien para no detener todo el programa, por ahi en un pic mas grande puedo usar el segundo timer en lugar de contar y calculando los ciclos de trabajo del pic puedo establecer la demora necesaria para el tiempo correcto)
pauseus 4 (esto es bruto, se que debe ser 3.77 supongo que debere hacer una segunda interrupcion, se que es dificil manejarlas en basic y muy facil en asm pero me propongo logralo)
call retardo1
return
horizontal:
high hsync
a = 0
goto retardo
retardo1:
tmr0 = 125
espera:
if toif = 1 then reseteo
reseteo:
toif = 0
return
resume
end
el resultado que logre (no se porque no puedo ver el proteus el osciloscopio digital completo y veo uno mas simple)
horizontal
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/vertical.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/vertical.jpg.html)
vertical
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/logrado.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/logrado.jpg.html)
ahora que termine con los finales de este cuatri en la facu pensaba en ponerme a hacer la plaquita con el pic y las resistencias y probarlo a ver si funciona en un monitor, al menos si genera bien la sincronizacion y medirlo con el ocsiloscopio afuera.
-
bueno, otro avance. Me tire a hacer primero el experimiento con una television PAL, hacer el sincro para TV, esta es muy vieja por lo tanto hasta que me di cuenta que la señal de sincro en 0V debia ser mas de 4 us tarde un rato. Estas teles suelen usar hasta 12 us de señal para sincronizar. En ningun post ni en ninguna pagina de TV esta claro como es el sincro de vertical, todas lo tiran asi como que son una manojo de pulsos o que tienen una duracion total de 400 o 500 us y listo. Me lei todo lo que se me cruzo, pero todo!!! y encima habia notas que diferian unas de otras con los dados.
en pocas palabras lo que logre fue lo siguiente. 12US de 0V y 52 us de señal para el video en horizontal.
Ahora en vertical la cosa es distinta, la señal es asi. son 6 pulsos en logico 1 de 30 us serparados por 2us en 0V o logico 0, 5 pulsos en 0V de 30 us separados por pulsos logico 1 de 2 us y finalmente y aca es donde hace la diferencia. 5 pulos de 30 us en logico 1 separados por 2 us en logico 0 para la linea impar y en la par cambia solo el ultimo pulso que es de 60 us de logico 1. solo eso cambia.
En la explicación de como funciona una tele y su entrelazado me rompi la cabeza tratando de entender como hacia para que la tele entendiera el desplazamiento de un pulso, después de leer absolutamente de todo en múltiples sitios encontré un gráfico muy claro en donde mostraba los pulsos verticales y ahí saque la cuenta.
en una de las tantas notas que encontré aclaraba que la señal de vertical se debe superponer a la de horizontal, que ambas deben funcionar en conjunto y no una después de la otra, por eso mis primeros intentos fueron fallidos.
El primer codigo lo hice todo de corrido sin interrupciones, ya que tengo la idea de usar un pic para el sincro y otro para el video. Me puse a hacerlo y no funciono, ahora les pongo las fotos de los intentos fallidos.
Finalmente lo hice con una interrupción, gracias al programita que me baje el otro dia para calcular tmr0 de una forma facil encontre que con un cristal de 4mhz un prescaler de 2 y un valor de tmr0 de 230 obtengo una interrupcion cada 52us, lo cual me facilito el trabajo
asi deberia funcionar y pueden ver como son los pulsos de sincronismo y mas abajo como operan para hacer el entrelazado
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/vinfo_vsync_big.png) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/vinfo_vsync_big.png.html)
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/sincrovertical.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/sincrovertical.jpg.html)
aca el codigo que me funciono finalmente.
define osc 4
I var byte
on interrupt goto retardo
A var word
B var word
symbol TOIF = intcon.2
symbol GIE = intcon.7
symbol HSYNC = porta.0
symbol VSYNC = porta.2
option_reg = %0000000
intcon = %10100000
disable
low hsync
low vsync
inicio:
goto inicio
retardo:
a = a+1 "contador"
if a = 304 then goto vertical
if a = 608 then goto vertical2
low vsync
low hsync
pauseus 12 "front porch de 12 us"
call retardo1
return
retardo1:
tmr0 = 230
espera:
if toif = 1 then reseteo
reseteo:
toif = 0
return
resume
vertical: "inicio de sincro vertical IMPAR, 6 pulsos logico 1 de 30 us"
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
goto sincro2
sincro2: "inicio de 5 pulsos de 30 us en logico 0"
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
goto sincro3
sincro3: "inicio de 5 pulsos de 30 us en logico 1"
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
goto inicio
vertical2: "inicio de sincro vertical PAR, 6 pulsos logico 1 de 30 us"
a = 0 "pone el contador en cero para volver a iniciar"
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
goto sincro4
sincro4: "inicio de 5 pulsos de 30 us en logico 0"
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
pauseus 2
low hsync
pauseus 30
high hsync
goto sincro5
sincro5: "inicio de 4 pulsos de 30 us y un pulso de 60 us en logico 1"
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 30
low hsync
pauseus 2
high hsync
pauseus 60
low hsync
goto inicio
goto inicio
end
Con este codigo el funcionamiento horizontal no se detiene nunca y a medida que se va cumpliendo se va interrumpiendo, asi que le da lugar para que el vertical opere. No entiendo nada de asm pero vi en varios lugares yanquis que agregaban contadores para armar el tren de pulsos yo lo hice con una variable.
primeras pruebas, con el codigo sin interrupcion y con un front proch de 4 us un desastre total.
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/Foto0143.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/Foto0143.jpg.html)
al mismo codigo le aumento el pulso de sincro, porque en algun lado habia leido que las tv muy viejas requerian mas tiempo y logre esto y ahi me di cuenta.
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/IMG-20140906-WA0002.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/IMG-20140906-WA0002.jpg.html)
ahi me sente a reever todo y e hice el codigo que esta posteado y el resultado fue muy estable.
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/Foto0142.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/Foto0142.jpg.html)
en el oscilocopio el tren de pulsos
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/Foto0146.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/Foto0146.jpg.html)
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/Foto0145.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/Foto0145.jpg.html)
El problema ahora es que no tengo la mas minima idea como hacer video, es decir primer punto de mi duda:
¿¿¿¿¿¿ que comando uso en basic para sacar la informacion por un port??? No tengo idea que usar o como hacerlo
lo que hice fue agregarle un pequeño pulso en bajada cada tanto y logre hacer rayas.
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/Foto0144.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/Foto0144.jpg.html)
hasta aca llegue solito, ahora necesito una mano para seguir. ¿me pueden ayudar?
-
No se si llegué tarde a tratar de ayudarte, te voy a mencionar algo sobre las señales de sincronismo (se algo de repartacion de TV), dependiendo la norma a la que quieras trabajar (dependiendo del pais), tambien el Televisor tendra su norma de trabajo (regularmente la misma del pais, aunque hay algunos que detectan eso y cambian segun el caso). Te hablare de la norma NTSC que es la que usamos en Guatemala por el momento:
tiene 525 lineas horizontales por cada imagen de video
usa un refresco de 60 imagenes por segundo.
Como las imagenes de television en pantallas de rayos catodicos se hacen con un haz de electrones que se mueve sobre la pantalla modificando su intensidad y por lo tanto el brillo(en el caso del blanco y negro porque a color son tres haces), por lo tanto para calcular la frecuencia horizontal sabemos que el haz se mueve en forma horizontal 525 veces para cada imagen y como son 60 imagenes por segundo, pero aqui viene algo de la teoria de television, 60 imagenes son necesarias para dar la sensacion de movimiento al ojo, pero mandar las 60 imagenes representaba un problema porque el ancho de banda de trasmicion se volveria muy amplio, entonces decidieron usar solo 30 imagenes por segundo pero las muestran partidas en segmentos, cada imagen se presentan dos veces, primero una parte y luego la otra y ahi nace el entrelazado de imagenes, entonces la frecuencia horizontal debe ser
525*30=15,750 Hz o lo mismo que 15.75 Hz a nivel de la television en realidad es un numero cercano a ese (generalmente 15,734) por lo tanto cada pulso duraria:
1Seg/15,734Hz=0.000063 ó 6.3uS
En el caso de la señal de sincronismo vertical son 1/60=0.1666... ó 16.66 mS
Todo esto es para mover el Haz sobre la pantalla, ahora viene el control de la intensidad, tendrias que dividir tu pantalla segun la resolucion que quieras, que seria n*y pixeles
y de acuerdo a esto deberias ir calculando y saber en que tiempo exacto aumentar el brillo o disminuirlo. Mi ultimo dato es que cuando el haz llega a la esquina inferior derecha, el haz debe pasar a ser inexistente o lo que en TV se conoce como "negro mas negro que el negro" para que el retorno del haz a la esquina superior izquierda quede "borrado de la pantalla y no afecte la imagen"
-
No se si llegué tarde a tratar de ayudarte, te voy a mencionar algo sobre las señales de sincronismo (se algo de repartacion de TV), dependiendo la norma a la que quieras trabajar (dependiendo del pais), tambien el Televisor tendra su norma de trabajo (regularmente la misma del pais, aunque hay algunos que detectan eso y cambian segun el caso). Te hablare de la norma NTSC que es la que usamos en Guatemala por el momento:
tiene 525 lineas horizontales por cada imagen de video
usa un refresco de 60 imagenes por segundo.
Como las imagenes de television en pantallas de rayos catodicos se hacen con un haz de electrones que se mueve sobre la pantalla modificando su intensidad y por lo tanto el brillo(en el caso del blanco y negro porque a color son tres haces), por lo tanto para calcular la frecuencia horizontal sabemos que el haz se mueve en forma horizontal 525 veces para cada imagen y como son 60 imagenes por segundo, pero aqui viene algo de la teoria de television, 60 imagenes son necesarias para dar la sensacion de movimiento al ojo, pero mandar las 60 imagenes representaba un problema porque el ancho de banda de trasmicion se volveria muy amplio, entonces decidieron usar solo 30 imagenes por segundo pero las muestran partidas en segmentos, cada imagen se presentan dos veces, primero una parte y luego la otra y ahi nace el entrelazado de imagenes, entonces la frecuencia horizontal debe ser
525*30=15,750 Hz o lo mismo que 15.75 Hz a nivel de la television en realidad es un numero cercano a ese (generalmente 15,734) por lo tanto cada pulso duraria:
1Seg/15,734Hz=0.000063 ó 6.3uS
En el caso de la señal de sincronismo vertical son 1/60=0.1666... ó 16.66 mS
Todo esto es para mover el Haz sobre la pantalla, ahora viene el control de la intensidad, tendrias que dividir tu pantalla segun la resolucion que quieras, que seria n*y pixeles
y de acuerdo a esto deberias ir calculando y saber en que tiempo exacto aumentar el brillo o disminuirlo. Mi ultimo dato es que cuando el haz llega a la esquina inferior derecha, el haz debe pasar a ser inexistente o lo que en TV se conoce como "negro mas negro que el negro" para que el retorno del haz a la esquina superior izquierda quede "borrado de la pantalla y no afecte la imagen"
gracias siniestro fue muy util tu aporte, anoche me quede pensando si por ejemplo me hago en una hoja cuadriculada todos los lapsos de 52us y aprovechando el contador que tiene el programa que hice aprovecharlo para encender el puerto de video en el numero de pixel que yo quiera. Tu informacion me confirma que estoy cerca de lo pretendido, ahora viene el otro tema ¿lo que encenderia seria un pixel no? entonces ¿debo ingeniar algo para fabricar una imagen no?
-
Jorge, como te explique por MP, lo que estas haciendo es generar una imagen de video compuesto, que dista mucho de ser una señal VGA de un monitor.
En cuanto a mostrar una imagen en el TV con video compuesto, lo que yo hice en el OSD es usar el módulo SPI para sacar datos del micro y "superponerla" a la señal de video. Como el barrido horizontal ronda los 64us (no recuerdo bien el numero exacto) si queres, por ejemplo 256 pixeles horizontales, el tiempo de cada pixel sería 0.25useg. O sea, configuras el SPI para saque datos datos a 4MHz. El SPI sacará 525 datos al barrer la pantalla completa y cada dato estará compuesto por 256 bits (por ejemplo) o sea 32 datos de 8bits.
Una forma de sacar imagenes es crear un buffer en memoria de 256x512 bits = 128Kbyte (es mucho no?) y el SPI se encargará de sacar los datos comenzando cuando estes en el pulso de sincro horizontal (unos useg despues de ese pulso).
Tene en cuenta los niveles de tension que maneja la señal de video compuesto que si mal no recuerdo es de 1Vpp, por lo que el micro debe meter la info por medio de un divisor resistivo...
Estas muy cerca de mostrar una imagen en un TV, si queres, mostranos el circuito que estas armando y seguimos viendo como podes hacer para terminar.
Te comento que de BASIC no sé nada, por lo que no puedo ayudarte con el código específico, si con la metodología para mostrar la imagen.
Tu objetivo final es hacer un proyecto de video VGA? porque ojo que son 2 cosas totalmente distintas...
Saludos!
EDITO, veo el cambio de título! ahora sí. En video compuesto vas re bien. En video VGA creo que es muy pero muy dificil con un 16f84.
-
mil gracias por responderme!!! inicialmente iba a un proyecto vga, luego pase a lo mas basico para poder obtener algun resultado y me cope con el video compuesto. El 16f877 tiene SPI voy a leer la hoja de datos del micro a ver como lo puedo manejar.
Se me ocurria usar una eeprom externa para guardar toda la parte grafica, pero todavia estoy leyendo de como generar un hex o un bin para la memoria, programador eeprom tengo un g540 usb. tengo borrador UV tambien. Tambien encontre aca en el foro un programa muy copado que se llama letras para generar bit a bit un grafico y pasarlo a ascII.
hoy a la noche pruebo hacer video y les prometo las fotos de lo que haga sea un desastre o funcione.
la idea es con el pic emular un 1889 o un ad725. Compre un par de AD725 cuando aun se podia por ebay. Pero no es mi idea en este momento, es mas un reto personal lograr hacer funcionar esto como proyecto porque abre puertas a futuros proyectos mucho mas complejos.
-
mil gracias por responderme!!! inicialmente iba a un proyecto vga, luego pase a lo mas basico para poder obtener algun resultado y me cope con el video compuesto. El 16f877 tiene SPI voy a leer la hoja de datos del micro a ver como lo puedo manejar.
Se me ocurria usar una eeprom externa para guardar toda la parte grafica, pero todavia estoy leyendo de como generar un hex o un bin para la memoria, programador eeprom tengo un g540 usb. tengo borrador UV tambien. Tambien encontre aca en el foro un programa muy copado que se llama letras para generar bit a bit un grafico y pasarlo a ascII.
hoy a la noche pruebo hacer video y les prometo las fotos de lo que haga sea un desastre o funcione.
la idea es con el pic emular un 1889 o un ad725. Compre un par de AD725 cuando aun se podia por ebay. Pero no es mi idea en este momento, es mas un reto personal lograr hacer funcionar esto como proyecto porque abre puertas a futuros proyectos mucho mas complejos.
Si no me equivoco el 16F877 ha sido reemplazado por el 887, si ya tenes un 877 dale para adelante, sino, te recomiendo el 887.
Lo de la eeprom externa tenes que revisar las velocidades. Yo en el OSD para tener buena resolucion gráfica usaba el SPI para sacar datos a 6MHz mas o menos y para que el micro pueda hacer otras cosas use el DMA (el micro que uso para el OSD es un ARM M3 a 120MHz). La linea 16F no creo que tenga DMA entonces tenes que ver bien los tiempos. Si sacas datos a 6MHz vas a tener que tener una memoria que pueda ser leida bastante más rapido que esa velocidad.
No he visto mucho tu programa, pero la idea sería que arranque dibujando una línea vertical. Para eso cuando llega el pulso de sincronismo horizontal, esperás 15useg (por ejemplo) y pones un 0 como dato en el puerto y enseguida lo pones en 1 otra vez (el 0 es blanco si mal no recuerdo), eso lo repetis en cada barrido horizontal.
El paso siguiente creo que sería pasar al SPI, en ese caso lo que podrías hacer es configurar el SPI a 4 o 5MHz, te creas un array de 32 bytes y a cada bit de cada byte le asignas un 0 si queres encender el punto o un 1 si queres que no muestre nada. Luego cuando llega el pulso de sincro horizontal, esperas (creo que 10useg) hasta que el haz esté en el comienzo de la pantalla y conun lazo for vas sacando byte a byte por el SPI. Para ello, pones el dato en el registro de salida del SPI y luego te quedas en un bucle esperando la bandera de buffer vacío. De ese modo, el lazo for se encargará de sacarte por el SPI (pin MOSI) una línea completa. Cuando termina la línea, tenés un par de uSeg para actualizar tus 32 bytes con los pixeles a mostrar en la siguiente línea...
Esa es un poco la idea, esta un poco desordenada, pero seguro que la entenderás, sino, pregunta!
Es un tema muy interesante, yo hasta noviembre no voy a poder tocar nada de ese proyecto que aun esta a terminar. La idea era poder implementar colores... ya veremos!
saludos
-
¿lo que encenderia seria un pixel no? entonces ¿debo ingeniar algo para fabricar una imagen no?
Exacto, seria un pixel, en el caso de imagenes en Blanco y negro existe un umbral para el maximo negro y el blanco mas puro,
esto lo extraje de Wikipedia:
La codificación de la imagen se realiza entre 0 V para el negro y 0,7 V para el blanco. Para los sincronismos se incorporan pulsos de -0,3 V, lo que da una amplitud total de la forma de onda de vídeo de 1 V. Los sincronismos verticales están constituidos por una serie de pulsos de -0,3 V que proporcionan información sobre el tipo de campo e igualan los tiempos de cada uno de ellos.
Todo valor entre 0 y 0.7 Voltios serian las escalas de grises desde el blanco hata el negro. Dibujar en pantalla, no se que tan potente sea el PBP, recuerdo haber dibujado en pantalla y hecho mis "librerias graficas" pero en programacion pero en mi computadora, en C++, recien me inicio en el mundo de los PIC y no tengo mucho de programarlos, pero inicie con PBP. Una idea que se me ocurre es crear una matriz de ancho y alto de las dimesiones del numero de tus "pixeles" y llenarla por ejemplo con ceros y unos, y leer la matriz y segun la posicion poner un factor de multiplicacion de microsecundos asi podrias crear imagenes matriciales, incluslo dibujar textos en la matriz, pero esto seria para imagenes en blanco y negro, en escala de grises en lugar de guardar un bit, seria un byte y podria ser un valor digital y convertirlo a su salida al analogo correspondiente, son ideas locas mias no se si todo esto sea posible..
-
el garbe: si esta clara tu explicacion, tengo que pensarla.
siniestro: ante todo gracias por responder y sumarte al post! bueno intente lo que habia dicho antes y no funciono. Mi primer intento fue fallido.
primer prueba FALLIDA.
La idea que tuve fue aprovechar el contador de vertical y prender un punto, seria el 150 de todas las lineas, asi que hice un comando facil con un IF para que cuando llegue a 150 la encienda y luego la apague. NO funciono, primero lo habia hubicado mal en el programa (despues de los if que llevan a los dos sincros par e impar vertical) asi que veia pasar todo para arriba y segundo que no me hace un punto sino una raya..........ahora el problema es que no la hace en el mismo lugar sino dispersa por todos lados, entonces pienso si deberia reducir la cantidad de horizontal, ahora esta en 312 antes estaba en 304 ¿uso 512? porque evidentemente algo no opera correctamente.
les cuelgo el video en HP para que me ayuden a analizar que esta mal (mas alla que creo que todo jajajajjajaajaa)
feature=youtu.be
en mi logica si el sincro estaba bien deberia haber generado un punto blanco en el casillero 150 del horizonal en todas las lineas a lo largo de la pantalla.
Pueden pasar dos cosas al mismo tiempo es demasiado el tiempo que se esta tomando el pic para prender y apagar el port y ademas el sincronismo esta mal hecho. A pesar que lo veo re estable. me he acercado a la tele con la lupa para ver como se mueven los pixel cuando prendo y apago el pic, me parecia que operaba hermoso, pero al ver que la raya no se hace en el mismo lugar sino que es aleatorio creo que todo esta mal.
-
Mmmm hay que considerar mucho que ya estamos hablando del manejo de los tiempos a nivel de microsegundos, estoy pensando que en alguna parte del codigo los tiempos se estan "corriendo" causando un desfase en la sincronia, toma en cuenta cuantos cicloz de reloj consume cada instrucción de PicBasic, me paso algo usando un sensor DHT11 para temperatura y humedad, dependia de recibir 40 Bits por un puerto y debia almacenar el ancho exacto de cada pulso, usando un ciclo for no logre que fucionara, supuse que cada iteracion consumia preciado tiempo de reloj que hacia que cada vez que llegava la instruccion PUSIN a la espera de los pulsos, esta ya habia iniciado haciendo que perdiera parte de la captura, al final no me quedo mas que usar 40 instrucciones PULSIN en secuencia y sin FOR y ah funcionó de maravilla el codigo. Aunque yo trabajo con cristal de 4Mhz.
Hasta el momento estamos tratando de emular las señales completas de television, pero creo que deben bajarse los tiempos, por ejemplo, bajando el numero de lineas por imagen pero manteniendo la frecuencia de imagenes por segundo, si bajas los cuadros por segundo habra un punto en que notaras parpadeo en la pantalla, si usaras por ejemplo 250 lineas por imagen y un refresco de 40 imagenes por segundo tu frecuencia horizontal seria de
250*40=10,000 entonces 1/10,000=0.0001 ó 100uS para la frecuencia horizontal y la vertical seria de
1/40=0.025 ó 2.5mS
un punto en el centro de la pantalla deberia estar en 50uS de la frecuencia horizontal y 1.25 de la frecuencia vertical, deberias mandar el por ejemplo un pulso de 0.7 Volts cada vez que ambos contadores pasan por ese numero exactamente, una barra solo exigiria encender dicho pulso al llegar la frecuncia horizontal a 1.5 y la serie de puntos dibujados en cada linea horizontal deberia dibujar una barra vertical.
es cuelgo el video en HP para que me ayuden a analizar que esta mal (mas alla que creo que todo jajajajjajaajaa)
El video aparece como privado y no lo pude ver mi amigo. .
-
El video figura como privado y no podemos verlo.
A mi en principio me gustaría ver el esquemático que estas usando para generar las señales y como obtienes los -0.3V y luego los 0V y 0.7V para el Blanco y negro.
Luego podrías colgar el programa final que estas usando para estudiarlo bien. En estos temas donde los tiempos son críticos hay que trabajr lo más ordenado posible y para ayudarte tendríamos que tener toda la informacion sino, estaremos adivinando cosas que pueden ser.
Saludos!
-
gracias siniestro, voy a reducir el numero de lineas para probar lo que me explicas, es real que la instruccion FOR te consume mucha velocidad, lo pude ver en proteus haciendo una señal
-
me habia faltado publicarlo, prueben ahora a ver si lo pueden ver.
-
El video figura como privado y no podemos verlo.
A mi en principio me gustaría ver el esquemático que estas usando para generar las señales y como obtienes los -0.3V y luego los 0V y 0.7V para el Blanco y negro.
Luego podrías colgar el programa final que estas usando para estudiarlo bien. En estos temas donde los tiempos son críticos hay que trabajr lo más ordenado posible y para ayudarte tendríamos que tener toda la informacion sino, estaremos adivinando cosas que pueden ser.
Saludos!
el esqueatico es simil al de pablin, Un resistencia de 470 ohms para el puerto de video y una de 1k para el puerto de señales.
El programa es el que esta arriba, lo unico que le agregue fue en la etiqueta inicio que estaba vacia porque basicamente la idea era solo usar la interrupcion y no hay rutina principal, agregue dos lineas, la linea consiste en tomar los datos de la varialble A que uso para diferenciar los sincronismos verticales.
If a = 150 then VSYNC = 1 (VSYNC es la variable que deje para el puerto A 2 donde sale el video)
VSYNC = 0 (la bajo inmediatamente para no dejar el puerto en logico 1)
eso es todo lo que le agregue al programa, segun mi logica en todas las lineas al llegar al 150 debia generar un pixel, entonces deberia tener una especie de columna en vivorita a lo largo de la pantalla.
No funciono.
-
Vi el video, basandome en mis conocimientos de la formacion de imagen en Televisiones de Tubo de rayos catodicos puedo decirte que:
Se forma una raya en lugar de un punto por que el tiempo que mantienes en alto el pin de video es mucho mayor del que deberia ser, colocas el punto pero la sincronia horizontal lo "arrasta por la pantalla", se mueve mucho hacia arriba y hacia abaj porque la sincronia vertical no esta bien, el punto nunca cae en el mismo lugar en el eje Y de la pantalla, y tampoco cae en el mismo lugar en el eje X y cuando cae, se mantiene ahi por demasiado tiempo, por eso el efecto de raya en lugar de punto. He estado pensando:
¿Que tal si usas dos PIC? uno que se encargue de las señales de sincronia y otro de las señales de video, el de sincronia podria ser un PIC pequeño y el de video seria uno mas potente. aunque deberias diseñar un protocolo que comunique ambos pic, se me ocurre que el que genere la sincronia le indique al de video, el momento en que inicia a recorrer la pantalla. Las imagenes en television se forman moviendo el az de electrones en Zig zag, empezando en la esquina superior izquierda y finalizando en la esquina inferior derecha, entonces deberias indicarle, cuando llego al final tambien para poner el video en "infranegro" y que el az no se dibuje en su retorno al inicio de la pantalla
-
Coincido a medias con siniestro en el diagnóstico, el ancho de la pantalla dura 52useg. A 4Mhz cada instruccion asm dura 1useg, en PBP quizá mas. Si enciendes el puerto y enseguida lo apagas entonces el tiempo debería rondar el useg y deberías ver una "rayita", en un TV de 20" (40cm de ancho) la rayita mediría 1*40/52 = 0.77 cm. Si tu linea es tan larga quizá tengas algun tema con la configuracion de los tiempos... lo verificaste con el osciloscopio?
En cuanto a una línea vertical lo conseguirías encendiendo el puerto, por ejemplo, en el medio de los 52uSeg, no cuando el vertical va por la linea 150. Deberías configurar tu interrupcion de horizontal para 26useg, ahi adentro haces el pulsito y vuelves con los 26 useg restantes, o sea, en una int haces el pulsito y en la otra no. Me explico? de esa forma vas a conseguir la linea vertical. Ojo de distinguir que estas dentro de las líneas válidas de la pantalla y no en los pulsos de equalizacion, puedes arrancar ente las lineas 40 y 100 por ejemplo para probar.
Me parece que deberías incrementar la velocidad del micro para evitar algun que otro problema de tiempos que a simple vista se escapan...
Creo que te estas confundiendo en un tema, en el que te explique mas arriba, la informacion de video la tenes que meter dentro de los 52useg que dura el barrido horizontal, tu contador A te indica en que fila de la pantalla estás, si haces un pulso cuando A=150, siempre tendras un solo punto en la fila 150. Las columnas son esos 52 useg... me explico?
de todos modos, creo que estas a un par de pruebas de hacerlo andar asi que sigue adelante!!!!!
Saludos!
-
Vi el video, basandome en mis conocimientos de la formacion de imagen en Televisiones de Tubo de rayos catodicos puedo decirte que:
Se forma una raya en lugar de un punto por que el tiempo que mantienes en alto el pin de video es mucho mayor del que deberia ser, colocas el punto pero la sincronia horizontal lo "arrasta por la pantalla", se mueve mucho hacia arriba y hacia abaj porque la sincronia vertical no esta bien, el punto nunca cae en el mismo lugar en el eje Y de la pantalla, y tampoco cae en el mismo lugar en el eje X y cuando cae, se mantiene ahi por demasiado tiempo, por eso el efecto de raya en lugar de punto. He estado pensando:
¿Que tal si usas dos PIC? uno que se encargue de las señales de sincronia y otro de las señales de video, el de sincronia podria ser un PIC pequeño y el de video seria uno mas potente. aunque deberias diseñar un protocolo que comunique ambos pic, se me ocurre que el que genere la sincronia le indique al de video, el momento en que inicia a recorrer la pantalla. Las imagenes en television se forman moviendo el az de electrones en Zig zag, empezando en la esquina superior izquierda y finalizando en la esquina inferior derecha, entonces deberias indicarle, cuando llego al final tambien para poner el video en "infranegro" y que el az no se dibuje en su retorno al inicio de la pantalla
muy buena idea, si tengo muchos pics, asi vamos experimentando a ver que se logra. Igual voy a pulir el programa, elimitar todos los bucles que me sean posibles y hacerlo mas eficiente.
-
Coincido a medias con siniestro en el diagnóstico, el ancho de la pantalla dura 52useg. A 4Mhz cada instruccion asm dura 1useg, en PBP quizá mas. Si enciendes el puerto y enseguida lo apagas entonces el tiempo debería rondar el useg y deberías ver una "rayita", en un TV de 20" (40cm de ancho) la rayita mediría 1*40/52 = 0.77 cm. Si tu linea es tan larga quizá tengas algun tema con la configuracion de los tiempos... lo verificaste con el osciloscopio?
En cuanto a una línea vertical lo conseguirías encendiendo el puerto, por ejemplo, en el medio de los 52uSeg, no cuando el vertical va por la linea 150. Deberías configurar tu interrupcion de horizontal para 26useg, ahi adentro haces el pulsito y vuelves con los 26 useg restantes, o sea, en una int haces el pulsito y en la otra no. Me explico? de esa forma vas a conseguir la linea vertical. Ojo de distinguir que estas dentro de las líneas válidas de la pantalla y no en los pulsos de equalizacion, puedes arrancar ente las lineas 40 y 100 por ejemplo para probar.
Me parece que deberías incrementar la velocidad del micro para evitar algun que otro problema de tiempos que a simple vista se escapan...
Creo que te estas confundiendo en un tema, en el que te explique mas arriba, la informacion de video la tenes que meter dentro de los 52useg que dura el barrido horizontal, tu contador A te indica en que fila de la pantalla estás, si haces un pulso cuando A=150, siempre tendras un solo punto en la fila 150. Las columnas son esos 52 useg... me explico?
de todos modos, creo que estas a un par de pruebas de hacerlo andar asi que sigue adelante!!!!!
Saludos!
excelente explicacion, si estaba mal interpretando como llevarlo a cabo.....ojala salga andando, lo tengo ahi ahi ahi, tiene que andar.!!!! hoy laburo en el programa y mañana les cuento a ver que salio de todo esto, desde ya un millon de gracias a ambos por la ayuda!
-
Hace un tiempo vi en la revista Saber electronica, de Argentina un proyecto que se llamama IGTV, era una interfaz grafica para TV, de un Ing. de nombre Roberto, al momento no tengo el dato exacto pero si te interesa lo busco, solamente que este proyecto usaba dos tipos de microcontroladores, un AVR y un PIC, pero el Pic se encargaba de todo lo referente a la señales de sincronia y el AVR tenia las Macros en Assembler para generar, botones, display de 7 segmentos, marcos en relieve, etc. Solo debias programar otro PIC que enviaba los comandos a la interfaz. Lamentablemente la revista ya no vino mas a Guatemala :( no se si dejaron de distruirla en centro america o que pasaria porque todo sucedio desde que se formo alianza con la edicion mexicana. Extraño a SE :(
-
Releyendo veo que como dice siniestro parece haber un problema con el vertical también. No tengo bien en claro cuantos pulsos de pre y post ecualización y cuantos pulsos de barrido horizontal tiene que haber para que la pantalla quede quieta. Recuerdo que los viejos televisores tenían una regulación de vertical para cuando la imagen se iba en vertical, pero no sé lo que hacia... Seguro siniestro podrá explicarlo para poder analizar el problema con el vertical.
Usar 2 micros seguro debe facilitar las cosas, pero me parece que ya casi lo tenés. Yo insisto en poner el micro a máxima velocidad para no sumar posibles problemas de tiempo.
Saludos!
-
Recuerdo que los viejos televisores tenían una regulación de vertical para cuando la imagen se iba en vertical
se llamaba Vertical-Hold, lo que hacia era hacer una corrección de la señal de sincronia vertical, cuando la señal de sincronia Vertical no lograba "enganchar" con el video, se podia corregir manualmente, era un ajuste minimo (a veces por calentamiento de los componentes debia reajustarse despues de algun tiempo). La señal de sincronia debe ser casi que perfecta, si la vertical varia la imagen se mueve hacia arriba o hacia abajo, con perfecta quiero decir que si decidimos que queremos 30 cuadros por segundo, la señal de sincronia es de:
1/30=0.033 ó 3.3ms, jamas debe moverse ese valor, con 1ms que se corra ese periodo, la imagen se desestabiliza verticalmente
si decidimos 400 lineas por cuadro, esas 400 lineas nos darian una frecuencia horizontal de 400*30=12,000 Hz porque son 400 lineas en 1/30 de segundo ó 12,000 en un segundo
no entiendo porque han estado mencionando 52uS. Se tiene que fijar un numero fijo de lineas y un numero fijo de cuadros por segundo, luego de ahi partimos para sacar cuanto debe durar el pulso horizontal y cuanto el vertical con los numeros anteriores sabemos que si son 12,000Hz (ciclos por segundo) cada pulso de horizontal durara 1/12000=0.00008333333 ó 8.3uS
Todos estos calculos los hice en el primer comentario que hice a este post usando los valores reales de una señal NTSC.
Usando los mismos calculos de esta respuesta, dentro de 3.3ms o lo que seria lo mismo: 3,300uS deben caber 400 pulsos de 8.33us si operamos matematicamente vemos que
8.33*400=3,332 que se aproxima mucho a los numeros dados, no se si he logrado explimarme correctamente
-------------------------
------------------------- |
------------------------- |
------------------------- |
-------------------------
V 400 lineas con pulsos 8.33uS cada una y para hacer las 400 invertimos 3,332 al terminarlas
el pulso vertical que es de 3.3ms o sea 3,300 nos haria que cuando empiece un nuevo cuadro
las nuevas 400 lineas empiecen donde mismo.
no son calculos exactos todos los calculos de este comentario son con valores de "cuadros" y de "lineas" que pongo de ejemplo 30 cuadros, 400 lineas
calcula cuanto dura cada linea horizontal en microsegundos y usa ese dato para saber en que momento "pintar" con la señal de video.
Yo sigo sin entender de donde sacaron esos 52uS
Me parece muy interesante tu proyecto y dare todo lo que pueda para apoyarte.. . Exitos
-
Bueno muchachos malas noticias, vuelvo a cero, estaba leyendo la nota de richard´s y justo explica que muchas tv viejas no tienen impedancia entonces no se logra bajar el voltaje con las resistencias de 1k y 470 ohms...........adivinen.....mi tele no tiene esa impedancia, antes de agregarle una resistencia de 75ohms me busque otra que tengo aca sin usar, moderna y bueno....la verdad es dura....mi programacion de sincronismo no funciona.....
La rehice de nuevo, volvi al concepto anterior de no usar el timer y hacer todo un programa corrido y nada, no funciona. Con el tmr0 al agregar un comando los pulsos se estiraban como chicles mal, incluso calculando gracias a sus consejos no daban los numeros.
El programa de corrido tampoco funciono, asi que ahora estoy en cero cero.
Lamento haberles hecho perder el tiempo a todos, me confundio ver la pantalla estable junto al osciloscopio y no me di cuenta que la television ni se entero que estaba recibiendo pulsos de sincronia porque estaba fuera del rango de voltaje.
el video de la dura realidad
feature=youtu.be
-
Bueno muchachos malas noticias, vuelvo a cero, estaba leyendo la nota de richard´s y justo explica que muchas tv viejas no tienen impedancia entonces no se logra bajar el voltaje con las resistencias de 1k y 470 ohms...........adivinen.....mi tele no tiene esa impedancia, antes de agregarle una resistencia de 75ohms me busque otra que tengo aca sin usar, moderna y bueno....la verdad es dura....mi programacion de sincronismo no funciona.....
La rehice de nuevo, volvi al concepto anterior de no usar el timer y hacer todo un programa corrido y nada, no funciona. Con el tmr0 al agregar un comando los pulsos se estiraban como chicles mal, incluso calculando gracias a sus consejos no daban los numeros.
El programa de corrido tampoco funciono, asi que ahora estoy en cero cero.
Lamento haberles hecho perder el tiempo a todos, me confundio ver la pantalla estable junto al osciloscopio y no me di cuenta que la television ni se entero que estaba recibiendo pulsos de sincronia porque estaba fuera del rango de voltaje.
el video de la dura realidad
feature=youtu.be
Ayer no estaba en la PC y no podia encontrar el link de la pagina que quería recomendarte, pero es justamente la que estas leyendo:
http://web.archive.org/web/20070111104641/www.rickard.gunee.com/projects/video/pic/howto.php
Ahí se explica de donde salen los 52useg del barrido horizontal en donde se debe operar con el puerto para mostrar informacion.
Si te parece intentemos pasar ese código ASM a PBP o mejor, si te animas a XC8. No te animas pasar a C usando MPLAB X y XC8?
A no desanimar!
Saludos
-
Y no queres arrancar con esta parte solamente:
"One scan-line, making a vertical bar.
The first test I made when I started experimenting with software generated video was to make a white vertical bar on the screen. By creating one scan-line with color information gray-black-white-black-gray, and repeated the scan-line forever, an image could be seen on a TV. The signal contained the horizontal sync-pulse, followed by a delay and then the color information, so the TV could lock to the signal horizontally. (Not vertically because, there was no vertically sync-pulses). I think it looked something like this:"
O sea, no hacer el sincronismo vertical y hacer solamente la señal del horizontal. Si no entiendo mal, uno cuando genera las señal de video lo que tiene que hacer es estar dentro delos tiempos del horizontal y vertical de la norma en la que estamos trabajando. Digo, la velocidad horizontal y vertical ya esta dada por el circuito interno del TV, lo que uno tiene que hacer es generar señales con pulsos de sincronismo con tiempos correctos para que el TV se pueda Enganchar y sincronizar con nuestra señal. Si los pulsos estan con tiempos muy lejos de los adecuados la TV no se puede enganchar y la imagen se mueve. Pero el haz de electrones se esta moviendo constantemente barriendo la pantalla. Entonces si vos haces una señal de barrido horizontal con los tiempos correctos, el TV se va a poder enganchar en horizontal y te va a mostrar lo que dice Rickard.
En tu caso, estas usando 2 salidas del micro para obtener los 3 niveles básicos de tension? necesitas 0V (-0.3V pero evidentemente con 0V funciona) para los pulsos de sincronismo, 0.3V para el color Negro y 0.7V para el color Blanco. Tendrías que medir que a la salida del divisor obtienes esos niveles para cada combinacion de las salidas.
Luego hacer ese programita y ver con el osciloscopio que los tiempos dan bien, pero fijate que dice que el timing es fundamental, asi que vas a tener que subir el micro a la maxima frecuencia y jugar con los Delay para obtener los tiempos justos justos.
Si necesitas ayuda para traducir ese prog ASM a PBP avisanos y lo vemos.
Saludos!
-
No nos has hecho perder tiempo mi amigo jorgenuviola, en mi caso mas bien he aprovehado mi tiempo en algo productivo porque del fruto de tu trabajo tambien podria beneficiarme yo y muchas otras personas que lean esta informacion. Aun no leo la pagina completa (mi ingles no es muy bueno, pero en el ingles tecnico me defiendo) pero estoy leyendo y ya vi lo de los 52uS que son de la informacion de video, los sincronismos si son casi los mismos que hemos calculado aqui. Yo pienso que en Asembler seria mejor por la cuestion del manejo de tiempos, recuerdo que lei que cada instruccino en PBP se lleva hasta cuatro ciclos de reloj (considereando se se traduce a Asembler y luego a HEX y pierde eficiencia), en Assembler solo necesitas un ciclo o dos por instruccion y se aprovecha mejor el tiempo, sin embargo no entiendo el proceso de programacion en Assembler :( seguiré leyendo la pagina y cuando termine emitiré mas opiniones. Y sobre las pruebas fallidas no importa amigo, una historia que no se si es real o no dice que cuando le preguntaron a Edison si no se habia frustrado porque probo 1,000 tipos de filamento para la bombilla, el respondio: "Yo no falle, en el proceso descubri 999 formas de como no era correcto hacerlo" cada prueba deja algo de aprendizaje. Seguí adelante no te frustres.
Bueno muchachos malas noticias, vuelvo a cero, estaba leyendo la nota de richard´s y justo explica que muchas tv viejas no tienen impedancia entonces no se logra bajar el voltaje con las resistencias de 1k y 470 ohms...........adivinen.....mi tele no tiene esa impedancia, antes de agregarle una resistencia de 75ohms me busque otra que tengo aca sin usar, moderna y bueno....la verdad es dura....mi programacion de sincronismo no funciona.....
Amigo, hasta donde yo se, desde que aparecio la entrada de video en los TV, siembre a tenido una impedancia de 75ohm, seguiré leyendo el articulo
-
mil gracias a ambos por la buena onda!!! si me animo a aprender otro lenguaje, indudablemente al basic le falta potencia. ELgarbe, me voy a poner a leer a ve si puedo sacar algo concreto en otro lenguaje e intentar primero generar ese pulso solo.
Siniestro, tenes razon que sirve para que otros conozcan los limites del lenguaje.
y aun asi, voy a hacer un ultimo tiro a la canasta con dos pic. Uno para cada señal a ver si logro algo, si funciona va a ser señal de aprender otro lenguaje porque sino desperdicio la potencia del pic.
Gracias a todos.
-
... ELgarbe, me voy a poner a leer a ve si puedo sacar algo concreto en otro lenguaje e intentar primero generar ese pulso solo...
Si el XC8 de microchip te gusta o interesa, ahí puedo ayudarte bastante con código. Incluso siempre quise tratar de generar color en la señal de video y nunca encontré tiempo para probarlo, por lo que si estas dispuesto podemos trabajar un poco juntos en el tema cuando llegues a la parte de color, mientras tanto todas estas pruebas son muy utiles para afianzar conocimientos!
Lo de los 2 pics no me entusiasma mucho... programando en C y con un micro un poco mas potente (el 877 creo que es el mejor candidato) creo que podrás hacer cosas más que interesante.
Saludos!
-
Hola muchachos.
Comento algo sobre los tiempos, ya que seguramente algunos de los problemas se encuentran allí.
Voy a poner un ejemplo, insisto es solo un ejemplo, pero puede ayudar a ajustar mejor los tiempos... vemos la siguiente porción de código:
sincro5: ;"inicio de 4 pulsos de 30 us y un pulso de 60 us en logico 1"
low hsync
pauseus 2
high hsync
pauseus 30
low hsync <--- hsync puesto en bajo
for D = 0 to 3 <---- Demora extra aproximadamente de 6 a 8 us
pauseus 2 <---- Demora requerida de 2 us
high hsync <---- hsync puesto en alto
pauseus 30
low hsync
next D
observen que entre la primera parte que marqué en rojo y la segunda que marqué en azul se requieren 2us de demora para volver a poner en alto "hsync", sin embargo el bucle for next mas las comparaciones estan agregando una demora de 8us (trabajando a 4 Mhz) y además se le da una demora de 2 us.... total 10us de demora.
Estas cosas deben tenerlas en cuenta, de no hacerlo no van a dar nunca con los tiempos adecuados.... incluso los pauseus 30, deben achicarlos considerando las demoras de los bucles comparaciones y los gotos...
Les recomiendo averiguar cuantos ciclos demora cada instrucción de basic y luego hacer una suma de estos tiempos (1us por ciclo) y restárselo a los "pause" que estan utilizando.
En assembler uno lo hace así, a los delay se le descuentan los tiempos de ejecución del mismo código, de otra forma los tiempos no dan... En básic que los tiempos son mayores eso es más importante aún...
Salud 8)
-
... ELgarbe, me voy a poner a leer a ve si puedo sacar algo concreto en otro lenguaje e intentar primero generar ese pulso solo...
Si el XC8 de microchip te gusta o interesa, ahí puedo ayudarte bastante con código. Incluso siempre quise tratar de generar color en la señal de video y nunca encontré tiempo para probarlo, por lo que si estas dispuesto podemos trabajar un poco juntos en el tema cuando llegues a la parte de color, mientras tanto todas estas pruebas son muy utiles para afianzar conocimientos!
Lo de los 2 pics no me entusiasma mucho... programando en C y con un micro un poco mas potente (el 877 creo que es el mejor candidato) creo que podrás hacer cosas más que interesante.
Saludos!
tendrias algun pdf para principiantes asi lo empiezo a analizar?
-
hola savage!!
-
Consulta, voy a hacer varios intentos mas, incluso de poner dos pic, pero el que sigue es escribir un codigo de corrido, sin timer, casi sin goto. Necesito repasar los tiempos de la tv
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/vinfo_hline.png) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/vinfo_hline.png.html)
5 us front porch y el resto se suma a los 52 de video (estamos hablando de la señal, al ser un codigo de corrido no voy a poner video aca, tendre que hacerlo con otro pic) y despues viene el primer sincro vertical
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/sincrovertical.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/sincrovertical.jpg.html)
mi pregunta es ¿el ultimo pulso del vertical par que es de 60 us, es el que desplaza par que la proxima linea sea impar???? porque por ahi estoy errando con el desplazamiento
-
Dejame insistir en que la primer prueba debería hacerla sin sincronía vertical. Tal como lohace Rickard.
El código de él hace lo siguiente:
Pone la señal de salida en 0V
Delay de 4us (en el texto dice 3useg porque ya tiene algo perdido en las instrucciones previas)
Pone la señal en 0.3V (da por finalizado el pulso de sincro horizontal)
Delay de 8useg (acá deja pasar el tiempo para los TV viejos que necesitan ese retardo para que el haz esté en posicion)
Pone señal en 0.6V (una vez que pasaron los primeros 12 useg ya estamos al comienzo de la imagen, en la pate izquierda de la pantalla. Pone color Gris)
Delay de 4useg (deja el color Gris por 4useg para dibujar una rayita)
Pone la señal en 0.3V (vuelve al color negro)
Delay de 19useg (deja que pasen 19useg y el haz avance por la pantalla en color negro. 19useg es casi el medio de la pantalla)
Pone la señal en 1V (Para pintar en blanco)
Delay de 4useg (dibuja una rayita blanca en la pantalla)
Pone la señal en 0.3V (vuelve al color Negro)
Delay de 19useg (espera a llegar al final de la pantalla 4+19+4+19=46useg)
Pone señal en 0.6V (pinta color Gris)
Delay de 2useg
Delay de 2 ciclos de reloj
En teoriía con eso consigue la señal horizontal de 64useg, aunque a mi no me dan las cuentas.
Lo unico que necesitas para que el TV se sincronice con tu señal es el pulso horizontal. Al vertical, en principio podes dejarlo afuera, total el TV funciona igual, lo unico que no vas a conseguir es sincronizarte verticalmente con el barrido. Pero deberías obtener las 3 barras bien verticales.
Yo haría ese programa en basic y ajustaría los tiempos con el osciloscopio hasta obtener los tiempos correctos y los niveles de tension correctos, sin conectar el TV. Luego, cuando tu señal sea perfecta se la mandas al TV y.... voilá tendrás las barras verticales!
Con la alegría de esa imagen podemos seguir con el vertical.
Saludos y suerte!
-
No se si sea necesario lo de "las lineas pares e impares" eso solo es una estratégia de las transmiciones de TV para no enviar 60 cuadros por segundo, si no que 30 y mostrar cada imagen en dos partes. Podrias dibujar de corrido sin ningun problema
-
Dejame insistir en que la primer prueba debería hacerla sin sincronía vertical. Tal como lohace Rickard.
El código de él hace lo siguiente:
Pone la señal de salida en 0V
Delay de 4us (en el texto dice 3useg porque ya tiene algo perdido en las instrucciones previas)
Pone la señal en 0.3V (da por finalizado el pulso de sincro horizontal)
Delay de 8useg (acá deja pasar el tiempo para los TV viejos que necesitan ese retardo para que el haz esté en posicion)
Pone señal en 0.6V (una vez que pasaron los primeros 12 useg ya estamos al comienzo de la imagen, en la pate izquierda de la pantalla. Pone color Gris)
Delay de 4useg (deja el color Gris por 4useg para dibujar una rayita)
Pone la señal en 0.3V (vuelve al color negro)
Delay de 19useg (deja que pasen 19useg y el haz avance por la pantalla en color negro. 19useg es casi el medio de la pantalla)
Pone la señal en 1V (Para pintar en blanco)
Delay de 4useg (dibuja una rayita blanca en la pantalla)
Pone la señal en 0.3V (vuelve al color Negro)
Delay de 19useg (espera a llegar al final de la pantalla 4+19+4+19=46useg)
Pone señal en 0.6V (pinta color Gris)
Delay de 2useg
Delay de 2 ciclos de reloj
En teoriía con eso consigue la señal horizontal de 64useg, aunque a mi no me dan las cuentas.
Lo unico que necesitas para que el TV se sincronice con tu señal es el pulso horizontal. Al vertical, en principio podes dejarlo afuera, total el TV funciona igual, lo unico que no vas a conseguir es sincronizarte verticalmente con el barrido. Pero deberías obtener las 3 barras bien verticales.
Yo haría ese programa en basic y ajustaría los tiempos con el osciloscopio hasta obtener los tiempos correctos y los niveles de tension correctos, sin conectar el TV. Luego, cuando tu señal sea perfecta se la mandas al TV y.... voilá tendrás las barras verticales!
Con la alegría de esa imagen podemos seguir con el vertical.
Saludos y suerte!
Lo voy a hacer como me lo pedis, vamos a ver que hace la tv
-
No se si sea necesario lo de "las lineas pares e impares" eso solo es una estratégia de las transmiciones de TV para no enviar 60 cuadros por segundo, si no que 30 y mostrar cada imagen en dos partes. Podrias dibujar de corrido sin ningun problema
entonces cuando haga el sincro vertical despues de la prueba que me propone el garbe voy a hacer un solo sincro vertical.
-
elgarbe, tu experimento resulto positivo!!!! pero en parte. Escribi un codigo simple acorde a todo lo que me solicitaste, SIN VERTICAL la pantalla quedo estable, pero no andan los colores, en el osciloscopio veo la senal para gris y blanco tal cual como lo explica la pagina de richard pero no funciona. Le desconecto el puerto de color y sigue igual no hay cambios, ahora la pantalla quedo estable solo con el horizontal tal cual como lo indicaste y con la forma de 525 lineas. subo foto.
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/Foto0149.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/Foto0149.jpg.html)
este codigo
define osc 10
symbol HSYNC = porta.0
symbol VIDEO = porta.2
OUTPUT porta.0
output porta.2
low hsync
low video
himpar:
low hsync
low video
pauseus 4
high hsync
pauseus 8
low hsync
high video
pauseus 4
low video
high hsync
pause 19
high video
pause 19
low hsync
pauseus 2
low hsync
low video
goto himpar
siniestro: tenes razon esta tv es moderna dentro de todo, debe de fines de los 90 asi que se ve no requiere un entrelazado.
sigo con las practicas, siguiente prueba es hacer lo mismo pero sin señal de video a ver si cambia la pantalla y luego de eso hacer un solo sincronismo vertical, pero con contador y un comando IF
-
elgarbe, tu experimento resulto positivo!!!! pero en parte. Escribi un codigo simple acorde a todo lo que me solicitaste, SIN VERTICAL la pantalla quedo estable, pero no andan los colores, en el osciloscopio veo la senal para gris y blanco tal cual como lo explica la pagina de richard pero no funciona. Le desconecto el puerto de color y sigue igual no hay cambios, ahora la pantalla quedo estable solo con el horizontal tal cual como lo indicaste y con la forma de 525 lineas. subo foto.
este codigo
define osc 10
symbol HSYNC = porta.0
symbol VIDEO = porta.2
OUTPUT porta.0
output porta.2
low hsync
low video
himpar:
low hsync
low video
pauseus 4
high hsync
pauseus 8
low hsync
high video
pauseus 4
low video
high hsync
pause 19
high video
pause 19
low hsync
pauseus 2
low hsync
low video
goto himpar
siniestro: tenes razon esta tv es moderna dentro de todo, debe de fines de los 90 asi que se ve no requiere un entrelazado.
sigo con las practicas, siguiente prueba es hacer lo mismo pero sin señal de video a ver si cambia la pantalla y luego de eso hacer un solo sincronismo vertical, pero con contador y un comando IF
Hola.
¿Tenes el archivo ASM que te genero la compilacion?. ¿y el LST?.... ¿Podes subirlos asi le pego una mirada?.
Saludos.
-
Hola darkman si te lo paso el asm. Pero antes quiero decir lo siguiente, es importante en la vida reconocer los errores y en mi caso por ser novato en todo esto HORRORES. Estaba usando una ficha de video compuesto rescatada de una video casetera de 3 conectores uno para masa y otro para la señal, tenia conectado por comodidad un cable a cada uno, medi con el osciloscopio y la señal se veia, ahora no habia medido con el tester, lo pongo en la de sincro genial 0.3V y en la de video 2V!!! epa que paso aca???? voy a la ficha y que descubro, que la ficha era para pin largo y seria una tercera conexion, nunca iba a llegar la informacion de VIDEO!!!!! asi que uni los dos cables del port de video y el port de sinc y listo!!!!! en la otra tv si llegaba porque tenia la ficha larga
el grabe.............el programa FUNCIONO!!!!!
dejo la evidencia!!!!!!!!!!!
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/IMG-20140911-WA0002.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/IMG-20140911-WA0002.jpg.html)
ahora hice una prueba con los tiempos de vertical y es un desastre. le agregre la parte del programa anterior y me parece que no funca asi.
¿alguna idea de como hago el vertical? ¿pongo variables a contar?
sigo con esto hasta tarde hasta que algo salga.
MIL GRACIAS A TODOS.
darkman te dejo el asm y lst
http://www.4shared.com/file/wcdASuW_ba/SINV.html
http://www.4shared.com/file/Ud7j6rCtba/sinV.html
-
Hola Jorge.
Me alegro que estes progresando.
¿No podrias adjuntar los archivos al mensaje en lugar de tener que bajarlos de 4shared?. No creo que "pesen" tanto.
Abajo, cuando generas el mensaje, tenes la opcion "Opciones Adicionales". Ahí te permite adjuntar los archivos.
Mi cuenta en 4shared la he utilizado hace mucho, creo que una unica vez y ya no recuerdo ni el usuario y menos la password. :P
Saludos.
Edito:
Ya que estamos,¿ Podrias fijarte si al compilar con PBP no te deja un archivo donde hace la traduccion de basic a assembler?. No creo que lo genere pero por las dudas te consulto. De esto olvidate. Esta en el LST.
Todo esto que te estoy pidiendo es para ver que instrucciones PBP traduce en forma directa o casi en forma directa a assembler, asi podes saber cual te conviene usar.
Saludos.
-
Hola Jorge.
Me alegro que estes progresando.
¿No podrias adjuntar los archivos al mensaje en lugar de tener que bajarlos de 4shared?. No creo que "pesen" tanto.
Abajo, cuando generas el mensaje, tenes la opcion "Opciones Adicionales". Ahí te permite adjuntar los archivos.
Mi cuenta en 4shared la he utilizado hace mucho, creo que una unica vez y ya no recuerdo ni el usuario y menos la password. :P
Saludos.
hola darkman, perdon es la costumbre de usar estas cosas. Ahi va en ZIP
-
Ya lo baje.
Lo cantidad de instrucciones que agrega es mortal. Mañana lo miro con mas detalle porque ahora me estoy cayendo a pedazos.
Saludos.
-
muchas gracias darkman vaya a descansar!!
agrego sume un FOR / NEXT para contar 252 pulsos..............tarda 4 segundos en completarlo.................ahora si se me fue todo al demonio jjajajajajaja
-
el grabe.............el programa FUNCIONO!!!!!
dejo la evidencia!!!!!!!!!!!
(http://i222.photobucket.com/albums/dd89/ford1940deluxe2/electronica/IMG-20140911-WA0002.jpg) (http://s222.photobucket.com/user/ford1940deluxe2/media/electronica/IMG-20140911-WA0002.jpg.html)
Lamento informarte que no ha funcionado... esperábaos una barra vertical gris a la izquierda, una barra blanca en el centro y otra barra gris vertical a la derecha...
Podrías poner el osciloscopio a la salida para ver los tiempos de la señal con ese programa?
Estimo que los tiempos de los delay deberías achicarlos para obtener los tiempos correctos ya que el basic al compilar agrega lineas y mete retrasos.
La otra opcion es que te instales el Mplab X de la pagina de microchip y bajes el compilador para ASM que es gratuito y así podamos hacer pruebas en ASM, veras que estos ejemplos simples no son tan difíciles de entender en ASM.
Pero tendrías que poner el osciloscopio o ver en proteus los tiempos que obtienes con ese programa ya que la imagen no es lo que esperábamos :(
Saludos!
-
Ya lo baje.
Lo cantidad de instrucciones que agrega es mortal. Mañana lo miro con mas detalle porque ahora me estoy cayendo a pedazos.
Saludos.
Coincido, me parece que va a ser imposible usar Basic para esto... o quizás sea com dice Darkman, quizá haya lineas que traduce de forma directa sin agregar instrucciones que generan más retrasos que no estamos teniendo en cuenta.
El PBP no tiene compilador ASM? Por que cuando uno arranca un proyecto y empieza a probar y no obtener resultados, no sabe para donde salir. Entonces quizá convenga arrancar con algo probado (el codigo de Rickard) y con eso funcionando avanzar.
Acá el que va a decir la verdad es el osciloscopio al ver los tiempos que se obtienen con ese programa.
Saludos!
-
Hola a todos.
Jorge, mi primer pensamiento es que tendrias que cambiar de pic e ir a uno mas rapido, por ejemplo un PIC18, corriendo por ejemplo a 48 MHz. Esto te va a permitir cierta holgura con los tiempos. Sobretodo si el PBP te esta agregando mas sentencias en assembler (que luego se traducen en codigo maquina). Una vez que le encontras la vuelta con un pic mas rapido podrias volver a encarar uno mas lento (Se que lo estas tomando a modo de desafio).
Por otro lado, como dice elgarbe y yo desconozco si ya no lo venis haciendo, es utilizar mas el osciloscopio ya que dispones de uno. Mi idea es que generes primero el pulso de sincronismo horizontal, pero solo un par de veces (3,4 ...10, las que quieras, pero pocas, como si fueran pocas lineas de la imagen)... asi seria como una señal perioidca y si pones en el osciloscopio disparo unico y seteas la frecuencia de barrido en forma correcta la señal no tendria que moverse. De esta forma te aseguras que los tiempos son los correctos. Luego pondria el sincronismo vertical y por ultimo los niveles para la imagen. Siempre tratando que la imagen este estable. Si no puedo lograr esto no voy a tener una imagen correcta en el televisor.
Cambio de tema. Lo que he visto asi a vuelo de pajaro ayer antes de irme a dormir es que pbp , si no me equivoco, genera macros en las que primero chequea en que banco de memoria esta. Por eso decia que agrega de todo. Supongo que todo eso en la compilacion luego vuela. Eso lo vi en el LST. El .ASM es una coleccion de macros. Por cada linea en PBP genera una macro.
Necesito 3 archivos mas de la misma compilacion de los anteriores que me pasaste. O si ya no lo tenes, si podes volver a compilarlo de nuevo al ultimo ejemplo que publicaste. Los archivos son sinv.mac , sinv.hex y PBPPIC14.LIB.
Del hex quiero debuggearlo para obtener el assembler que cargo finalmente en el PIC. Los otros 2 archivos figuran en el archivo .ASM que me pasaste. Supongo que ahí estan las macros y quisiera verlas.
Saludos.
-
Yo lamentablemente me quede sin Internet en la computadora, me es tedioso responder desde el celular pero te aconsejo que cuando hagas pruebas como esa con la línea brillante en pantalla, le bajes el brillo al televisor porque si no podrías dañar el fósforo interno y quedaría una línea o sombra sobre las imágenes. También te sugiero que investigues sobre los tiempos que consume cada instruccion PB y que tanto influye el cristal del micro, debería usar el mas rápido soportado por el mismo
-
ahora te paso todo darkman, lo tengo en otra pc. pregunta: yo estoy usando pbp, ahora si usara el basic de mplab ¿cambiaria? ¿se haria mas eficiente?
el mplab lo tengo instalado, siempre sospeche que en algun momento lo iba a tener que agarrar. Ya empece a leer, vi varios videos muy buenos y esta claro, lo que en el basic son 3 comandos en asm son muchos renglones, pero bueno sin duda es mas eficiente y voy a tener que meterle horas a ASM.
Ya me baje el pdel para generar las rutinas de retardos asi no me vuelvo loco escribiendo a full, igua voy a empezar a practicar.
-
He estado leyendo este hilo
http://www.todopic.com.ar/foros/index.php?topic=22424.20
no lo termino de leer aun, pero ahi ya se trataron puntos importantes como en este POST, Mario quillote dice algo muy claro:
Según mi punto de vista, una de las formas de encarar el proyecto podría ser, con un PIC sencillo (16F84A) a 20 Mhz. generar el cuadro ó raster en la NORMA que se desee trabajar y utilizar sí un microcontrolador potente para trabajar los gráficos en forma exclusiva, de manera tal que éste último no deba encargarse de todo el trabajo.
Luego se suman las señales de imagen en tiempo y forma correctos y se obtiene una salida de video compuesta sin mayores inconvenientes.
De ésta forma se haría de manera modular el trabajo y se podría ir avanzando con bloques definidos, logrando porciones de éxitos para luego sumarlos todos en el resultado final.
El encargado de generar el raster debe trabajar, según mi experiencia, a 20 Mhz. y debiera programarse en ASM ya que el manejo de los tiempos es fundamental para lograr las formas de onda correctas.
A 20 Mhz. tendremos instrucciones a cada 0,2 microsegundos, valor exacto para generar correctamente los anchos de los impulsos de sincronismo + los pedestales ( ó pórticos ) .
Con menor frecuencia de clock, también se puede lograr un raster, pero no se podría lograr un impulso de sincronismo horizontal exacto de 4,8 microsegundos como determinan las normas.
-
ahora te paso todo darkman, lo tengo en otra pc. pregunta: yo estoy usando pbp, ahora si usara el basic de mplab ¿cambiaria? ¿se haria mas eficiente?
el mplab lo tengo instalado, siempre sospeche que en algun momento lo iba a tener que agarrar. Ya empece a leer, vi varios videos muy buenos y esta claro, lo que en el basic son 3 comandos en asm son muchos renglones, pero bueno sin duda es mas eficiente y voy a tener que meterle horas a ASM.
Ya me baje el pdel para generar las rutinas de retardos asi no me vuelvo loco escribiendo a full, igua voy a empezar a practicar.
Hola.
Jorge, 3 comando que ves, porque luego el programa en BASIC se te traducen en un monton de sentencias en assembler que, creo en general, son mucho menos eficiente que si armaras el programa desde el mismo assembler. Es que assembler nacio para esto, para entrarle directamente al hardware. Los otros lenguajes son para hacerle la vida mas facil al programador. Cuando tenes que sacarle el jugo al hardware no hay nada mejor que assembler, eso si, tenes que conocer el hardware y para prender una letra en pantalla te va a llevar escribir flor de codigo, mientras que en otros lenguajes pones "print" y listo.
Saludos.
-
ahora te paso todo darkman, lo tengo en otra pc. pregunta: yo estoy usando pbp, ahora si usara el basic de mplab ¿cambiaria? ¿se haria mas eficiente?
el mplab lo tengo instalado, siempre sospeche que en algun momento lo iba a tener que agarrar. Ya empece a leer, vi varios videos muy buenos y esta claro, lo que en el basic son 3 comandos en asm son muchos renglones, pero bueno sin duda es mas eficiente y voy a tener que meterle horas a ASM.
Ya me baje el pdel para generar las rutinas de retardos asi no me vuelvo loco escribiendo a full, igua voy a empezar a practicar.
Hola.
Jorge, 3 comando que ves, porque luego el programa en BASIC se te traducen en un monton de sentencias en assembler que, creo en general, son mucho menos eficiente que si armaras el programa desde el mismo assembler. Es que assembler nacio para esto, para entrarle directamente al hardware. Los otros lenguajes son para hacerle la vida mas facil al programador. Cuando tenes que sacarle el jugo al hardware no hay nada mejor que assembler, eso si, tenes que conocer el hardware y para prender una letra en pantalla te va a llevar escribir flor de codigo, mientras que en otros lenguajes pones "print" y listo.
Saludos.
Claaaroo a eso me referia, para los que programamos en "chato" como se decia hace un par de decadas no entrabamos en el funcionamiento interno de las funciones, ASM es directamente eso, el codigo de maquina, asi que decision tomada, voy a apuntar a asembler!! ya empece viendo un par de videos aclarativos. No lo voy a matar este post, pero no creo que corresponde tratar un tema de ASM en la seccion de Basic. Lo que voy a hacer es abrir un post en asm citando este. En el video ya me quedo claro como enceder puertos en ASM y con el programita de calculos de rutinas en poco dias les tengo novedades con pruebas nuevas, lo que si voy a necesitar su ayuda perdon si molesto pero es entrar a un mundo nuevo.
CONCLUSION: NO se puede hacer manejo correcto de microsegundos en basic sobre rutinas que requieran correr muchos procesos en microsegundos. Todo esta probado materialmente
un millon de gracias a todos por la colaboracion y buena onda.
-
Yo ando escaso de tiempo pero con cualquier consulta que tengas no dudes que te voy a ayudar.
Dan ganas de ayudar a la gente que se esfuerza por sacar adelante desafíos.... Desgraciadamente hay muchos que esperan que les den todo hecho... Y se nota que no es tu caso...
-
Yo ando escaso de tiempo pero con cualquier consulta que tengas no dudes que te voy a ayudar.
Dan ganas de ayudar a la gente que se esfuerza por sacar adelante desafíos.... Desgraciadamente hay muchos que esperan que les den todo hecho... Y se nota que no es tu caso...
Coincido plenamente. Cuando arrancaste planteando todo dudas no te di ni bola. Pero cuando mostraste avances propios y despues continuidad da ganas de ayudar.
Conta conmigo.
Saludos
-
gracias muchachos!!!! lo voy a lograr!!! cuando se me cruza hacer algo hasta que no me sale no paro jjejejeje!! hoy empiezo a hacer pruebas en ASM y en un par de noches les cuento que logre.
si le pongo garra, mi otro hobby es armar autos y tengo una agrupacion propia en donde la regla es que cada uno arme su propio auto con sus propias manos, la idea de la agrupacion es ayudar a que los demas aprendan para que puedan hacer sus propias cosas, hijo de un tornero y sobrino de un mecanico de TC2000 imaginense mi infancia y adolecencia jejeje, todo lo que aprendo lo quiero ver materialmente funcionando. Asi que alla voy IC de sincronismo!!!
-
Se sigue en ASM:
http://www.todopic.com.ar/foros/index.php?topic=43421.msg359736#msg359736