!!! инвертировать USB_PU ****** Распиновка ****** === Интерфейсы I/O === - PA11/12 - USB - PA9(Tx), PA10(Rx) - USART1 - прокси RMC-сообщений GPS. - PA2(Tx), PA3(Rx) - USART2 - подключение GPS-приемника. - PB10(Tx), PB11(Rx) - USART3 - подключение лидара. === Остальные порты === - PA1 - PPS сигнал от GPS; сюда можно подключать любой дополнительный высокоомный вход напрямую. - PA4 - TRIG2 - подключен к каналу 12В. - PA13 - TRIG0 - кнопка или створ, замыкающий контакты. - PA14 - TRIG1 - так же, как и вход TRIG0. - PA15 - подтяжка USB. - PB0 - TRIG4 - триггер по АЦП. - PB8, PB9 - индикаторные светодиоды. - PC13 - пищалка. === Светодиоды === - LED0 (зеленый) - при отсутствии сигнала PPS просто горит, если PPS появляется - мигает (затухает на 0.25с на каждый сигнал). - LED1 (красный) - индикатор GPS: не горит, если приемник не обнаружен, горит, если неуверенный прием времени (буква "V" во второй позиции RMC-сообщения), мигает при уверенном приеме (буква "A" во второй позиции). Судя по эксперименту, даже через час после пропадания сигнала точность определения события - не хуже 1мс. Сам GPS-приемник выдает PPS даже при отсутствии спутников - лишь бы он успел "подхватить" точное время и начать генерировать pps. Начинать работу можно сразу, как только замигает зеленый светодиод после мигающего красного. ****** Триггеры ****** На прототипе распаяно два входа на триггеры: TRIG0 и TRIG2. К TRIG2 нужно подключать 12-вольтный сигнал, ток не меньше 10мА. Если створ имеет открытый коллектор, то выход створа подключается к минусу TRIG2, а к плюсу подключается 12В с источника питания. TRIG0 предназначен для подключения кнопки или концевика, просто замыкающего контакты. Никакого внешнего напряжения там быть не должно! TRIG4 - аналоговый вход. Если будут ложные срабатывания на девбордах, порт PB0 нужно напрямую или через резистор до 10кОм посадить на землю. Иногда бывают ложные срабатывания триггеров TRIG0..TRIG2, связанные с мощными источниками искр (зажигание, искрящиеся обмотки и т.п.). В случае таких ложных срабатываний рекомендуется заземлить катод источника питания хронометра. При подключении внешней кнопки желательно, чтобы она имела нормально замкнутые контакты - это предотвратит ложные срабатывания из-за электромагнитных помех. ****** Подключение ****** Хронометр эмулирует "китайский" преобразователь PL2303. В линуксе нужно, чтобы был скомпилирован соответствующий модуль ядра. В андроиде работает "из коробки". В мастдайке новые драйвера PL2303 имеют защиту от подделок (те просто не работают с этими дровами), поэтому для нормальной работы необходимо найти и установить старые драйвера. К выходам PA9/PA10 можно подключить преобразователь USART<>USB или накинуть их напрямую на ноги Rx/Tx "малинки" (не забыв соединить земли хронометра и малинки): PA9(Tx) соединить с Rx, PA10(Rx) - с Tx. Этот USART проксирует RMC-сообщения GPS-приемника (уже после обработки микроконтроллером, поэтому если МК выключен, а приемник включен, сигнала все равно не будет). Для подключения PPS сигнала к "малинке" нужно напрямую соединить соответствующую ногу GPIO "малинки" с портом PA1 девборды. На прототипе нужно подпаяться к дорожке, выходящей с ноги PPS (отмечено маркером). Подтяжка USB есть лишь на прототипе, на девбордах ее нет. Поэтому в случае перезагрузки микроконтроллера девборды для возобновления соединения необходимо переткнуть шнурок USB. В этом плане прототип надежней: сбросить МК можно независимо от питания GPS. На прототипе и девбордах отсутствует подсоединение пищалки. На девбордах при желании можно накинуть на PC13 что-нибудь для индикации срабатывания створа (активный выход - "1" в течение 0.3с). На девбордах не распаяны светодиодные индикаторы. Особого смысла в них нет, но если понадобится подключить, нагрузка должна висеть на PB8/PB9. Активный выход - низкий. Нога МК настроена в режиме open-drain, но внешняя подтяжка не должна быть выше +3.5В. И потребление не больше 5мА на ногу. ****** Конфигурация ****** Хронометр конфигурируется через USB. Ввод команд не сопровождается эхом (чтобы удобней было работать из внешних программ), поэтому для удобства можно тексты команд копировать из окна текстового редактора. Чтобы увидеть подсказку, достаточно отправить любую строку, начинающуюся с вопросительного знака. Появится справка: adcmax - max ADC value treshold for trigger adcmin - min -//- (triggered when ADval>min & 0, равен единице, если при перепаде 0->1. TRIGPAUSE - пауза между срабатываниями триггера: если после срабатывания произойдет следующее событие за интервал, меньший данного, это событие учитываться не будет. - time - отображает текущее время так, как оно бы отобразилось при срабатывании триггера, например, 55725.961 (15:28:45) ВРЕМЯ ИЗМЕРЯЕТСЯ В UTC!!! Первое число - количество секунд и миллисекунд с начала суток по UTC, в скобках указывается человекочитаемое время. - store - сохранить новую конфигурацию во флеш-памяти МК. - triglevelNS - рабочий уровень триггера. Здесь N - номер триггера (0..2), S - уровень (0/1). Скажем, чтобы триггер 0 срабатывал при перепаде 1->0, нужно написать команду triglevel00 а чтобы триггер 2 срабатывал при перепаде 0->1, triglevel21 - trigpauseNP - задать паузу для триггера N, пауза в миллисекундах. Если написать 0, паузы не будет и каждое срабатывание будет вызывать соответствующее сообщение. Эта пауза нужнад для защиты от "звона" и нескольких срабатываний на "дырках" в объекте. Меньше 50мс лучше не делать. - trigtimeN - отображение последнего времени срабатывания триггера N, например, на запрос trigtime0, может быть выведено: TRIG0=45212.930 (12:33:32) Если срабатываний с момента включения не было, выведутся нули: TRIG4=0.000 (00:00:00) После изменения конфигурации и ее сохранения необходимо нажатием на reset или отключением/включением питания перезагрузить МК, т.к. некоторые параметры активируются лишь при старте. ****** Девборды и плата-прототип ****** На платках из девборд два канала опторазвязок подключены к триггерам TRIG0 и TRIG1. Синий провод - земля, красные - +12В для каждого канала. Т.е. схема рассчитана на срабатывание по появлению плюса на одном из каналов. В случае необходимости срабатывания по подтяжке к земле, нужно разорвать землю на входах опторазвязок и, наоборот, объединить плюсы. На плюсы подать +12В, минусы подключить к сигнальным выходам створов. На прототипе распаяны развязки только на два канала: TRIG0 - для подключения чего-то, замыкающего контакты, и TRIG2 - для подключения чего-то, выдающего 12В. Я оставил такую конфигурацию: к TRIG0 можно подключить нормально замкнутую кнопку (triglevel01), а TRIG2 сработает при поступлении туда 12В (triglevel21).