Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
24.03.2013, 15:06
|
#31
|
Временная регистрация
Регистрация: 20.06.2009
Сообщений: 51
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Слияние 4х потоков USART
Сообщение от Godzilla82
|
А чего такое ограничение в камнях-то? Есть камень с 5( 8 ) UART - так и используйте его. Делал я 4 программных UART - но гемор ещё тот.
А у вас ситуация осложняется тем, что данные могут придти ОДНОВРЕМЕННО. Всё, конечно, решаемо. Но зачем самому себе создавать лишние проблемы?
Если со всех устройств идёт запрос-ответ, то есть, одновременно идёт работа только с одним из датчиков, то всё упрощается. Берёте любой мультиплексор и TINY2313.
P.S. Не помню, сколько у вас пакет данных весит. А то тиньки может и не хватить.
|
из камней в моем распоряжении к сожалению только тиня12, 13, 2313, мега 8, 48, 88, 168, 328. запроса-ответа нет - датчики могут передавать как одновременно, так и перекрывать посылки друг друга. тиньки хватит - 30 слов
|
|
|
|
24.03.2013, 16:19
|
#32
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Слияние 4х потоков USART
Если есть возможность корректировать программу на контроллерах-сборщиках инфы с датчиков, то самое лучшее - это сделать им прогу так, чтобы они выдавали свои накопленные данные только по команде центрального контроллера. То есть, центральный процессор опрашивает сборщиков тогда, когда посчитает нужным, и тем самым проблема с приоритетами решается сама собой. А чтобы не заморачиваться с поиском многопортового камня, лучше всего UARTы переделать под RS-485. И тогда можно все сборщики инфы посадить на одну пару проводов, и достаточно будет проца с одним УАРТом. Это и намного дешевле, и правильнее, и помехоустойчивость у RS-485 значительно выше.
Ну, а если все так плохо, что на программу сборщиков инфы повлиять уже невозможно - я сторонник того, чтобы на каждый УАРТ на приемной части посадить отдельный простенький проц. Опять же, это выгодно с многих сторон. И программа на такой проц будет очень простая, и все эти интерфейсные платы будут абсолютно одинаковые. А это - прямо ведет к повышению живучести, ведь таких плат можно наделать кучу в запас, и пусть хоть молния бьет, хоть метеорит падает. И в изготовлении это намного проще, и в отладке.
Еще один важный фактор, в пользу такого способа - это сейчас таких сборщиков всего четыре. А если завтра понадобится пять? Или семь? Снова искать многопортовый проц, с еще большим количеством? Так их и в природе не существует. А так можно будет наращивать количество портов сколько угодно.
А передавать накопленные данные на центральный проц они будут по команде, по опросу. Для этой передачи лучше всего подошел бы SPI. Его и программно легко реализовать.
|
|
|
|
24.03.2013, 16:28
|
#33
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Слияние 4х потоков USART
Зачем плодить сущности, мега48 прекрасно будет принимать хоть все 4 потока одновременно на 9600
Сообщение от insiderbik
|
из камней в моем распоряжении к сожалению только тиня12, 13, 2313, мега 8, 48, 88, 168, 328. запроса-ответа нет - датчики могут передавать как одновременно, так и перекрывать посылки друг друга. тиньки хватит - 30 слов
|
Так в чем проблема? Бери и делай, работы на пару вечеров... Или доставай кошелек
|
|
|
|
24.03.2013, 17:44
|
#34
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Слияние 4х потоков USART
Сообщение от insiderbik
|
из камней в моем распоряжении к сожалению только тиня12, 13, 2313, мега 8, 48, 88, 168, 328.
|
А что мешает добавить в этот список мегу с 5 уартами?
Сообщение от insiderbik
|
запроса-ответа нет - датчики могут передавать как одновременно, так и перекрывать посылки друг друга. тиньки хватит - 30 слов
|
30 слов - это 60 байт. По хорошему, 60 x 4 x 3. А это входной буфер 720 байт.
Если уж делать всё нормально, то надо 4 выборки за интервал бита. А это 104 мкс. То есть, за 25 мкс надо решить, какой бит пришёл, положить его в нужный подбуфер. Если пришёл стоп-бит, то сформировать байт и положить его в соответствующий буфер (1 из 4).
Также надо решить, в каком буфере находится готовый пакет (30 слов), сформировать выходной пакет, сместить указатель буфера на 60, запустить передачу выходного пакета.
25 мкс - это примерно 260 тактов в вашем распоряжении (при кварце 11,0592 МГц).
Если хорошенько подумать, то можно уложиться.
|
|
|
|
24.03.2013, 18:07
|
#35
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Слияние 4х потоков USART
Предложу изящное решение 1 КР580ИК80 + 5шт. КР580ИК51 + ОЗУ + ПЗУ и еще немного обвязки. Все можно найти на мусорке.
|
|
|
|
24.03.2013, 18:17
|
#36
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,982
Сказал спасибо: 0
Сказали Спасибо 4,941 раз(а) в 2,370 сообщении(ях)
|
Re: Слияние 4х потоков USART
Godzilla82,
атмел уже все придумал... давно... на асме. аппноты 3хх были ориентированы еще на 90s1200.
выборок обычно делают 3, на 7, 8, 9 такте частоты сом-порта*16, т.е. 9600*16=153600 - с такой частотой должны быть прерывания от таймера.
и почему для м88/168/328 не поднять частоту до 22,1184МГц?
насчет слов - сейчас уже байты становятся 16-битными, а уж слова... ![Голова кругом](images/smilies/icon_rolleyes.gif) ![Валяюсь от смеха](images/smilies/icon_biggrin.gif)
и формировать пакеты не нужно - количество буферов на 1-4 больше, чем сом-портов, т.е. 6-9, на случай внезапного прихода данных от нескольких источников. адреса-указатели буферов, готовых к отправке, ставятся в очередь и сдвигаются по мере исполнения
oleg110592,
4-хпортовая плата сом для ПК стоит 40-50уе - аллес, все решено
Последний раз редактировалось jump; 24.03.2013 в 18:25.
|
|
|
|
24.03.2013, 19:15
|
#37
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Слияние 4х потоков USART
Сообщение от jump
|
4-хпортовая плата сом для ПК стоит 40-50уе - аллес, все решено
|
Действительно - идеальное решение. Правда автору придется освоить работу с потоками, но это уже не важно.
|
|
|
|
24.03.2013, 20:27
|
#38
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Слияние 4х потоков USART
Сообщение от jump
|
сейчас уже байты становятся 16-битными, а уж
|
километры морскими милями
|
|
|
|
24.03.2013, 20:36
|
#39
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Слияние 4х потоков USART
Сообщение от oleg110592
|
Действительно - идеальное решение. Правда автору придется освоить работу с потоками, но это уже не важно.
|
Да можно и без потоков обойтись, пожалуй, просто крутиться тупо в цикле и считывать с COMов данные.
|
|
|
|
24.03.2013, 20:50
|
#40
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,998
Сказал спасибо: 2,556
Сказали Спасибо 11,872 раз(а) в 5,950 сообщении(ях)
|
Re: Слияние 4х потоков USART
Сообщение от Boba_spb
|
Да можно и без потоков обойтись, пожалуй, просто крутиться тупо в цикле и считывать с COMов данные
|
В Билдере компонент CommPort имеет свой буфер, счетчик байтов в буфере, события по приему информации. Четыре компонента для четырех Com-ов, каждый обособленный, никаких заморочек с потоками, никаких опросов в цикле - просто обработка событий.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:20.
|
|