potrzebuje przerwania, które w momencie pojawienia się impulsu na Rx odbierze stringa, zdekoduje a następnie wywołała funkcje.
Ale nie wiem, które przerwanie z tej strony do tego użyc: http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html
do obsługi UARTA używam następujących funkcji
Ale nie wiem, które przerwanie z tej strony do tego użyc: http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html
do obsługi UARTA używam następujących funkcji
void USART_Transmit( unsigned char data )
{
while ( !( UCSRA & (1<<UDRE)) ); // Wait for empty transmit buffer
UDR = data; // Put data into buffer, sends the data
}
unsigned char USART_Receive( void )
{
while ( !(UCSRA & (1<<RXC)) ); // Wait for data to be received
return UDR; // Get and return received data from buffer
}
void USART_Init( unsigned long int ubrr )
{
UBRRH = (unsigned char)(ubrr>>8); // Set baud rate
UBRRL = (unsigned char)ubrr;
UCSRB = (1<<RXEN)|(1<<TXEN); // Enable Receiver and Transmitter
UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0); // Set frame format: 8data, 1stop bit
}
void send_string(const char *tekst)
{
while(*tekst)
USART_Transmit(*tekst++);
}
void receive_string(void)
{
unsigned char i=0;
do
{
if((bufor[i] = USART_Receive()) == '\n') break;
i++;
}while(i < 32); //zeby nie przepelnic bufora
}