Datasheet
// Pass pointers to UART functions of used UART module
UART_Wr_Ptr = UART1_Write;
UART_Rd_Ptr = UART1_Read;
UART_Rdy_Ptr = UART1_Data_Ready;
UART_TX_Idle = UART1_TX_Idle;
UART1_Init(9600); // initialize UART1 module
Delay_ms(100);
RS485Slave_Init(160); // Intialize MCU as Slave, address 160
dat[4] = 0; // ensure that message received flag is 0
dat[5] = 0; // ensure that message received flag is 0
dat[6] = 0; // ensure that error flag is 0
SREG_I = 1; // enable global interrupt
RXCIE = 1; // enable interrupt on usart receive
while (1) {
if (dat[5]) { // if an error detected, signal it by
PORTC = dat[5]; // setting PORTC
dat[5] = 0;
}
if (dat[4]) { // upon completed valid message receive
dat[4] = 0; // data[4] is set to 0xFF
j = dat[3];
for (i = 1; i <= dat[3];i++){ // show data on PORTB
PORTB = dat[i-1];
}
dat[0] = dat[0]+1; // increment received dat[0]
Delay_ms(1);
RS485Slave_Send(dat,1); // and send it back to Master
}
}
}
399
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroC PRO for AVR
CHAPTER 6