Помогите разобратся, плз.
Помогите разобратся, плз.
Я не имею понятия как создавать массив из полученных данных,(по идее все это надо в ОЗУ пихать) и из ОЗУ на передачу, а как через LPM можно это провернуть или есть варианты???Aheir писал(а):Строить другой массив из принятых данных, видимо...
Код: Выделить всё
/* Если буфер полон, то возвращаем ошибку (-1) */
if(t==bbuf){return(-1);}
/* Помещаем данные в массив */
cycl_buf[ebuf] = c;
Код: Выделить всё
/* Если буфер полон, то завершаем выполнение
функции и возвращаем ошибку (-1) */
if (t == bbuf) {
return(-1);
}
/* Сюда попадем если буфер не полон */
/* Помещаем данные в массив */
cycl_buf[ebuf] = c;
Он не всегда нужен. Но если приход данных и их обработка асинхронны - то нужен.Dmitro писал(а):я не совсем понимаю, зачем нужен циклический буфер, ведь я в программе указываю, что как прийдет такой символ "0d", то его принять и уйти на побайтное сравнение принятых данных с массивом из памяти программ, а там по обстаятельствам...
Объясните зачем он нужен, чтобы я велосипед не изобретал
Да.Dmitro писал(а):если я попытаюсь считать регистр данных по прерыванию "прием окончен", будет ли это означать, что в регистре UDR, уже находятся данные
Скорее всего - в коде.сергей111 писал(а):Извините, смотрел поиском, но все равно не работает...
main:
;прием по usart
in temp,ucsr0a
sbrs temp,rxc0
rjmp (pc-2)
out portc,temp ;здесь отображается на индикаторе принимаемое значение
rjmp main
Посмотрите листинг пожалуйста, вдруг проблема не коде, а на аппаратном уровне (в схеме).
Код: Выделить всё
in temp, UDR0Код: Выделить всё
lds temp, UDR0