Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
1. Программирую внешнее прерывание на работу "Any logical change on INT0 generates an interrupt request."
2. При включении мастер передает 128 переходов 0-1. Слейв при переходе в прерывание "схватывает" текущее состояние 16ти разрядного счетчика, сравнивает с предыдущим и вычисляет разность. Накапливает данные и вычисляет среднее. Так мы получаем некую константу x1, которая поможет нам синхронизироваться с мастером.
3. Передаем данные пакетами. После любой смены уровня переходим в прерывание, определяем логическое состояние а также вычисляем время x2 после последнего прерывания. Если это время больше х1, значит необходимо дополнить принятые биты х2/х1 кол-вом нолей/единичек.
4. Если необходимо изменить скорость обмена, то подается некая служебная команда, после чего снова слейвы слушают 128 переходов 0-1 и рассчитывают х1счерточкой
Таким образом мы имеем физ. уровень протокола обмена информацией с возможностью на ходу изменить скорость и пересинхронизироваться.Ё
Хреново только то что я лишаю себя возможности менять разрядность ШИМ на ходу, ведь я забираю на нужды интерфейса регистр ICR1 :(
Составить ответ | Вернуться на конференцию
Ответы