|
|
 |
Ответов
|
Jan 20 2008, 19:43
|

Просто 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-и !
|
|
|
|
|
Jan 20 2008, 20:43
|
Группа: Новичок
Сообщений: 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 с адресами ячеек массива, которые были заполнены непосредственно текстовыми сообщениями.
|
|
|
|
|
Jan 20 2008, 21:34
|

Просто 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-ю выборками на бит вы сделать точно не сможете. Упрощенные приемники с отлавливанием старта и выборками в середине битов попробовать сделать можно. Но при этом возникнет главная проблема - несинхронность каналов и наложение времен обработки битов различных каналов Это нужно по таймеру каждые максимум 50 мкс (4 раза на бит или чаще) опрашивать порт с UARTами и производить разборку комбинаций. Так что, даже если это и будет как-то дышать, то возможны периодические сбои приема. Я бы на вашем месте взял бы шесть внешних UARTов или Tiny-ек и слепил вместе с мегой.
|
|
|
|
|
Jan 21 2008, 07:48
|
Группа: Новичок
Сообщений: 5
Регистрация: 18-01-08
Пользователь №: 34 207

|
Цитата(Baser @ Jan 21 2008, 00:34)  Теперь все понятно: 6 независимых UARTов на прием на 4800,8,N,1 в один UART на 115200,8,N,1 на передачу. На Atmega8515 @ 4 MHz Боюсь, что складирование полученной информации хотя и не очень простая задача, но ничего принципиально невозможного в ней нет. Гораздо проблематичней выглядят 6 программных UARTов на прием на 4 MHz. Боюсь, что мега не успеет. Честных приемников с 16-ю выборками на бит вы сделать точно не сможете. Упрощенные приемники с отлавливанием старта и выборками в середине битов попробовать сделать можно. Но при этом возникнет главная проблема - несинхронность каналов и наложение времен обработки битов различных каналов Это нужно по таймеру каждые максимум 50 мкс (4 раза на бит или чаще) опрашивать порт с UARTами и производить разборку комбинаций. Так что, даже если это и будет как-то дышать, то возможны периодические сбои приема. Я бы на вашем месте взял бы шесть внешних UARTов или Tiny-ек и слепил вместе с мегой. В принципе я видел пример кода на один порт UART там действительно отлавливался старт бит (использовалась задержка на полбита), а при приеме стартового бита задержка увеличивалась до целого бита. С начала попробую организовать прием для одного пина, если получится позже попробую для 6 входов, если получаться не будет, тогда придется уже наращивать схему 8)))))))
|
|
|
|
Сообщений в этой теме
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     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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|