Estoy tratando de enviar datos de forma inalámbrica a través de un par de transmisor / receptor RF433Hz, pero nada parece querer funcionar. Quiero que el transmisor envíe continuamente un número (0x81) al receptor cuando presiono un botón bajo activo, Espero ver Ox81 en el lado del receptor pero no lo veo.
int main( void )
{
//initializeUART ( BAUD , DoubleAsync, DataBitLength, Parity, Stopbits )
iniUSART0( 1200 , 0 , 8 , 0 , 2 );
//Code for transmitter
if(Transmitter)
{
DDRA = 0xff;
while(1){
if( bit_is_clear(PINB, 0) )
{
data = 0x81;
TransmitData(data);
PORTA = 0x81;
}
}
}
//Code For receiver
if(Receiver)
{
DDRA = 0xff;
while(1)
{
while(!flag)
{
data = ReceiveData();
PORTA = data;
}
}
}
Los métodos se han colocado en un archivo de encabezado separado y se pueden ver a continuación
unsigned char ReceiveData(void)
{
while ( ! UCSR0A & ( 1 << RXC0)) //Check if there ids data waiting for you
{
}
return UDR0; //return data
}
void TransmitData( unsigned char data)
{
while( !UCSR0A & ( 1 << UDRE0)) //Check if uC is ready to transmit
{
}
UDR0 = data; //Transmit Data
}
void iniUSART0(int baud, char doubleAsync, char dataLength, char parity, char numberOfStopBits)
{
int UBRR_Value = lrint ( (F_CPU / (16L * baud)) - 1 );
UBRR0H = (unsigned char) (UBRR_Value >> 8); //Upper Baud number
UBRR0L = (unsigned char) UBRR_Value; //Put remainder in lower bits
//Enable reception and transmission
UCSR0B |= (unsigned char) (1 << RXEN0) | (1 << TXEN0);
if(numberOfStopBits == 2)
{
UCSR0C |= (1 << USBS0);
}
else
{
UCSR0C &= ~(1 << USBS0);
}
//Use an 8-Bit length data bit
UCSR0C |= (unsigned char) (1 << UCSZ00);
//Double Asynchronous mode?
if(doubleAsync) UCSR0A |= (1 << U2X0);
//Set the data bit length
if ( dataLength == 6) UCSR0C |= ( 1 << UCSZ00 );
if ( dataLength == 7) UCSR0C |= (1 << UCSZ10);
if ( dataLength == 8) UCSR0C |= (1 << UCSZ10) | (1 << UCSZ00);
if(parity == 2)UCSR0C |= (1 << UPM10); //Sets parity to EVEN
if(parity == 1)UCSR0C |= (1 << UPM10) | (1 << UPM00); //Sets parity
to ODD
}