Witam!
Od wczoraj siedze nad tym kodem i nie moge odebrac string'a w "calosci". Wysylanie pojedynczych znakow oraz calych tekstow dziala prawidlowo jak rowniez odbior pojedynczych znakow. Jednakze jak probuje odebrac string - nic z tego.
Ponizej zamieszczam kod:
Czy ktokolwiek widzi blad?
Od wczoraj siedze nad tym kodem i nie moge odebrac string'a w "calosci". Wysylanie pojedynczych znakow oraz calych tekstow dziala prawidlowo jak rowniez odbior pojedynczych znakow. Jednakze jak probuje odebrac string - nic z tego.
Ponizej zamieszczam kod:
#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
typedef unsigned char u08;
#define USART_BAUDRATE 57600
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
#define UART_MAX_GETSTR 100
#define BIN 2
#define OCT 8
#define DEC 10
#define HEX 16
//*========================================================*//
void UART_init(void) {
UCSRB |= (1 << RXEN) | (1 << TXEN);
UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1);
UBRRL = BAUD_PRESCALE;
UBRRH = (BAUD_PRESCALE >> 8);
}
//*========================================================*//
void UART_put_char(char c)
{
while ((UCSRA & (1 << UDRE)) == 0) {}
UDR = c;
}
//*========================================================*//
void UART_put_str (char *s)
{
register u08 c;
while ((c = *s++))
{
UART_put_char(c);
}
}
//*========================================================*//
void UART_put_str_new_line(void)
{
UART_put_char(0x0D);
UART_put_char(0x0A);
}
//*========================================================*//
void UART_put_int(int value, u08 radix)
{
char string[17];
itoa(value, string, radix);
UART_put_str(string);
}
//*========================================================*//
char UART_get_char(void)
{
while ((UCSRA & (1 << RXC)) == 0) {}
return UDR;
}
//*========================================================*//
void UART_get_str(char *s)
{
uint8_t i = 0;
uint8_t ch = 0;
do
{
ch = UART_get_char();
s[i] = ch;
i++;
} while ((ch != 10) && (ch != 13) && (i <= UART_MAX_GETSTR));
s[i - 1] = 0;
}
//*========================================================*//
int main (void)
{
char ReceivedString[100];
UART_init();
for (;;)
{
UART_get_str(ReceivedString);
UART_put_str_new_line();
UART_put_str_new_line();
UART_put_str(ReceivedString);
_delay_ms(5000);
}
}
//*========================================================*//Czy ktokolwiek widzi blad?