TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: Algec en 05 de Agosto de 2005, 03:59:00

Título: problemas con modulos Aureal RF
Publicado por: Algec en 05 de Agosto de 2005, 03:59:00
Estoy sustituyendo una comunicacion IR por RF con modulos aural, pero lo que funcionaba en IR no lo hace en RF
Los datos llegan al receptor pero no los interpreta bien y no lo gro averiguar porque.
Pego el codigo a ver si alguien sabe que ocurre
El post tambien esta en el foro de C por si el fallo es de Software

EMISOR

#include <16F84.H>
#use delay(clock=1000000)
#fuses XT,NOWDT

// define el puerto serie como 100 Baudios 8 bits sin paridad y
// salida por pin RB0 y entrada de datos por pin RB5
// la entrada de datos no se usa

#use RS232(BAUD=100, BITS=8, PARITY=N, XMIT=PIN_B0, RCV=PIN_B5)


// el emisor usa la entrada RB3 como deteccion de puesta en marcha y paro
// la salida RB0 es la salida de datos al equipo RF

// Rutina de retardo en segundos

void delay_seconds(int n)
{
for (;n!=0; n--)
delay_ms( 1000 );
}


//*********************
// PROGRAMA PRINCIPAL *
//*********************

void main()
{
set_tris_b(0xf0);
delay_seconds(2);
While(1)
{
// el retardo se usa para no estar enviando permanentemente en mensaje y conservar la bateria del emisor
// si esta activa RB3 envia por el puerto E
// si RB3 esta a cero envia por el puerto A
if(input(PIN_B3))
{
putc("E");
}
else
{
putc("A");
}
}
}


RECEPTOR


#include <16F84A.H>
#use delay(clock=1000000)
#fuses XT,NOWDT,PUT

// define el puerto serie como 300 Baudios 8 bits sin paridad y
// salida por pin RB0 y entrada de datos por pin RB6

#use RS232(BAUD=100, BITS=8, PARITY=N, XMIT=PIN_B1, RCV=PIN_B5)

// la entrada RB5 como entrada de datos del receptor
// la salida RA1 sera la que active el rele




void main(){

set_tris_b(0x100000000);
set_tris_a(0xff);

output_high(PIN_B0); // enciende el led

While(1)
{
while(!kbhit())
{
switch(getch())
{
case "E":
output_high(PIN_A1);
output_low(PIN_B0); // si le llegan datos parpadea el led 1/2 seg
delay_ms(500);
output_high(PIN_B0);
break;
case "A":
output_low(PIN_A1);
output_low(PIN_B0);
delay_ms(500);
output_high(PIN_B0); // si le llegan datos parpadea el led
break;
}
}
}
}