Quiero enviar datos a atmega 2560 desde mi computadora portátil usando dos Xbee S2C.
- El primer Xbee, llamémoslo A, se debe conectar con la computadora portátil.
- El segundo Xbee, llamémoslo B, se conectará con el atmega 2560.
Quiero saber cómo configurar estos Xbees para que se comuniquen entre sí . Soy un principiante, solo sé algunas cosas:
- El Xbee A se conectará con la computadora portátil mediante el adaptador USB Xbee, que facilitará la comunicación UART entre la computadora portátil y Xbee A.
- El Xbee B se conectará con el Atmega2560 al proporcionarle potencia al Xbee B y conectar los Tx y Rx del microcontrolador al del Xbee B. Estos dos se comunicarán a través de UART.
Tampoco tengo claro que el pin Tx y Rx del controlador se conectará al pin Tx y Rx de Xbee B respectivamente o al revés . Por favor guíe.
Aquí está el código que estoy grabando en Atmega 2560, inicialmente para encender / apagar un led en PB6
#define F_CPU 14745600
#include<avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>
unsigned char data; //to store received data from UDR1
//Function to initialize ports
void port_init()
{
DDRB = 0x40;
}
//Function To Initialize UART0
// desired baud rate:9600
// actual baud rate:9600 (error 0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
// UBRR0L = 0x47; //11059200 Hz
UBRR0L = 0x5F; // 14745600 Hzset baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x98;
}
ISR(_VECTOR(26)) // ISR for receive complete interrupt
{
data = UDR0; //making copy of data from UDR0 in 'data' variable
UDR0 = data; //echo data back to PC
if(data == 0x37)
PORTB = 0x00;
if(data == 0x39)
PORTB = 0x40;
}
//Function To Initialize all The Devices
void init_devices()
{
cli(); //Clears the global interrupts
port_init(); //Initializes all the ports
uart0_init(); //Initailize UART0 for serial communiaction
sei(); //Enables the global interrupts
}
//Main Function
int main(void)
{
init_devices();
while(1);
}