Autor Tema: Problemas con la instrucción puts en ccs? (Listo! Más bien: error de tipeo)  (Leído 6000 veces)

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

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Saludos gente!
Pues esto que me está pasando sí que está interesante.
Estoy tratando de hacer un programa para que el pic "emule" la información que envía un módulo gps y así no tener que estar montándolo en real sino poder simularlo en proteus. Estoy usando un PIC16F877, y el código es este:

Código: C
  1. #include <16f877.h>
  2. #fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
  3. #define Tx  PIN_C6
  4. #define Rx  PIN_C7
  5. #define DTR PIN_B7
  6. #use fast_io(A)
  7. #use fast_io(B)
  8. #use fast_io(C)
  9. #use fast_io(D)
  10. #use fast_io(E)
  11. #use delay (CLOCK=40000000)
  12. #use rs232 (BAUD=4800,XMIT=Tx,RCV=Rx)
  13. #BYTE porta = 0x05
  14. #BYTE portb = 0x06
  15. #BYTE portc = 0x07
  16. #BYTE portd = 0x08
  17. #BYTE porte = 0x09
  18.  
  19. void main(void)
  20. {
  21.    set_tris_a(0b11111111);
  22.    set_tris_b(0b11111111);
  23.    set_tris_c(0b10000001);
  24.    set_tris_d(0b00000000);
  25.    set_tris_e(0b11111111);
  26.    while(TRUE)
  27.    {
  28.                 if(input(DTR)!=0)
  29.                 {
  30.                         puts("$GPRMC,000023,V,1012.7449,N,06800.8782,W,0.0000,0.0,290697,9.6,W*5B");
  31.                         puts("$GPGGA,000023,1012.7449,N,06800.8782,W,0,00,546.66,649.47,M,-14.11,M,,*40");
  32.                         puts("$GPGSA,A,1,50,86,40,55,25,46,02,25,80,37,34,38,159.08,546.66,603.32*09");
  33.                         delay_ms(500);
  34.                 }
  35.    }
  36. }

Como verán el programa es muy sencillo, lo que hace es evaluar el estado de un pin (DTR), y mientras sea 1 envía tres cadenas de instrucciones NMEA, eso se repite cada medio segundo.

Ahora bien, la cosa es la siguiente:
Cuando simulo en proteus usando el "digital analysis" (por fin aprendí a usar esta herramienta, gracias a Pedro y a Miguel) se ve que está enviando los datos, pero cuando coloco el "virtual terminal" para que se vea los caracteres que estoy enviando, no se ve ni papita...

Aquí les dejo la captura de pantalla de lo que veo en proteus:



¿Qué les parece? Como les dije no muestra nada el terminal... qué será que está pasando?
He revisado varias veces la configuración y está correcta, los baudios coinciden con lo que tengo programado en el código.
Lo más curioso del caso es esto: pensé "un problema del proteus" y entonces lo monté en físico.
Pues lo que veo en la terminal que está enviando el pic es esto:



Caracteres sin sentido! También he revisado la configuración de la terminal y está correcta, a 4800 baudios.
¿Qué opinan ustedes? ¿Será que son demasiados caracteres para la instrucción "puts"? ¿Estoy cometiendo alguna otra burrada?  :?

De antemano agradezco sus respuestas.
Ok nos leemos!  :mrgreen: :D :D
« Última modificación: 31 de Mayo de 2008, 16:03:43 por firepic »
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas con la instrucción puts en ccs?
« Respuesta #1 en: 30 de Mayo de 2008, 17:39:56 »
Hola Fire

Y con printf si sale bien la trama?

Saludos
El papel lo aguanta todo

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas con la instrucción puts en ccs?
« Respuesta #2 en: 30 de Mayo de 2008, 17:54:18 »
Hola Fire

 :mrgreen: :mrgreen: :mrgreen: :mrgreen:

prueba con lo siguiente:
Código: [Seleccionar]
#use rs232 (BAUD=4800,XMIT=Tx,RCV=Rx, parity=N, bits=8)

A mi me simulo bien.

Saludos
El papel lo aguanta todo

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Problemas con la instrucción puts en ccs?
« Respuesta #3 en: 30 de Mayo de 2008, 18:42:39 »
Saludos miguel!
Pues la cosa es que la señal está saliendo, pero no la logro ver en la terminal del proteus...
Tú lograste ver todos los caracteres en la terminal? Cómo hiciste?  :?
Yo ya probé colocando lo que me dijiste en el #use rs232 y cambiando a printf y sigue igual...
Ok nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Problemas con la instrucción puts en ccs?
« Respuesta #4 en: 30 de Mayo de 2008, 19:02:32 »
Bueno cuando lo monté en físico cometí una gran burrada  :?
Estoy trabajando con un cristal de 20MHz y tenía en el código 4MHz... por eso me salían los caracteres raros... así que resuelto por ahí...

Pero fíjate que cambié a 20MHz en el código, y en "propiedades" del pic también le cambié a 20MHz y ahora se ven los caracteres en la terminal de proteus!
¿A qué se deberá eso? Con 4MHz proteus hace la simulación bien y se ve que está mandando los datos porque veo la señal con el análisis digital, pero no veo nada en la terminal... pero a 20MHz veo la señal en el análisis digital así como los caracteres en la terminal virtual. ¿Será que a proteus no le gusta 4MHz?  :D
Pues me he quedado con esa duda... por cierto que finalmente lo dejé con los puts, así envía de una vez toda la cadena y el salto de línea y retorno de carro.

Ok gracias por la ayuda miguel, ojalá algún experto que lea esto pueda explicar la razón de este inconveniente.
Nos leemos!  :mrgreen:
« Última modificación: 30 de Mayo de 2008, 20:11:34 por firepic »
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas con la instrucción puts en ccs?
« Respuesta #5 en: 30 de Mayo de 2008, 19:50:59 »
Hola Fire

Que sepa, el Proteus no toma los valores de los #fuses ni del oscilador, hay que cambiarselos en las propiedades del micro, creo que lo hace para facilitar la simulacion. Yo casi siempre he trabajado a XT y no me ha dado problema, pero simpre verifico que la frecuencia del micro sea la misma que la del programa y que las palabras de configuracion coincida con los #fuses, un poquitin mas de trabajo pero no me llevo sorpresas  :shock: :shock:

Saludos
El papel lo aguanta todo

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Problemas con la instrucción puts en ccs?
« Respuesta #6 en: 30 de Mayo de 2008, 20:13:35 »
Que sepa, el Proteus no toma los valores de los #fuses ni del oscilador, hay que cambiarselos en las propiedades del micro, creo que lo hace para facilitar la simulacion. Yo casi siempre he trabajado a XT y no me ha dado problema, pero simpre verifico que la frecuencia del micro sea la misma que la del programa y que las palabras de configuracion coincida con los #fuses, un poquitin mas de trabajo pero no me llevo sorpresas  :shock: :shock:
Totalmente de acuerdo contigo... por eso te digo que me sorprende... porque en las propiedades del micro y en el código tenía anteriormente 4MHz... y no andaba la terminal virtual... cuando cambié las propiedades del micro y el código a 20MHz ahora sí funciona...
Es medio raro eso...
Gracias por toda tu ayuda viejito...
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con la instrucción puts en ccs?
« Respuesta #7 en: 31 de Mayo de 2008, 02:49:23 »
No descartes que sea una de las rarezas de Proteus, que no tiene pocas.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
 :-/

Muy raro, muuuuuy raro ...... ay Proteus Proteus, sin el y con el, que mas se hace cierto?

Saludos
El papel lo aguanta todo

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Si te fijas bien en el código que colocaste en tu primer post no está declarado bien el



Código: [Seleccionar]
.
.
.

#use delay (CLOCK=40000000)
.
.
.

debería decir:
Código: [Seleccionar]
#use delay (CLOCK=4000000)

Es decir, tenés un cero de más.
NO era un problema de programa sino un problema de tipeo, :D




Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Problemas con la instrucción puts en ccs? (Listo! Más bien: error de tipeo)
« Respuesta #10 en: 31 de Mayo de 2008, 14:55:55 »
Saludos Pablo!
Pues tienes toda la razón. Se me fue una colitis de ceros  :D
Lo probé nuevamente cuidando de colocar sólo seis ceros y funcionó de lo lindo.
Gracias, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
 :D :D :D

Hombre Firepic!!!! y  yo lo simule fue a 40MHz!!!!!! y despues a 10MHz y a 4MHz !!!!!!!!! y en todos me dio!!!!!!! juajua

Saludos
El papel lo aguanta todo

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Problemas con la instrucción puts en ccs? (Listo! Más bien: error de tipeo)
« Respuesta #12 en: 31 de Mayo de 2008, 16:05:22 »
:D :D :D
Hombre Firepic!!!! y  yo lo simule fue a 40MHz!!!!!! y despues a 10MHz y a 4MHz !!!!!!!!! y en todos me dio!!!!!!! juajua
:D  :D  :D
Si era un error tontísimo. Bueno cosas que pasan. Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con la instrucción puts en ccs? (Listo! Más bien: error de tipeo)
« Respuesta #13 en: 31 de Mayo de 2008, 18:27:45 »
Bueno, pues por esta vez y sin que sirva de precedente, retiro lo dicho sobre Proteus  :mrgreen:

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Problemas con la instrucción puts en ccs? (Listo! Más bien: error de tipeo)
« Respuesta #14 en: 31 de Mayo de 2008, 18:34:42 »
Pos si, ni tú ni MLO ni yo nos dimos cuenta del tonto error que estaba cometiendo... y el pobre proteus no tenía la culpa de nada  :D
Bueno burradas que me salen a veces!  :?
Gracias de nuevo a pablo, que dió con el error!  :-/
Nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web