Современная электроника №8/2021

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 24 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2021 идентификации протокола 1-Wire. Например, файл hex_12f629_2409_ v1_D2012F6290040B1F.hex пред- назначен для схемы ветвителя с но- мером D2012F6290040B1F . Для работы программы термометрии этот номер записывается в файле инициализации к соответствующим датчикам DS1820, чтобы обращаться именно к данному ветвителю c уста- новленными для него датчиками. Полученные файлы нужно записать в МК любым программатором для данно- го типа МК. Если не требуется модерни- зация программы, например, измене- ние кодов для обращения к ветвителям, то сформированный каталог можно удалить. Если изменили коды обраще- ния, то оставляете сформированный файл silos_v3.exe и удаляете все преды- дущие файлы. После компиляции сфор- мированный файл silos_v3.exe содер- жит все новые изменения для работы с новыми номерами идентификации вет- вителя. В новом файле изменится кон- трольная сумма и дата создания, размер файла останется прежним. При более «серьёзной» модифика- ции программы изменится и размер исполняемого файла. Рассмотрим несколько поясняющих примеров функционирования программного обеспечения для схемы ветвителя на 12F629 на языке программирования FORTH. Текст программы находится в файле silos_v3_2409_v1.f и компилиру- ется через выполнение общей програм- мы silos_v3.f с помощью файла 100_ spf4.exe. Для уточнения, где описание и где программа, фрагменты текста про- грамм, «вырезанные» из основного тек- ста, размещены в цветных квадратах. Пример 1. Изменение идентификационного кода В стандарте интерфейса 1-Wire доступ к «ведомым» элементам осу- ществляется по их идентификационно- му коду, который состоит из 8 байт [1]. Первый байт определяет функцию или тип устройства, далее 6 байт каких-либо номеров, а последний байт – контроль- ная сумма первых 7 байт. Таким образом, формируется стан- дартизация интерфейса 1-Wire и его устройств. Например, первый байт 0x28 определяет датчики температур DS18B20, первый байт 0x1F определя- ет ветвители DS2409 и так далее. Требуется выполнять стандартиза- цию обращения к устройствам интер- фейса 1-Wire, поскольку в этом случае программное обеспечение производи- теля будет работать нормально со схе- мой ветвителя на МК. Следовательно, можно изменять со 2-го по 7-й байт и оставлять 1-й байт с кодом 0x1F. Последний байт формиру- ется по первым 7 байтам. Для формирования последователь- ности номеров задействованы 2-й и 3-й байт. Остальные 4, 5, 6, 7-й байты не меняются, и допустимо записывать любую информацию. Рассмотрим распределение байт идентификационного номера: D2012F6290040B1F – код иденти- фикации, где: ● 1F – тип устройства 1-Wire, ветвитель DS2409, и он заменён на 12F629; ● 040B – номер, формируемый про- граммой в количестве 10 штук, на- чиная с 0403 до 040С; ● 012F6290 – постоянные байты, где записан тип используемого микро- контроллера; ● D2 – контрольная сумма первых 7 байт. Отсчёт нумерации байтов может выполняться в разных направлени- ях и зависит от представления в про- грамме. На нижнем уровне передача начинается с байта кода информации об устройстве, а в программном обе- спечении верхнего уровня отобража- ется в обратном виде. Представление кодов идентификации с разным видом дано в табл. 1. ● В файле программы silos_v3_2409_ v1.f текстовым редактором находим строки, определяющие начальный номер идентификации: CREATE ZAPROS_ACP_OUT_RGN1 0x3 C , \ мл. байт CREATE ZAPROS_ACP_OUT_RGN2 0x4 C , \ ст. байт и меняем, например, старший байт на 0x1 Таким образом, будет формироваться последовательность 0103, 0104, … 010С, всего 10 кодов. Далее находим строку, определяю- щую количество файлов с идентифи- кационными кодами: CREATE KOLVO_PIC_UI 0xA , \ и изменя- ем на другое требуемое количество фай- лов, отличное от 10. Следует обращать внимание на различные способы запи- си чисел с разнымиформатами счисле- ния. 0xA – это число 10 в шестнадца- теричной системе счисления. Запись и отображение значения чисел контроли- руется через переменную BASE . ● В файле программы находим форт- слово NAME_PIC_HEX_RG1 и изменяем значение постоянных байтов. Например, после ks на месте 12F629 пишем простой ряд чисел от 0…7: : NAME_PIC_HEX_RG1 S» hex_12f629_2409_ v1_ks012F629000001F.hex »; – был текст форт-слова, : NAME_PIC_HEX_RG1 S» hex_12f629_2409_ v1_ks0123456700001F.hex»; – стал текст форт-слова, Необходимо отметить, что имя фор- мируемого файла содержит уточнение функции работы. Это все байты до ks. При необходимости данные по назва- нию тоже можно поменять. Например: : NAME_PIC_HEX_RG1 S» hex_12f629_2409_ v1_ks012F629000001F.hex»; – был текст форт-слова. : NAME_PIC_HEX_RG1 S» Novosibirsk_ SibGUTIS_ks012F629000001F.hex»; – стал текст форт-слова. Чтобы не нарушать структуру име- ни файловой системы, размер текста не должен превышать 255 байт. ● Выполняем компиляцию програм- мы через командный файл start_ new_versii.cmd и получаем файлы для программирования МК. В про- цессе выполнения программа по- считает контрольную сумму ks и подставит её в нужное место. В бай- тах 2-м и 3-м формируются номе- ра с увеличением на +1 для младше- го байта. Все данные записываются в HEX-формате в шестнадцатерич- ной системе счисления. Для понимания отличия значения числа и его отображения в различных системах счисления (сс) приведём при- мер отображения натуральных чисел в интервале 0…16 в сс от 16 до 2 на язы- ке FORTH. \ начало текста программы : PKZ_DEMO BASE @ DUP DECIMAL CR S" Ncc=" TYPE . CR BASE ! 2DUP DO I . LOOP ; : FORMAT_CH_DEMO HEX 0x10 0 2 0x10 DO I BASE ! PKZ_DEMO -1 +LOOP HEX 2DROP ; FORMAT_CH_DEMO \ окончание текста программы. Для работы программы нужно соз- дать файл, например, test.f блокно- том, скопировать текст от комментария \ начало … до комментария \ оконча- ние … и сохранить. Косая линия вле- Таблица 1. Представление кода идентификации в прямом и обратном виде 1 2 3 4 5 6 7 8 D2 01 2F 62 90 04 0B 1F 1F 0B 04 90 62 2F 01 D2

RkJQdWJsaXNoZXIy MTQ4NjUy