Через терминал (например ГиперТерминал) набираю слово, затем жму 'Enter' и он мне должен вернуть это же слово.
С символом все просто, а вот с массивами никак. Он возвращает, но зараза возвращает слово без первого элемента, например, пишу "Privet", а он мне "rivet". Дело в том, что у него в массиве нулевой элемент почему-то r, а не P. Помогите чем можете. Если не в ту тему, то извиняюсь.
Код:
Код: Выделить всё
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define XTAL 3686400L //Задал частоту
#define baudrate 9600L //Скорость
#define bauddivider (XTAL/(16*baudrate)-1)
unsigned char c[255]; //Создаю функцию, в которой данные UDR переписываются в массив c[] (буфер)
void read ()
{
unsigned char i;
for (i=0;i<255;i++)
{
if (UDR =='\n')
return;
else
while (!(USR&(1<<RXC)));
c[i] = UDR;
}
}
void write (char *t) //создаю функцию, в которой из буфера скидываю в UDR на отправку
{
unsigned char i;
for (i=0;i<255;i++)
{
if (t[i]==0)
return;
else
while (!(USR&(1<<UDRE)));
UDR = t[i];
}
}
ISR (UART_RX_vect)
{
read ();
write(c);
}
int main (void)
{
UCR = 1<<RXEN|1<<TXEN|1<<RXCIE|0<<TXCIE;
UBRR = bauddivider;
sei();
while (1)
{
}
return 0;
}

