Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
05.01.2011, 17:16
|
|
Прописка
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
|
Кольцевой буфер uart
приветствую!
стоит ли делать реализацию обмена данными по уарт (прием и отправка) с применением кольцевого буфера. необходимо принимать 15 чисел int с периодичностью 2-3 секунды.
спасибо.
|
|
|
|
05.01.2011, 17:32
|
|
Вид на жительство
Регистрация: 28.02.2009
Сообщений: 338
Сказал спасибо: 24
Сказали Спасибо 52 раз(а) в 48 сообщении(ях)
|
Re: кольцевой буфер uart
Сообщение от code-by
|
приветствую!
стоит ли делать реализацию обмена данными по уарт (прием и отправка) с применением кольцевого буфера. необходимо принимать 15 чисел int с периодичностью 2-3 секунды.
спасибо.
|
думаю, что стоит.
Только из исходного сообщения изъять слово "кольцевого".
|
|
|
|
05.01.2011, 17:44
|
|
Прописка
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
|
Re: кольцевой буфер uart
ок. а отправку тоже лучше делать через буфер или напрямую кидать в UDR и ждать отправки?
|
|
|
|
05.01.2011, 19:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: кольцевой буфер uart
Сообщение от code-by
|
ок. а отправку тоже лучше делать через буфер или напрямую кидать в UDR и ждать отправки?
|
Из Практики- ждать подтверждения( обратная посылка, и сравнивать- что отправилось-и пришло обратно) (просто скорость- располагает)
PS , Да - и про таймаут не забыть . а то- можно вечно ждать.
Последний раз редактировалось OlegNZH; 05.01.2011 в 19:46.
|
|
|
|
05.01.2011, 20:11
|
|
Вид на жительство
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
|
Re: кольцевой буфер uart
Таймаут надо расчитывать так -
Время передачи пакета + время на 80 тактов (вход выход из прерываний плюс резерв) процессора который должен прислать ответ.
Тоесть если проц который принимает данные работает на частоте 4 мегагерца а скорость UART=19200 то считаем так:
19200/10 = 1920 полных пакетов в секунду или же примерно 600 микросекунд на пакет
плюс 80 тактов делим частоту 80/4000000 = 20мкс
600+20 = 620 мкс максимально допустимой задержки.
Если за это время нет никакого ответа - то предпринимаем процедуру экстренного сброса или что там еще предусмотрено схемой.
Но 620 микросекунд это реально долго для того чтобы в холостую гонять проц циклом. Поэтому в прерывании по таймеру заводим рутину которая отследит истечение этого времени и запустит необходимый макрос.
__________________
Найди путь или проложи сам!
|
|
|
|
06.01.2011, 13:38
|
|
Прописка
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
|
Re: Кольцевой буфер uart
если в моей программе будут только передаваться числа размерностью int, лучше их передавать в виде символов (т.е. вместо 1 отправлять не 0x01, а 0x31 - код цирфы 1)?
стоит ли делать проверку по таймеру на прием, если пакеты и так идут каждые 2-3 секунды?
|
|
|
|
06.01.2011, 13:44
|
|
Прохожий
Регистрация: 13.09.2009
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Кольцевой буфер uart
Зачем такие сложности?
Это ведь нужно делать конвертацию числа в строку в микроконтроллере (?).
А на стороне приемника что у вас, вы не сказали.
Там нужно будет делать обратную конвертацию наверное?
Передавайте лучше ввиде char[2]. Только определитесь какой байт идет первым, старший или младший.
|
|
|
|
06.01.2011, 14:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Кольцевой буфер uart
››необходимо принимать 15 чисел int с периодичностью 2-3 секунды.
забыли написать, скорость обмена?
Вообще-то любой обмен делается в рамках протокола. Там описывается, что делать, если приняли не 15 байт подряд, а меньше, как проверять правильность сообщения, нужно ли подтверждение приёма и что делает источник, если подтверждения нет и т. д. Даже если у вас обмен между двумя вашими устройствами, в одну сторону и очень простой, протокол выработать стоит.
Нужен ли буфер. Нужен конечно, если вы обрабатываете сообщение из 15 байт. Пока не пришло всё сообщение, его надо где-то хранить. В буфере. Получили - начали обрабатывать. Пока обрабатываете, приходит новое сообщение. Или нет? нет - хватит 15-байтового буфера...
|
|
|
|
06.01.2011, 17:06
|
|
Прописка
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
|
Re: Кольцевой буфер uart
скорость от 9600 до 38400
|
|
|
|
07.01.2011, 10:28
|
|
Прохожий
Регистрация: 29.10.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Кольцевой буфер uart
Сообщение от code-by
|
если в моей программе будут только передаваться числа размерностью int, лучше их передавать в виде символов (т.е. вместо 1 отправлять не 0x01, а 0x31 - код цирфы 1)?
стоит ли делать проверку по таймеру на прием, если пакеты и так идут каждые 2-3 секунды?
|
Я только так понимаю размер int у вас 16 бит? Значит не 15 байт, а 30 байт? Тоесть не 0x01, 0x0001. Значит и посылать надо два байта 0x00, 0x01. Ну а если принимать, то надо два полученных байта старший и младший склеивать, чтоб получить int16
Последний раз редактировалось akphantom; 07.01.2011 в 10:31.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Инверсия uart в at89c52
|
sanek231081 |
Микроконтроллеры, АЦП, память и т.д |
2 |
04.01.2011 11:22 |
Симуляция UART для AVR studio
|
mm12345 |
Микроконтроллеры, АЦП, память и т.д |
0 |
22.11.2010 15:40 |
Подключение Siemens A52 по UART
|
serb-radio |
Микроконтроллеры, АЦП, память и т.д |
2 |
30.09.2010 07:15 |
Нужно 2 UART на мк , как быть?
|
Zemlyanov |
Микроконтроллеры, АЦП, память и т.д |
77 |
04.05.2010 19:26 |
Нужна простая библиотечка программного UART на С
|
DK |
Микроконтроллеры, АЦП, память и т.д |
7 |
08.04.2010 06:01 |
Часовой пояс GMT +4, время: 00:15.
|
|