TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: frahous en 19 de Agosto de 2015, 23:30:55
-
Bueno ante todo un saludo, mi duda es si hay alguna forma de eliminar el ruido producido en un ttl, Tengo el gps mt3339 (alphamicrowireless.com/media/433544/gtop%20module%20application%20note%20-a00%20_mt3339%20series_.pdf) y el detalle es que trate de conectarlo al rx del pic18f2550 pero a un principio no pasaba nada, luego me di cuenta de que el gps trabajaba como maximo con 2.8 por lo que tube que tratar de amplificar el voltaje para lo cual utilice el 74hc08n y bueno me funciono pero a medias
Este es lo que en si deberia votar
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,000103.799,,,,,0,0,,,M,,M,,*4D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,000103.799,V,,,,,0.00,0.00,060180,,,N*47
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPGGA,000104.799,,,,,0,0,,,M,,M,,*4A
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,000104.799,V,,,,,0.00,0.00,060180,,,N*40
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
contenido de buffer: $GPGGA,000107.799,,,,,0,0,,,M,,M,,*49
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GPRMC,000107.799,V,,,,,0.00,0.00,060180,,,N*43
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
~X@VI–iF3Ô€¡â
contenido de buffer: $GPGGA,000107.799,,,,,0,0,,,M,,M,,*49
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00*79
$GPRMC,000107.799,V,,,,,0.00,0.00,060180,,,N*43
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
~X@VI–iF3Ô€¡â
El codigo esta echo en ccs
#include <18f2550.h>
#fuses hs,cpudiv1,nomclr
#use delay(clock=20000000)
#use rs232(baud=9600, parity=N, bits=8, xmit=PIN_C6, rcv=PIN_C7, stream=conexiongps)
#use rs232(baud=9600, parity=N, bits=8, xmit=PIN_A0, rcv=PIN_A1, stream=debug_gps)
char buffergps[400]="esto es una prueba \0";
int posicionbuffergps=0;
#int_rda
void rd_isr(void)//función de interrupción por recepción de datos USART
{
buffergps[posicionbuffergps] = fgetc(conexiongps);
posicionbuffergps++;
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
//setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);
output_high(PIN_B7);
fprintf(debug_gps,"contenido de buffer:");
// TODO: USER CODE!!
while(1)
{
if(posicionbuffergps>0)
{
buffergps[posicionbuffergps]='\0';
fprintf(debug_gps,"contenido de buffer: %s\r\n",bufferGPS);
posicionbuffergps=0;
}
}
}
de ante mano agradecere cualquier respuesta
-
Yo no veo que estes recibiendo mal, es mas estas recibiendo bien...
Si no entendi mal lo de arriba es lo que tenes que recibir, y lo de abajo es lo recibido. Yo veo todas las cadenas bien (comparandolas):
1ero: $GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
2do: $GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
1ero: $GPGGA,000103.799,,,,,0,0,,,M,,M,,*4D
2do: $GPGGA,000107.799,,,,,0,0,,,M,,M,,*49
$GPGGA,000107.799,,,,,0,0,,,M,,M,,*49
1ero: $GPRMC,000103.799,V,,,,,0.00,0.00,060180,,,N*47
2do : $GPRMC,000107.799,V,,,,,0.00,0.00,060180,,,N*43
Como ves son iguales, no les falta ningun caracter, solo que puede cambiar algun valor y su checksum. Pero aun asi me parece que tus datos llegan bien.
Te sugiero mirar por internet cual es el tamaño MAXIMO de un array en CSS, y que no sea ese tu problema.