Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Покритикуйте алгоритм интерфейса связи (+)

Отправлено Двоешник (193.200.150.152) 13 сентября 2012, г. 12:48


Значит в свободное от основной работы время обдумываю концепцию интерфейса связи между контроллерами. Структура канала связи :
Один мастер и 64 слейва (гирлянда 6,4м где контроллеры через каждые 10см) Слейвы ATtiny10
Таймера свободного нет, но можно по внешнему прерыванию "схватывать" значения с таймера используемого для иных целей и использовать для нужд протокола.
Считает таймер со скоростью 8 MHz, период 0,125 uS
Считает от нуля до 0x03FF
Хотелось бы получить как можно более высокую скорость 56000 бод например (тут конечно сомневаюсь так как хреновая среда для передачи, да и фонить наверняка будет, но попробовать стоит, тем более что уменьшить скорость можно будет всегда)

Как варианты были:
а) использование "0" == T, "1" == 2T, пауза => 4Т.
Мне по этому варианту не ясно как быть если в потоке встретится например 5 нолей или 6 единичек подряд?
б) Манчестерское кодирование
По этому варианту нужно иметь возможность запрограммировать задержку по истечении которой проанализировать пин и что самое главное частоты смены уровней для 56000 должна быть в два раза выше!
в) простое двоичное кодирование как и в работе с УАРТ
Тут нужен таймер ,есть вопросы с синхронизацией потока, и наверняка достаточно массивный код ,а у меня 1к флеши.

Что я предлагаю обсудить:
передавать мне необходимо следующий пакет:
номер контроллера в гирлянде, заполнение ШИМ для R канала ,для G канала и для B канала. Номер контроллера я кодирую по принципу ВАМ но в обратную сторону, и передаю только лишь установленные биты в байте, а кодирую их вес длиной импульса! Синхронизирую начало пакета коротким (особенным по размеру) импульсом. RGB заполнение каналов кодирую просто длинами импульсов следующими за номером контроллера
Ну например мне нужно передать 34 му контроллеру 50 процентов заполнения заполнения ШИМ R канала , 30 и 10 соответственно для G и B


__||____| |_| |______| |___| |__| |_____
старт номер контроллера R G B

То есть номер контроллера передается весами его еденичек ,нолики сами собой определяются. Требований с супер пупер точности в канал для ШИМ нет, и я думаю что в серединке диапазона ваще +- лапоть допускается, а в начале вообще мне пока не все понятно так как даже при 10бит разрядности отчетливо видны переходы уровня яркости светодиодов.

Как вам такой подход?


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
при вычитании трёх из шести получится:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru