Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 05.01.2011, 17:16   #1
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию Кольцевой буфер uart

приветствую!
стоит ли делать реализацию обмена данными по уарт (прием и отправка) с применением кольцевого буфера. необходимо принимать 15 чисел int с периодичностью 2-3 секунды.
спасибо.
Реклама:
code-by вне форума  
Непрочитано 05.01.2011, 17:32   #2
vsky
Вид на жительство
 
Регистрация: 28.02.2009
Сообщений: 338
Сказал спасибо: 24
Сказали Спасибо 52 раз(а) в 48 сообщении(ях)
vsky на пути к лучшему
По умолчанию Re: кольцевой буфер uart

Сообщение от code-by Посмотреть сообщение
приветствую!
стоит ли делать реализацию обмена данными по уарт (прием и отправка) с применением кольцевого буфера. необходимо принимать 15 чисел int с периодичностью 2-3 секунды.
спасибо.


думаю, что стоит.

Только из исходного сообщения изъять слово "кольцевого".
vsky вне форума  
Непрочитано 05.01.2011, 17:44   #3
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию Re: кольцевой буфер uart

ок. а отправку тоже лучше делать через буфер или напрямую кидать в UDR и ждать отправки?
code-by вне форума  
Непрочитано 05.01.2011, 19:43   #4
OlegNZH
Почётный гражданин KAZUS.RU
 
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: кольцевой буфер uart

Сообщение от code-by Посмотреть сообщение
ок. а отправку тоже лучше делать через буфер или напрямую кидать в UDR и ждать отправки?
Из Практики- ждать подтверждения( обратная посылка, и сравнивать- что отправилось-и пришло обратно) (просто скорость- располагает)

PS , Да - и про таймаут не забыть . а то- можно вечно ждать.

Последний раз редактировалось OlegNZH; 05.01.2011 в 19:46.
OlegNZH вне форума  
Непрочитано 05.01.2011, 20:11   #5
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: кольцевой буфер uart

Таймаут надо расчитывать так -
Время передачи пакета + время на 80 тактов (вход выход из прерываний плюс резерв) процессора который должен прислать ответ.

Тоесть если проц который принимает данные работает на частоте 4 мегагерца а скорость UART=19200 то считаем так:

19200/10 = 1920 полных пакетов в секунду или же примерно 600 микросекунд на пакет

плюс 80 тактов делим частоту 80/4000000 = 20мкс

600+20 = 620 мкс максимально допустимой задержки.
Если за это время нет никакого ответа - то предпринимаем процедуру экстренного сброса или что там еще предусмотрено схемой.

Но 620 микросекунд это реально долго для того чтобы в холостую гонять проц циклом. Поэтому в прерывании по таймеру заводим рутину которая отследит истечение этого времени и запустит необходимый макрос.
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
Непрочитано 06.01.2011, 13:38   #6
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию Re: Кольцевой буфер uart

если в моей программе будут только передаваться числа размерностью int, лучше их передавать в виде символов (т.е. вместо 1 отправлять не 0x01, а 0x31 - код цирфы 1)?

стоит ли делать проверку по таймеру на прием, если пакеты и так идут каждые 2-3 секунды?
code-by вне форума  
Непрочитано 06.01.2011, 13:44   #7
Radamat
Прохожий
 
Регистрация: 13.09.2009
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Radamat на пути к лучшему
По умолчанию Re: Кольцевой буфер uart

Зачем такие сложности?
Это ведь нужно делать конвертацию числа в строку в микроконтроллере (?).
А на стороне приемника что у вас, вы не сказали.
Там нужно будет делать обратную конвертацию наверное?
Передавайте лучше ввиде char[2]. Только определитесь какой байт идет первым, старший или младший.
Radamat вне форума  
Непрочитано 06.01.2011, 14:06   #8
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Кольцевой буфер uart

››необходимо принимать 15 чисел int с периодичностью 2-3 секунды.
забыли написать, скорость обмена?

Вообще-то любой обмен делается в рамках протокола. Там описывается, что делать, если приняли не 15 байт подряд, а меньше, как проверять правильность сообщения, нужно ли подтверждение приёма и что делает источник, если подтверждения нет и т. д. Даже если у вас обмен между двумя вашими устройствами, в одну сторону и очень простой, протокол выработать стоит.
Нужен ли буфер. Нужен конечно, если вы обрабатываете сообщение из 15 байт. Пока не пришло всё сообщение, его надо где-то хранить. В буфере. Получили - начали обрабатывать. Пока обрабатываете, приходит новое сообщение. Или нет? нет - хватит 15-байтового буфера...
makakus вне форума  
Непрочитано 06.01.2011, 17:06   #9
code-by
Прописка
 
Регистрация: 04.08.2006
Сообщений: 181
Сказал спасибо: 1
Сказали Спасибо 31 раз(а) в 31 сообщении(ях)
code-by на пути к лучшему
По умолчанию Re: Кольцевой буфер uart

скорость от 9600 до 38400
code-by вне форума  
Непрочитано 07.01.2011, 10:28   #10
akphantom
Прохожий
 
Регистрация: 29.10.2010
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
akphantom на пути к лучшему
По умолчанию 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.
akphantom вне форума  
Закрытая тема

Закладки

Метки
avr, uart, буфер


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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, время: 22:05.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot