Расчет времени передачи/приема сообщения по UART?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

Исходные данные:

Скорость обмена BOUND=10402 бит/сек
Фрейм : FRAME=10 бит (1 старт бит, 8 данных бит, 1 стоп бит)
Межбайтовый интервал MINT =10 мкC.
(рекомендовано мах 10 микросекунд)
Количество байт в нашем запросе N=10 байт

Как расчиталь время необходимое для передачи сообщения
при условии ,что мы используем обработчик прерывания UART?
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

А зачем надо рассчитывать время, если можно проверять флаг завершения передачи?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула

Сообщение Neekeetos »

FUZZY_ писал(а):Исходные данные:

Скорость обмена BOUND=10402 бит/сек
Фрейм : FRAME=10 бит (1 старт бит, 8 данных бит, 1 стоп бит)
Межбайтовый интервал MINT =10 мкC.
(рекомендовано мах 10 микросекунд)
Количество байт в нашем запросе N=10 байт

Как расчиталь время необходимое для передачи сообщения
при условии ,что мы используем обработчик прерывания UART?
10байт * 10 бит_на_байт / 10402(битовая скорость)
в компорте присутствуют стоповые и стартовые биты для того чтоб можно было непрерывно передавать байты не нарушая кадровой синхронизации в том числе.
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 782
Зарегистрирован: Вс фев 04, 2007 16:32:06

Сообщение yaotzin »

1 байт информации передается используя 10 бит, 10байт это 80 бит плюс 10*2бита=20бит стартовые и стоповые биты, всего передается 100бит


10402бит
_______ = 10.402бита за 1мс передается
1000мс

значит 100бит/10.402=9.6135358584887521630455681599692 мс на передачу 100 бит = 0.009613535858488752163045568159969 сек

+ мейбайтовый интервал 0.00001 сек * 10 = 0.0001сек + 0.009613535858488752163045568159969 сек = 0.009713535858488752163045568159969 сек на передачу всего.
Последний раз редактировалось yaotzin Сб янв 16, 2010 13:37:58, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

yaotzin писал(а):... всего передается 100бит
10.402бита за 1мс передается
Тут почти правильно 10 байт передаются за 9,6 мс.
yaotzin писал(а):значит .... = 1.0403 сек на передачу всего.
Это уже слишком, потянет на передау 10000 байт;)
А вобще автору вопрос, МК принимает или передает? В чем затык?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 782
Зарегистрирован: Вс фев 04, 2007 16:32:06

Сообщение yaotzin »

Meteor писал(а):
yaotzin писал(а):... всего передается 100бит
10.402бита за 1мс передается
Тут почти правильно 10 байт передаются за 9,6 мс.
yaotzin писал(а):значит .... = 1.0403 сек на передачу всего.
Это уже слишком, потянет на передау 10000 байт;)
А вобще автору вопрос, МК принимает или передает? В чем затык?
виноват, жрать звали спешил :)))
Реклама
Опытный кот
Аватара пользователя
Сообщения: 782
Зарегистрирован: Вс фев 04, 2007 16:32:06

Сообщение yaotzin »

зато у меня точнее :)))
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Конечно, хотелось бы сначала в общих чертах понять, чего автору надо? :roll:
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

Aheir писал(а):Конечно, хотелось бы сначала в общих чертах понять, чего автору надо? :roll:
Есть "удаленный" МК который обрабатывает наши запросы.

прием- передачу обрабатывает прерывание UART.

суть задачи в том что мы делаем запрос и ставим тамер на время поной обработки если время истекло то читаем результат .

А на время обработки приема -передачи делаем что-то другое.

Поное время=время передачи нашего сообщения+время обработки сервером+время передачи ответа

Если в отведеное время ответ не пришел то ошибка канала приема - передачи.


Итак из приведеного выше общая формула расчета:

t(sec)=( FRAME/BOUND+MINT )*N.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18859
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

сроду никто не ведет прием по тайсмеру ожидания! по таймеру ведут сброс уже принятого, если время ожидания превышает разумные пределы, но никак не наоборот!!! представьте себе, что передающая сторона какими-то проблемами задержится и передаст пакет с межкадровым промежутком 20 мс? что обработает ваш приемник?! пургу.

есть классические алгоритмы, не изобретайте велосипед с тремя педалями!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

ARV писал(а):сроду никто не ведет прием по тайсмеру ожидания! по таймеру ведут сброс уже принятого, если время ожидания превышает разумные пределы, но никак не наоборот!!! представьте себе, что передающая сторона какими-то проблемами задержится и передаст пакет с межкадровым промежутком 20 мс? что обработает ваш приемник?! пургу.

есть классические алгоритмы, не изобретайте велосипед с тремя педалями!

++++.........----------***

+ -время нашей передачи
. - обработка нашего запроса
- - передача ответа
* - защитный интервал

** - тут я читаю ответное сообщение
Если мы спросили у сервера временные параметры обмена то никак он не может выйти за пределы "окна" там будут отвечать другие МК

Или я че-то не понял?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18859
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

вы умудряетесь так задать вопрос, что лично я не понимаю, чего вы хотите.

на всякий случай повторю свою мысль: никогда нельзя рассчитывать, что спустя некоторое время в вашем приемном буфере окажется полностью принятый пакет данных. наоборот, нужно обязательно вводить определенный интервал ожидания приема пакета, и, если за это время пакет целиком не принят, сбрасывать все, что принято к этому моменту (тайм-аут). конец пакета надо определять не по времени, а как-то иначе, например, по завершающему коду пакета, по количеству принятых байт и т.д. - но не по времени ожидания!!!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Сообщение FUZZY_ »

bit Receive(unsigned char n, unsigned char Ecv)
{
unsigned long PAUSE_Timer;
PAUSE_Timer=TIMER+n*(1000/DIV);
for(;;)
{
Start_UART_Rx(); // Разрешаем прием сообщения от .
while((is_Timer_Count()) && (is_UART_Rx_Busy())) IDLE();
if(is_Timer_Stopt()) return ERROR;
if((is_UART_Rx_Ready()) && (Message[0] == Ecv)) return OK;
}
}


void Transmit(unsigned char n)
{
DogOn;
Start_UART_Tx(n);
while(is_UART_Tx_Busy()) IDLE();

}

Что-то типа так (там где кот";)")
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»