Me olvide lo importante, el operador &
Es así por ejemplo:
*((char)&Data+1)
Agregarle a todos. Disculpas.
Saludos!
Finalmente en la simulacion de proteus va bien con este codigo:
codigo emisor:
#include <16f88.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOLVP,NOWRT,NODEBUG,NOMCLR
#use delay(internal=8M)
#use rs232(baud=38400,xmit=PIN_B5,rcv=PIN_B2)
#use fast_io(a)
#use fast_io(b)
#define LCD_DB4 PIN_A0
#define LCD_DB5 PIN_A1
#define LCD_DB6 PIN_A7
#define LCD_DB7 PIN_A6
#define LCD_RS PIN_B7
#define LCD_E PIN_B6
#include "flex_lcd420.c"
void main(){
float Data;
set_tris_a(0b00000000);
set_tris_b(0b00000000);
setup_adc_ports(NO_ANALOGS);
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc("Inicio Bluetooth"));
delay_ms(2000);
while(1){
Data=2.6;
putc(*((char *)&Data));
putc(*((char *)&Data+1));
putc(*((char *)&Data+2));
putc(*((char *)&Data+3));
delay_ms(1000);
}
}
codigo receptor:
#include <16f88.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOLVP,NOWRT,NODEBUG,NOMCLR
#use delay(internal=8M)
#use rs232(baud=38400,xmit=PIN_B5,rcv=PIN_B2)
#use fast_io(b)
#use fast_io(a)
#define LCD_DB4 PIN_A0
#define LCD_DB5 PIN_A1
#define LCD_DB6 PIN_A2
#define LCD_DB7 PIN_A3
#define LCD_RS PIN_A4
#define LCD_E PIN_A6
#include "flex_lcd.c"
int kbhit_data_serial;
float Data;
#int_rda //vector de interrupción al recibir por la UART
RDA_isr(){
*((char *)&Data)=getc();
*((char *)&Data+1)=getc();
*((char *)&Data+2)=getc();
*((char *)&Data+3)=getc();
kbhit_data_serial=1;
}
void main(){
setup_adc_ports(NO_ANALOGS);
set_tris_a(0x00);
set_tris_b(0b00000100); // Rx entrada
output_b(0x00);
output_a(0x00);
lcd_init();
enable_interrupts(INT_RDA); //habilita interrupción por recepción
enable_interrupts(global);
while(1){
if(kbhit_data_serial==1){
kbhit_data_serial=0;
lcd_gotoxy(1,1);
printf(lcd_putc,"\fRecibiendo %01.2f",Data);
}
}
}
En proteus envia bien el float pero cuando monto el hardware solo se ve en la lcd receptora 0.00.
El envio se hace atraves de un bluetooth BTM-5 que lleva la conexion rs232 ya incluida y con los pines listos para utilizar. En principio si en proteus va bien deberia funcionar con el hardware real.
Es posible que el bluetooth codifique los datos de algun modo?. segun el manual es comunicacion rs232 con lo que tendria que funcionar.