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

 
 
> Помогите придумать алгоритм .......
OrdArion
сообщение Jan 18 2008, 14:48
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 18-01-08
Пользователь №: 34 207



Совсем недавно передо мной встала задача сбор последовательной информации (текстовые сообщения), которые приходят на параллельный порт (те используется 6 пинов параллельного порта, на каждый из которых приходят собственные текстовые сообщения разной длинны), собираются в буффере последовательно и отправляются через стандартный порт UART.
C процессом отправки и буфферизации сообщений все вроде ясно, примеров очень много вокруг, а использование порта в качестве приемника последовательной информации практически нет (по крайней мере мне не удалось найти даже близкого примера).
Если будут какие нибудь мысли - пишите.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Jan 20 2008, 19:43
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(OrdArion @ Jan 20 2008, 19:58) *
Понял проблему, иззиняюсь, задача действительно без самых главных параметров нерешабельна 8))))

Информации все равно маловато. Еще вопросы.
1. Какое кодирование сериальных каналов, UART? (NRZ + старт/стоп)?
2. Все 6 каналов асинхронны по отношению друг к другу или нет?
3. Данные по всем каналам могут приходить одновременно или только один канал активен в одно время?

Цитата(Прохожий @ Jan 20 2008, 20:43) *
Я так понял: надо собрать информацию с 4-х независимых USART

Судя по всему с 6-и !
Go to the top of the page
 
+Quote Post
OrdArion
сообщение Jan 20 2008, 20:43
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 18-01-08
Пользователь №: 34 207



Цитата(Baser @ Jan 20 2008, 22:43) *
Информации все равно маловато. Еще вопросы.
1. Какое кодирование сериальных каналов, UART? (NRZ + старт/стоп)?
2. Все 6 каналов асинхронны по отношению друг к другу или нет?
3. Данные по всем каналам могут приходить одновременно или только один канал активен в одно время?
Судя по всему с 6-и !


1) Кодирования там нет и схемы на асинхронных приемопередатчиках лепить нет смысла
2) Информация поступает на каждый пин в АSCII (текстовые сообщения NMEA начинаются с $ заканчиваются возвратом каретки)
3) 8N1 (8 бит передаваемых данных, проверки на четность нет, один стоповый бит)
4) Информация приходит асинхронно

В принципе я сам себе накидал алгоритм, как бороться с такой бедой 8))) для 6 входов "UART". не так и сложно получилось, гораздо хитрее получается складирование полученной информации (двумерный массив с текстовыми сообщениями, получаемыми с портов - огроменный кольцевой буфер), и непосредственно выдача из этого кольцевого буфера через стандартный порт UART микроконтроллера, где придется организовать буфер FIFO с адресами ячеек массива, которые были заполнены непосредственно текстовыми сообщениями.
Go to the top of the page
 
+Quote Post
Baser
сообщение Jan 20 2008, 21:34
Сообщение #4


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(OrdArion @ Jan 20 2008, 22:43) *
...

Теперь все понятно: 6 независимых UARTов на прием на 4800,8,N,1 в один UART на 115200,8,N,1 на передачу. На Atmega8515 @ 4 MHz

Боюсь, что складирование полученной информации хотя и не очень простая задача, но ничего принципиально невозможного в ней нет.
Гораздо проблематичней выглядят 6 программных UARTов на прием на 4 MHz. Боюсь, что мега не успеет.
Честных приемников с 16-ю выборками на бит вы сделать точно не сможете.
Упрощенные приемники с отлавливанием старта и выборками в середине битов попробовать сделать можно. Но при этом возникнет главная проблема - несинхронность каналов и наложение времен обработки битов различных каналов sad.gif
Это нужно по таймеру каждые максимум 50 мкс (4 раза на бит или чаще) опрашивать порт с UARTами и производить разборку комбинаций.

Так что, даже если это и будет как-то дышать, то возможны периодические сбои приема.

Я бы на вашем месте взял бы шесть внешних UARTов или Tiny-ек и слепил вместе с мегой.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- OrdArion   Помогите придумать алгоритм .......   Jan 18 2008, 14:48
- - Dog Pawlowa   Цитата(OrdArion @ Jan 18 2008, 18:48) Сов...   Jan 18 2008, 15:14
|- - OrdArion   Цитата(Dog Pawlowa @ Jan 18 2008, 18:14) ...   Jan 20 2008, 17:58
|- - Прохожий   Цитата(OrdArion @ Jan 20 2008, 20:58) Пон...   Jan 20 2008, 18:43
- - rezident   Не совсем понятно. Поясните. Требуется принять 6 а...   Jan 19 2008, 00:23
- - r_dot   Цитата(OrdArion @ Jan 18 2008, 17:48) ......   Jan 19 2008, 04:44
|- - OrdArion   Цитата(Baser @ Jan 21 2008, 00:34) Теперь...   Jan 21 2008, 07:48
|- - Baser   Цитата(OrdArion @ Jan 21 2008, 09:48) В п...   Jan 21 2008, 20:47
||- - SasaTheProgrammer   Цитата(Baser @ Jan 21 2008, 22:47) Дык дл...   Jan 22 2008, 01:04
||- - OrdArion   Цитата(SasaTheProgrammer @ Jan 22 2008, 04...   Jan 22 2008, 10:41
||- - Baser   Цитата(OrdArion @ Jan 22 2008, 12:41) Мне...   Jan 22 2008, 11:13
|- - r_dot   Цитата(OrdArion @ Jan 21 2008, 10:48) В п...   Jan 22 2008, 02:10
- - Baser   Цитата(SasaTheProgrammer @ Jan 22 2008, 03...   Jan 22 2008, 10:40
- - r_dot   Цитата(Baser @ Jan 22 2008, 13:40) ... За...   Jan 23 2008, 02:44
- - SasaTheProgrammer   Цитата(r_dot @ Jan 23 2008, 04:44) Винова...   Jan 23 2008, 21:21


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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 06:37
Рейтинг@Mail.ru


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