3.
(06.03.2008 12:40)
0
Как оно работает: Порт F (PFx) - это входы внутреннего 10 битного АЦП. Два первых использую под датчики давления, остальное можно
пользовать под 6 точен измерения всего подряд.
Светодиод на PA0 для тестов.
Связь с другими МК пока думаю сделать по SPI. Во-первых его разъём уже будет выведен для программирования - почему бы не попользовать? Хоть и придётся добавить MOSI/MISO линии. Во-вторых это скоростной и аппаратный интерфейс. В-третьих, другого просто нет :)
GPS подключён к UART0 и работает через прерывание INT6. Остальные INT используются для измерения периодов
ШИМ сигналов приёмника - изначально они настроены на положительный перепад, когда срабатывают - запоминают
значение внутреннего таймера и переключаются на отрицтельный перепад. Когда срабатывает отрицательный
перепад - снова запоминание, вычитание, подсчёт периода. Ну и всё сначала.
Выходы - это 6 каналов внутреннего 16 битного ШИМ. Т.к. входов 5, то один из каналов будет работать как инверсия
другого - можно будет пользовать систему с инверсными машинками элеронов.
Аналоговое питание отделено от цифрового через дроссель.
На порт А, в добавок, повешено несколько джамперов - вдруг пригодятся? :)
Пиромеры MLX90614 подключены к порту С. Изначально все пирометры сконфигурированв на интерфейс I2C и адрес
0. Чтобы повесить их на нормальный I2C надо каждый перепрограммировать на свой адрес. Не то, чтобы сложно, но
заморочно... Да и аппаратный I2C занят прерыванием... По этому я и решил изобразить такой через-зад I2C :) Клок
общий, SDA разные. То есть читать пирометры можно параллельно все. ИМХО это удобно и экономит время
программному I2С. Как работает интерфак написано в ДШ к пирометру (
http://www.melexis.com/Sensor_ICs_Infrared_and_Optical/Infrared/MLX90614_615.aspx ). От мастера идёт запрос в виде
адреса и команды. Пирометр отвечает два байта данных и байт контрольной суммы CRC8. Функция расчёта оной на
Си есть в википедии, так что писать не надо ;)
Какая помощь мне сейчас нужна: Во первых, разобраться с протоколом пирометра. Я пробежал мельком. Код программного I2C у меня есть, переделать его на 4 канала легко (там всё на дефайнах). Если кто-то возьмётся
написать функции чтения пирометров, будет круто.
И второй пункт - оверсамплинг. К своему стыду я с ним плотно дел не имел, всех тонкостей не знаю. А обычное 10
битное АЦП с датчиком MPX4115 даст точность высоты 10 метров :) С такой же точностью работает GPS, так что либо
наращивать разрядность АЦП оверсамплингом, либо вообше выкидывать альтиметр из схемы. Этот вопрос надо решить и кому-то взяться написать (или надыбать) ф-ию оверсамплинга для канала высоты, тоже всё
пучком.
Остальное у меня либо уже написано, либо напишу сам.
Ну что, я первый шаг сделал, жду ответа заинтересованых лиц :)
|