реклама на сайте
подробности

 
 
> Прием данных USART, пропускаю данные из за переполнения
messenger
сообщение Jan 18 2012, 12:56
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



Из заособенностей работы ответной стороны принял решение не использовать перывания USART
контроллер ATMega 64
скорость 4800
COM1
CodeVision AVR
используются перывания только от таймера Т1(16bit) где Т1 останавливается и флаг RxTimOvf=1 (по умолчанию 0)

Проблема передаю с ПК посылку 123456, принимаю 126
передаю с ПК посылку 123456789, принимаю 129
флаг DOR говорит о переполнении буфера приемника, т.е. данные вовремя не считались?Почкму так?

#define FRAMING_ERROR_1 (1<<FE1)
#define PARITY_ERROR_1 (1<<UPE1)
#define DATA_OVERRUN_1 (1<<DOR1)
#define DATA_REGISTER_EMPTY_1 (1<<UDRE1)
#define RX_COMPLETE_1 (1<<RXC1)


void READ_MASS_RS_1()
{
char status, data;
flag_stop_timer=0;
flag_eroor_rs=0;
RxTimOvf=0;

for (temp_1_i=0;temp_1_i<22;temp_1_i++)
{reading_mass_rs_1[temp_1_i]=0;} //Обнуление массива

// Reinitialize Timer1 value
TIMSK=(0<<TOIE1); // запретить прерывание от счетчика № T1
TCNT1H=0x00;TCNT1L=0x00; //Таймаут max для Т1
TIMSK=(1<<TOIE1); // разрешить прерывание от счетчика № T1

for (temp_1_i=0;temp_1_i<20;temp_1_i++)
{

while ((((status=UCSR1A) & RX_COMPLETE_1)==0)&& RxTimOvf==0);
data=UDR1;
if (RxTimOvf ==0) //Есть данные, И если тайм-аут НЕ истек "заходим"
{

if ((status & (FRAMING_ERROR_1| PARITY_ERROR_1 | DATA_OVERRUN_1)==0) && (RxTimOvf ==0))
{reading_mass_rs_1[temp_1_i]=data;}
else
{ flag_eroor_rs=1;//При чтении пакета были ошибки }

}

}




for (temp_1_i=0;temp_1_i<22;temp_1_i++)
{putchar1(reading_mass_rs_1[temp_1_i]);} //Смотрим что пришло

}

Сообщение отредактировал messenger - Jan 18 2012, 13:28
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
messenger
сообщение Jan 19 2012, 16:11
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



сделал "2. Данные принимаются с ошибкой. Чтобы проверить последнее следует либо проинициализировать массив reading_mass_rs_1 неким значением, отличным от нуля (например, символом 'X'). либо сохранять значение принятого байта, несмотря на ошибку в status (он же - UCSR1A). "

никому не сказал. Извините. буфер не обнуляю а забиваю иксами

опрашивать USART всегда ен могу. Нужно еще обрабатывать принятое
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- messenger   Прием данных USART   Jan 18 2012, 12:56
- - Палыч   Возможно: 1. Ошибка в функции putchar1 2. Данные ...   Jan 18 2012, 13:27
|- - messenger   Цитата(Палыч @ Jan 18 2012, 16:27) Данные...   Jan 18 2012, 13:43
|- - Палыч   Цитата(messenger @ Jan 18 2012, 17:43) Да...   Jan 18 2012, 15:30
- - messenger   если исключить из условия проверку на переполнение...   Jan 18 2012, 16:06
|- - Палыч   Цитата(messenger @ Jan 18 2012, 20:06) ес...   Jan 18 2012, 16:19
- - messenger   129 принимает   Jan 18 2012, 16:45
|- - Палыч   Приведите код инициализации таймера и процедуру об...   Jan 18 2012, 17:21
- - messenger   // Timer/Counter 1 initialization // Clock source:...   Jan 18 2012, 18:54
|- - Палыч   Маленькая ошибочка при определении тайм-аута. В фу...   Jan 18 2012, 19:59
|- - _Артём_   Цитата(messenger @ Jan 18 2012, 20:54) TI...   Jan 18 2012, 20:42
|- - =GM=   1. Как вы синхронизируете начало таймаута и начало...   Jan 18 2012, 21:00
- - messenger   "перед разрешением прерывания от таймера необ...   Jan 19 2012, 04:00
|- - Палыч   Цитата(messenger @ Jan 19 2012, 08:00) .....   Jan 19 2012, 05:26
|- - =GM=   Цитата(messenger @ Jan 19 2012, 04:00) а ...   Jan 19 2012, 08:07
- - messenger   Спасибо большое всем за ответы! Прошу поясните...   Jan 19 2012, 13:27
|- - Палыч   Про синхронизацию Из того материала, что Вы предо...   Jan 19 2012, 15:07
|- - =GM=   Какая у вас тактовая частота процессора?   Jan 19 2012, 15:23
- - messenger   я к сожалению до сих пор не исправил описанные вче...   Jan 19 2012, 15:25
|- - =GM=   Не понимаю, как вы посылаете 123456 и в приёмном б...   Jan 19 2012, 16:00
- - _Ivana   А модно дилетанту встрять? Если я правильно ва...   Jan 19 2012, 15:42
- - _Ivana   Цитатаопрашивать USART всегда ен могу. Нужно еще о...   Jan 19 2012, 16:20
- - messenger   Прошу еще помощи Вот что я сделал на данный момент...   Jan 20 2012, 14:39
|- - Палыч   Цитата(messenger @ Jan 20 2012, 18:39) ес...   Jan 20 2012, 15:43
|- - =GM=   Никак вы не хотите расстаться с порочной конструкц...   Jan 21 2012, 08:55
- - messenger   значит я правильно понял где ошибка, но почему не...   Jan 20 2012, 15:52
|- - Палыч   Цитата(messenger @ Jan 20 2012, 19:52) зн...   Jan 20 2012, 16:25
- - messenger   Да мне их не нужно складывать. Просто проигнориров...   Jan 20 2012, 20:47
|- - Палыч   Цитата(messenger @ Jan 21 2012, 00:47) Пр...   Jan 21 2012, 04:54
- - messenger   while (((status & (FRAMING_ERROR_1 | PARITY_E...   Jan 21 2012, 08:08
- - messenger   Мне нравится. Я Вас сразу не понял.Думал повиснет....   Jan 21 2012, 09:19


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 14:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016