Tengo un problema de comunicación. Utilizo para la conexion serial un modulo de radiofrecuencia.
Cuando transmito cualquier caracter como un 0, labview lo ve como otro caracter distinto, en el caso de 0 un "ö".
El modulo de RF utiliza el flujo de control por Hardware. Por lo que utilizo el pin 8 del puerto serie (Clear to send) en una entrada para enviar una cadena y consigo el mismo resultado que sin utilizarlo.
#include <18F4550.h>
#fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN //NOMCLR, PIN UTILIZADO PARA SABER SI ESTA CONECTADO POR USB
#use delay(clock=48000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8)
//Variables globales
int8 i;
int8 valor;
#int_rda
void rda_isr(){
i++;
valor=getc();
}
////////////////////////////////////////////////////
void main(void) {
int8 j; //bucles
set_tris_d(0x00);
set_tris_a(0xff);
set_tris_b(0b01111111);
setup_adc_ports(AN0_to_AN11); // Asigna el conversor A/D
setup_adc(ADC_CLOCK_DIV_64); // Asigna la velocidad
output_d(0xff); //limpia registros de salida
output_high(pin_c0);
disable_interrupts(int_ext);
disable_interrupts(GLOBAL);
enable_interrupts(int_ext);
enable_interrupts(int_rda);
enable_interrupts(global);
while(1){
delay_ms(50);
output_high(pin_d0);
delay_ms(50);
if(input(PIN_B5)==0){
printf ("0000000");
output_low(pin_d0);
}
}
}
Cuando transmito cualquier caracter como un 0, labview lo ve como otro caracter distinto, en el caso de 0 un "ö".
El modulo de RF utiliza el flujo de control por Hardware. Por lo que utilizo el pin 8 del puerto serie (Clear to send) en una entrada para enviar una cadena y consigo el mismo resultado que sin utilizarlo.
#include <18F4550.h>
#fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN //NOMCLR, PIN UTILIZADO PARA SABER SI ESTA CONECTADO POR USB
#use delay(clock=48000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8)
//Variables globales
int8 i;
int8 valor;
#int_rda
void rda_isr(){
i++;
valor=getc();
}
////////////////////////////////////////////////////
void main(void) {
int8 j; //bucles
set_tris_d(0x00);
set_tris_a(0xff);
set_tris_b(0b01111111);
setup_adc_ports(AN0_to_AN11); // Asigna el conversor A/D
setup_adc(ADC_CLOCK_DIV_64); // Asigna la velocidad
output_d(0xff); //limpia registros de salida
output_high(pin_c0);
disable_interrupts(int_ext);
disable_interrupts(GLOBAL);
enable_interrupts(int_ext);
enable_interrupts(int_rda);
enable_interrupts(global);
while(1){
delay_ms(50);
output_high(pin_d0);
delay_ms(50);
if(input(PIN_B5)==0){
printf ("0000000");
output_low(pin_d0);
}
}
}