Autor Tema: Display Puntaje Basquet, problemas con Timer0.  (Leído 9128 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado LeSs

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 81
Display Puntaje Basquet, problemas con Timer0.
« en: 08 de Enero de 2007, 13:16:24 »
Saludos a Todos!

Disculpen la molestia amigos, pero ya no doy +....
Estoy trabajando hace +d un mes en un Control de puntaje para basquet. Pero dado el tiempo he completado el codigo, poco a poco, hasta que por fin lo termine y lo simule.
 :(comienzan los dolores de cabeza :(.

Si no es mucha molestia les explico el funcionamiento y los problemas que me da.

Comienza el programa y muestran mensajes de presentación...
aparece el primer mensaje luego borra y muestra el segundo mensaje.
>>>1º inconveniente
   el timer0 comienza a contar una vez que configuro el prescaler con las   siguientes lineas de codigo
                 banco   1            ; Cambio al banco 1
   movlw   b'10000111'        ; Prescaler de 256 asignado al         TMR0     
   movwf   OPTION_REG      ; resistencias de Pull-Up del Puerto B.   

Luego de que configuro el Timer0 pero aun no autorizo las interrupciones del mismo.
por que? cuenta y cuenta y si no lo he activado o me equivoco?
   pero si no configuro el presacaler no pasa s error(No se incrementa la cuenta del timer)

hago la configuracion inicial se borra o cargan los contenidos iniciales, llega al inicio del juego.

Considerando el segundo caso,presiono start(tecla A)
sigo simulando y bueno, se carga el reloj, uso el timer0 para que se  produzk una interrupcion cada 50ms, cuento 20 veces y tengo mi interrupción cada segundo.
decrementa bien el tiempo si lo dejo sin presionar ninguna tecla extra.

Cuando trato de realizar las otras operaciones como incrementar puntaje del
equipo local con las teclas 1,2,3 ,al principio si lo logra incrementa bien el puntaje
luego ya no responde las teclas de incrementar puntaje y para terminar aparece el siguiente error.
Warning: [U1] at 213.632 (PC=0x0419): Stack underflow executing RETURN instruction.
Warning: [U1] at 213.632 (PC=0x0411): Stack overflow executing CALL instruction.
Warning: [U1] at 213.632 (PC=0x0419): Stack underflow executing RETURN instruction.
esto me pasa cuando voy por mas de 21 puntos a veces .

Cuando trato de realizar las otras operaciones como incrementar puntaje del
equipo local con las teclas 4,5,6 ,al principio si lo logra incrementa bien el puntaje
luego aparece el siguiente error.
Warning: [U1] at 213.632 (PC=0x0419): Stack underflow executing RETURN instruction.
Warning: [U1] at 213.632 (PC=0x0411): Stack overflow executing CALL instruction.
Warning: [U1] at 213.632 (PC=0x0419): Stack underflow executing RETURN instruction.
esto me pasa cuando voy por los mas de 21 puntos a veces.
despues de varios minutos el teclado no responde.
Que estoy haciendo mal alguna pista en especial a lo del timer al comienzo del programa y luego con lo del stack?
En algo influyen los Macros, claro con las llamadas a subrutinas???

Me podrian ayudar con una guia para poder completar mi proyecto. Por Favor.
O si alguien esta interesado en unirse al proyecto y lo terminamos en conjunto.

Si no es mucha molestia alguna sugerencia para reestructurar el codigo, eliminar los SAA1064( que obligatoriamente lo tengo q hacer por q n mi pais no venden... que pena) y utilizar multiplexaciòn de los displays a 7 segmentos, si es de cambiar la frecuencia del oscilador no importa pero nunca lo he intentado( se me pone uso del CPU al 100% cuando simulo, pero si he leido los post anteriores respecto al tema, el unico inconveniente es que no se como reestrucrurar el codigo y en que momento utilizarlo.


Muchas gracias por su atencion y pronta respuesta...

Adjunto archivos, codigo fuente y de simulación.
El hambre produce poemas inmortales. La abundancia únicamente indigestión y torpezas.
Aprendiendo a programar en C.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #1 en: 09 de Enero de 2007, 17:14:59 »
Hombre en principio por lo poco que pones del codigo, los errores parece que son por que se a desborbado la pila(stack). Si es asi es porque estan anidadas unas rutinas dentro de otras rutinas(el maximo son 8 niveles) y por eso se desborda y al final no sabe a donde regresar el programa.
fermin
Todos los días se aprende algo nuevo.

Desconectado LeSs

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 81
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #2 en: 09 de Enero de 2007, 23:17:46 »
Gracias por su interes!

Lo del la pila si lo tengo claro por eso estoy buscando una reestructuracion de codigo, mi pregunta va con lo del timer0, si tengo claro lo del timer y las interrupciones pero lo que me suced y me parece raro corrijanme si estoy equivocado: "Que una vez que se asigna al timer el conteo interno o sea q se incremente con cada pulso de reloj, comienza a contar, cuenta y cuenta sin parar, se dessborda a cada rato, pero si no se activa la interrupcion del mismo no influye en nada. pero como estoy trabajando con otras interrupciones, tiene que revisar la causa de la interrupcion se me pierde el conteo del .

Ahora si se dan cuenta cuando se mantiene presionada una tecla estando en el servicio de interrupcion el timer cuenta mas rapido que si se trabaja en modo normal fuera de la interrupcion.

Otra consulta respecto de los Macros, deberia poner antes de cada debinicion del macro banksel "Registros en cuestion" por si akzo, est fallando en esto.

Por el momento Sigo reestructurando el codigo, para hacerlo +claro d entender y corregir posibles fallas.
El hambre produce poemas inmortales. La abundancia únicamente indigestión y torpezas.
Aprendiendo a programar en C.

Desconectado LeSs

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 81
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #3 en: 13 de Enero de 2007, 12:29:44 »
Saludos!

En vista de q no hay respuestas nuevas, y basado en las pruebas que he realizado. llegue a la siguiennte conclusion:
El Timer0 comienza a contar desde el primer momento en que seleccionas como contador o temporizador, para mi caso por descuido no active una tercera variable a parte de las interrupciones por desbordamiento del timer y su flag de reconocimiento, como por ejemplo Temporizador On u OFF, que dependiendo del estado del programa realizaria los procedimientos correspondientes.

Como el programa es un poquito largo, ya solucione los problemas de desbordamiento del stack, ahora estoy trabajando con un codigo algo mas reducido, pero ya casi ta listo...
Alguna sugerencia para presentar los datos el los 16displays de 7 segmentos?

El hambre produce poemas inmortales. La abundancia únicamente indigestión y torpezas.
Aprendiendo a programar en C.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #4 en: 20 de Enero de 2007, 00:21:45 »
jeje hola luis como vas con el proyecto, espero q bien, saludos y sigue adelante!!!! :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #5 en: 22 de Enero de 2007, 08:16:26 »
Alguna sugerencia para presentar los datos el los 16displays de 7 segmentos?

Hola, ¿qué tipo de sugerencia estas hablando? ¿Algo relativo al hardware/software? ¿Cómo mostrar los datos?

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado LeSs

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 81
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #6 en: 22 de Enero de 2007, 13:12:54 »
Que tal compañeros!

Citar
Hola, ¿qué tipo de sugerencia estas hablando? ¿Algo relativo al hardware/software? ¿Cómo mostrar los datos?

Si era respecto al Hardware, por que al principio ya tenia hecho hasta las subrutinas que manejaban los 4 SAA1064, pero no los pude conseguir.

Bueno ya estoy depurando el codigo, y dandole una mejor explicacion de lo que hice, ya lo simule y todo ok!.

El diseño final cuenta con comunicacion serial entre un micro16876 y un 16870, en modo asincrono. el 16870 estaba a la espera de los datos, solo envio 3bytes, uno codigo para saber a que grupo de displays pertenecen los datos, y los otros 2, contienen informacion en la parte alta como baja de cada byte, luego de recibir los 3 bytes actualiza datos, y sigue con la subrutina de multiplexacion para mostrar los datos en los displays.

Ahora tengo una interrogante:

Cuanto es la mayor distancia a la que pueden estar separados los 2 micros??? :? :?
 


El hambre produce poemas inmortales. La abundancia únicamente indigestión y torpezas.
Aprendiendo a programar en C.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #7 en: 22 de Enero de 2007, 14:51:50 »
Si era respecto al Hardware, por que al principio ya tenia hecho hasta las subrutinas que manejaban los 4 SAA1064, pero no los pude conseguir.

La cosa cambia si usas un integrado que te mantenga el refresco que si usas uno que no lo haga.  Además 16dígitos 7 segmentos mediante multiplexado simple por los pines de un pic realmente es condenarlo a que o bien parpadee o bien se vea tan tenue que no se distinga mucho que digamos.

Puedes entonces, seguir pensando en el uso del SAA1064 o bien usar latchs.
 

Cuanto es la mayor distancia a la que pueden estar separados los 2 micros??? :? :?

Depende, comunicados mediante RS485, pueden estar a 1000mts.  Comunicados mediante fibra óptica a kilómetros de distancia.

Si a lo que te refieres es dentro de un PCB con el puerto serie , depende de la velocidad a la que los comuniques, de cómo diseñes las pistas y de qué hardware uses para comunicarlos.  Por ejemplo si usas un módulo para 485 no tendrías problema alguno en cualquier tamaño de PCB ya que eliminan muchisímo el modo común por su característica diferencial.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #8 en: 23 de Enero de 2007, 02:00:50 »
yo usaria el max232 para q suba a 12V y con eso tiene hasta 15metros pero cuanta es la distancia q los usaras mucha? si no hay ruido ni motores por ahi creo q con eso es fuciciente y no tienes q agregar nada al soft del pic, solo poner un max232 por pic  conectarlo como correponde y listo. cuentanos mas sobre tus interrogantes me parece  todo un reto manejar 16 displays amigo!!  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #9 en: 23 de Enero de 2007, 08:19:44 »
yo usaria el max232 para q suba a 12V y con eso tiene hasta 15metros pero cuanta es la distancia q los usaras mucha?

Yo he usado RS232 a más de 35 mts pasando por líneas de alimentación de luces.

Baudeaje 9600.
Usando cable mallado multifilar.

Si uno baja el baudeaje se puede transmitir más lejos.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #10 en: 23 de Enero de 2007, 10:11:57 »
ah excelente entonces, con eso bastaria Less!!!  :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #11 en: 23 de Enero de 2007, 10:19:52 »
ah excelente entonces, con eso bastaria Less!!!  :-)

De todas formas, si está pensando en hacer algo cableado para una cancha de básquet, lo mejor, más práctico y más robusto es montarlo bajo RS485.

Lo de RS232 lo hice porque me veía limitado porque debía unir una PC a una UPS y era la única forma de gastar el menor dinero posible sin necesitar adaptar nada, además de que el monitoreo era con un soft propietario del cual no conocía los pormenores.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #12 en: 23 de Enero de 2007, 10:25:54 »
Hola,

Puedes montar tu RS232/ Sobre 485.
Ami me fue de maravilla, y justamente la hice para un panel de un coliseo. La distancia fue de 500 metros. Pero se puede ir hasta 1000 metros.

Para eso basta solo con las interfaces MAX485,... Dejame buscar... que creo q tengo el esquema a la mano.

Saludos,

Yoel
« Última modificación: 23 de Enero de 2007, 10:28:01 por Yoel_Ocmin »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #13 en: 23 de Enero de 2007, 10:33:34 »
Hola,

Puedes montar tu RS232/ Sobre 485.
Ami me fue de maravilla, y justamente la hice para un panel de un coliseo. La distancia fue de 500 metros. Pero se puede ir hasta 1000 metros.

Para eso basta solo con las interfaces MAX485,... Dejame buscar... que creo q tengo el esquema a la mano.

Saludos,

Yoel

No necesita pasar por RS232, el PIC tiene una usart perfectamente compatible con transceivers RS485 como los DS75176 de National o MAX485 de Maxim.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado LeSs

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 81
Re: Display Puntaje Basquet, problemas con Timer0.
« Respuesta #14 en: 23 de Enero de 2007, 12:58:19 »
Citar
me parece  todo un reto manejar 16 displays amigo!! 

No se que inconvenientes me esperan cuando lo implemente, por que en la simulacion en el proteus me va de lujo, los datos se ven fijos en los displays, no se si es que ya cuando lo implemente me va a dar problemas. pero como el micro esta en ese bucle de refrescar los displays, creo que los tiempos se pueden afinar.


Citar
Puedes entonces, seguir pensando en el uso del SAA1064 o bien usar latchs.

Les comento compañeros que dada mi inexperiencia en este tipo de proyectos, y la situacion tecnologica de mi pais( no encontre los SAA1064), hice un diseño para cada situacion:
 1º utilizar 4 SAA1064 con comunicacion I2C. codigo del proceso comprobado
 2º utilizar registros de desplazamiento 74HC164, tb hice el codigo y lo comprobe, pero no me gusto por que despues tok hacer una placa + grande y demoro un poquito +
3º La comunicacion serial con un 16f870 para que muestre los datos, esta ya esta comprobada y si funciona.
 Realmente ha sido una buena experiencia, este proyecto aprendì y comprendì, temas que nunk habia tratado, y gracias a ustedes me estoy adentrando + en este mundo de los MIcros.

Citar
No necesita pasar por RS232, el PIC tiene una usart perfectamente compatible con transceivers RS485 como los DS75176 de National o MAX485 de Maxim.
Me gusta la idea de usar la comunicacion RS485, voy a ver primero si hay los integrados en mi pais, para no emocionarme en algo que luego no lo voy a poder terminar. :D :D :D

 :?Aqui me detengo un momento, no lo recuerdo bien pero  en el data del 16876A, especifica que es compatible con RS232 solamente o me equivoco? , pero  en los de la serie 18F si especifica que es compatible con RS485.

Maunix como deberia hacer para utilizar la comunicacion RS485? me podrias decir como configurar los registros? , estoy trabajando a 9600baudios y 4MHZ.


Otra consulta, para no utilizar transistores para el manejo de cada display podria utilizar los ULN2003, alli la configuracion seria:
Pic  74LS48 displays y ULN2803, para ahorrar espacio y trabajo en el diseño de la plaK.

Salu2,

Luis Enrique


El hambre produce poemas inmortales. La abundancia únicamente indigestión y torpezas.
Aprendiendo a programar en C.


 

anything