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:
#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#define Tx PIN_C6
#define Rx PIN_C7
#define DTR PIN_B7
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
#use fast_io(E)
#use delay (CLOCK=40000000)
#use rs232 (BAUD=4800,XMIT=Tx,RCV=Rx)
#BYTE porta = 0x05
#BYTE portb = 0x06
#BYTE portc = 0x07
#BYTE portd = 0x08
#BYTE porte = 0x09
void main(void)
{
set_tris_a(0b11111111);
set_tris_b(0b11111111);
set_tris_c(0b10000001);
set_tris_d(0b00000000);
set_tris_e(0b11111111);
while(TRUE)
{
if(input(DTR)!=0)
{
puts("$GPRMC,000023,V,1012.7449,N,06800.8782,W,0.0000,0.0,290697,9.6,W*5B"); puts("$GPGGA,000023,1012.7449,N,06800.8782,W,0,00,546.66,649.47,M,-14.11,M,,*40"); puts("$GPGSA,A,1,50,86,40,55,25,46,02,25,80,37,34,38,159.08,546.66,603.32*09"); delay_ms(500);
}
}
}
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!