Современная электроника №8/2021
ИНЖЕНЕРНЫЕ РЕШЕНИЯ 30 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2021 Передачу сигнала выполняет управля- емый транзисторQ1(2N7000), который замыкаетшину 1-Wire к уровню0 Ви тем самымформирует из него информаци- онный сигнал нуля или единицы стан- дарта 1-Wire для приёма на компьютере. Временны ′ е интервалы замыка- ния формирует МК U1(12F629). При использовании внутреннего RC гене- ратора в режиме работы 4 МГц погреш- ность сигналов управления составляет ±1 мкс, что не вызывает ошибок в сигна- лах при приёме и идентификации дан- ных интерфейса 1-Wire. Необходимо учесть дополнительный потребляемый ток МК в 1…3 мА по шине +5 В и возможное падение напряжения для длинной шины питания. Конструкция Схема и все компоненты собраны на печатной плате и предназначены для монтажа «под винт». На рис. 4 пред- ставлена 3D-модель платы. Печатная плата разработана в среде проектиро- вания DipTrace, проект доступен в ката- логе программ [3] и находится в файле sh_12F629_reg1_v1.zip . Предусмотрена установка транзи- стора в разных исполнениях ТО-92 и SOT-23. МК устанавливается через пере- ходную колодку DIN-8, что позволя- ет модифицировать и изменять про- граммное обеспечение и возможные функции использования. Программное обеспечение Для работы схемы ретранслятора используется программное обеспе- чение, совместимое с интерфейсом 1-Wire, которое представлено в [3]. Это программа термометрии silos_v3.exe , подготовленная на языке программи- рования FORTH [4]. Программа содер- жит все компоненты для программиро- вания и модификации режимов работы МК 12F629 [2], а также печатные пла- ты и схемы. Программный код формируется в режиме «восстановление всех файлов – компиляция нового кода» [5] и досту- пен в [3], файл silos_v3.exe. Рассмотрим несколько поясня- ющих примеров функционирова- ния программного обеспечения для схемы ретранслятора на 12F629 на языке программирования FORTH. Текст программы находится в файле silos_v3_12f629_regn_v1.f и компи- лируется через выполнение общей программы silos_v3.f с помощью фай- ла 100_spf4.exe . Для уточнения, где описание и где программа, фрагмен- ты текста программ, «вырезанные» из основного текста, размещены в цвет- ных врезках. Внимание: так как компиляция зани- мает время, подключение библиотек для приведённых других авторских устройств в данной программе пере- ведено в комментарий – косая черта влево. При компиляции сразу несколь- ких библиотек их состав «пересекает- ся», и в этом случае будет выдаваться сообщение о дублированиифорт-слов. Дублирование форт-слов создаёт избы- точность кода и является источником ошибок в работе основного алгоритма программы сбора данных термометрии. Пример 1. Запрос по шине ретранслятора к датчикам с использованием косвенной адресации Данные о номере датчика передаются от главного ПК и записываются в ячей- ки с названием NUM_BT0...7. 0x2B equ NUM_BT0 \ нач. байт при- ёма данных – 9300080100D00528, ито- го 8 регистров * * * \ регистры от 0x2B до 0x32 0x32 equ NUM_BT7 \ конечный байт Для обращения к данным для чтения и записи восьми байт номера датчика и побитной передачи-приёма в канал ретрансляции используются регистры косвенной адресации. 0x04 equ FSR \ адрес косвенного регистра для работ с INDF 0x00 equ INDF \ регистр косвен- ной адресации Текущий используемый номер реги- стра находится в FSR, а действия с ним выполняются в INDF. Рассмотрим подпрограмму WORKS_ DAN_MAIN_SBORS_NUM_BT# пере- дачи сигнала сброса RST в канал MAIN ретранслятора с фрагментом ретран- сляции номера термодатчика DS1820 методом косвенной адресации. \ выдан сигнал RST и код бай- та 0x55, назначить номер датчика. Далее выдаём этот номер 0x2B movlw \ в акм. первый байт данных хранения номера FSR movwf \ передали в косвен- ный регистр значение регистра пер- вого байта 0x8 movlw \ количество байт в номере, т.е. 8 байт N_1W8 movwf \ передали в счёт- чик учёта байт ORG @ m1 ! INDF movf \ из реги- стра в акм. Передали байт 1 MAIN_OUT_8BT# \ подпрограмма передачи байта в шину main из акм. 0x80 movlw \ значение паузы на 50 мкс между байтами 1 PAUSE_1W# \ выполняем паузу через подпрограмму 0x1 movlw \ единица для увели- чения номера регистра байта данных FSR 0xF addwf \ складываем адрес FSR+1, т.е. переходим к сл. байту. N_1W8 0xF decfsz \ вычитаем 1 из счётчика байт и пропускаем, когда 0. Т.е. выйти из пп. m1 goto \ повторяем следующие байты, если они не закончились. Таким образом, косвенная адресация позволяет циклически обращаться к регистрам хранения данных. В данном примере полученные данные ретран- слируются далее к датчику. Необходимо обратить внимание на паузу между передачами байта. С шиной +5 В можно от паузы отка- заться. В этом случае пакет идёт «плот- но». Если используется двухпрово- дный режим с паразитным питанием, то без паузы этого питания не хватает для работы датчика DS1820, поскольку сопротивление подтяжки в МК 12F629 составляет около 10 кОм. Пример 2. Передача кода формата 1-Wire в шину ретранслятора Передаётся байт из аккумулятора в шину ретранслятора в подпрограмме форт-слова MAIN_OUT_8BT# . BYAT_1W movwf \ данные в регистр из акм. Передача бита=0 0x8 movlw \ количество бит в бай- те, т.е. кол-во циклов N_1W movwf \ cчётчик загрузили ORG @ m1 ! porta 0x5 bcf \ GP5 установили в 0 – это вывод ретран- слятора MAIN BYAT_1W 0x0 btfsc \ проверка на 0 b=0. Пропустить, если =0 Рис. 4. 3D-модель в DipTrace печатной платы четырёхканального ретранслятора
RkJQdWJsaXNoZXIy MTQ4NjUy