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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Помогите придумать алгоритм .......
Baser
сообщение Jan 22 2008, 11:13
Сообщение #16


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

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



Цитата(OrdArion @ Jan 22 2008, 12:41) *
Мне кажется, что 16 раз на бит - довольно много, если синхронизироваться по началу каждого байта, то в принцпе должно хватить и двух раз, единственное надо будет снизить фактор помех на линиях

Вы не поняли главной идеи: "синхронизироваться по началу каждого байта" можно только при наличии одного-двух UARTов. Для 6-и никакой синхронизации сделать не удасться, по причине полной асинхронности всех 6-и каналов. Делается регулярное прерывание по таймеру, одно на все каналы (я предлагал бит/4). В нем и разбираются состояния каждого канала.
Go to the top of the page
 
+Quote Post
r_dot
сообщение Jan 23 2008, 02:44
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 237
Регистрация: 14-08-07
Из: Москва
Пользователь №: 29 791



Цитата(Baser @ Jan 22 2008, 13:40) *
...
Задача много на чем "легко решается", речь шла о Atmega8515 @ 4 MHz


Виноват, перед советом решить задачу на ПЛИСе были пропущены промежуточные выкладки:
Длительность бита 208 мкс. При 4 отсчётах на бит на обработку 6 каналов + фоновая задача (сборка/выдача) получается 52 мкс. Для Atmega8515 @ 4 MHz длительность такта = 0,25 мкс. Итого на всё - 208 тактов.
Та же цифра, но более наглядно: по 30 тактов на процесс (приём последовательного кода, битовая синхронизация, приём байта, определение начала и конца "сообщения", постановка буфера в очередь на выдачу...).
Go to the top of the page
 
+Quote Post
SasaTheProgramme...
сообщение Jan 23 2008, 21:21
Сообщение #18


Частый гость
**

Группа: Новичок
Сообщений: 129
Регистрация: 4-08-06
Пользователь №: 19 327



Цитата(r_dot @ Jan 23 2008, 04:44) *
Виноват, перед советом решить задачу на ПЛИСе были пропущены промежуточные выкладки:
Длительность бита 208 мкс. При 4 отсчётах на бит на обработку 6 каналов + фоновая задача (сборка/выдача) получается 52 мкс. Для Atmega8515 @ 4 MHz длительность такта = 0,25 мкс. Итого на всё - 208 тактов.
Та же цифра, но более наглядно: по 30 тактов на процесс (приём последовательного кода, битовая синхронизация, приём байта, определение начала и конца "сообщения", постановка буфера в очередь на выдачу...).

За 30 тактов нужно успеть декрементировать счётчик отсчётов по данному каналу, если он обнулился - вызвать процедуру обработки середины нужного бита (по таблице). А этой процедуре нужно успеть задвинуть бит в буфер (в 8 случаях из 10), установить новое состояние счётчика бит и счётчика отсчётов. Нешто не успеть? Но и это будет происходить не всегда, остальное время будет доставаться фоновой задаче - подобрать заполнившиеся буфера и т.д.
Go to the top of the page
 
+Quote Post

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

 


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


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