FUR-V2.0: руководство по использованию
FUR — это сокращение от Fast-Uart-Reg, что означает «быстрый последовательный порт-регистр». Три слова в аббревиатуре описывают особенности этого компонента:
Понимание концепции Прежде чем начать использовать FUR, необходимо понять концепцию регистров в нём. В микроконтроллерах регистры представляют собой логические устройства или физические элементы на кристалле. Например, SBUF — это регистр данных последовательного порта, который имеет адрес 0x99 и может быть адресован напрямую через инструкции. В FUR используются только программные регистры. Они могут быть связаны с физическими регистрами или существовать виртуально. Версия V2.0 полностью раскрывает возможности сопоставления и позволяет свободно реализовывать пользовательские функции регистров. Если вам всё ещё неясно, рекомендуется сначала ознакомиться с протоколом и постепенно изучать FUR.
Протокол FUR использует протокол переменной длины, обеспечивая максимальную гибкость. Общий формат протокола следующий: [адрес@номер] операция = данные;
[адрес@номер]+=данные;
Например, чтобы увеличить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]+=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]+=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]+=7;.
[адрес@номер]-=данные;
Например, чтобы уменьшить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]-=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]-=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]-=7;.
[адрес@номер]*=данные;
Например, чтобы умножить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]*=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]*=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]*=7;.
[адрес@номер]/=данные;
Например, чтобы разделить содержимое регистра с адресом 16 на микроконтроллере с номером 2 на 7, отправьте команду [16@2]/=7;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]/=7;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]/=7;.
[адрес@номер]&=данные;
Например, чтобы установить младшие 4 бита содержимого регистра с адресом 16 на микроконтроллере с номером 2 равными 0, отправьте команду [16@2]&=0xFFF0; или [16@2]&=65520;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@2]&=0xFFF0; или [16@2]&=65520;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16@2]&=0xFFF0; или [16@2]&=65520;.
[адрес@номер]|=данные;
Например, чтобы установить младшие 4 бита содержимого регистра с адресом 16 на микроконтроллере с номером 2 равными 1, отправьте команду [16@2]|=0x000F;, [16@2]|=15; или даже [16@2]|=0xF;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]|=0x000F;, [16@0]|=15; или даже [16@0]|=0xF;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]|=0x000F;, [16]|=15; или даже [16]|=0xF;.
[адрес@номер]^=данные;
Например, чтобы инвертировать D7 бит содержимого регистра с адресом 16 на микроконтроллере с номером 2, отправьте команду [16@2]^=0x0080;, [16@2]^=128; или даже [16@2]^=0x80;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]^=0x0080;, [16@0]^=128; или даже [16@0]^=0x80;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]^=0x0080;, [16]^=128; или даже [16]^=0x80;.
[адрес@номер].параметр=данные;
Например, чтобы установить D7 бит содержимого регистра с адресом 16 на микроконтроллере с номером 2 равным 1, отправьте команду [16@2].7=1;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0].7=1;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16].7=1;.
[адрес@номер]?;
Например, чтобы прочитать содержимое регистра с адресом 16 на микроконтроллере с номером 2, отправьте команду [16@2]?;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]?;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]?;.
[адрес@номер]=данные;
Например, чтобы записать значение 596 в регистр с адресом 16 на микроконтроллере с номером 2, отправьте команду [16@2]=596;. Если есть только ведущий и ведомый, можно использовать широковещательную передачу [16@0]=596;. Если номер неизвестен и есть только ведущий и ведомый, номер можно опустить и отправить команду [16]=596;.
Основные операции FUR аналогичны обычным операциям с переменными, поэтому их легко запомнить. В следующей таблице приведены три примера, иллюстрирующие эту точку зрения:
Тип операции | Операция с переменной | Операция FUR |
---|---|---|
Присвоение | value=156; | [12]=156; |
Сложение | value+=156; | [12]+=156; |
Исключающее ИЛИ | value^=5; | [12]^=5; |
Помимо перечисленных команд, FUR также предоставляет несколько часто используемых команд.
[id]?; Обратите внимание: когда используется один к одному, эту команду можно использовать для запроса идентификационного номера целевого устройства. Однако в конфигурации один ко многим её нельзя использовать, поскольку несколько ведомых устройств могут одновременно реагировать на команду, вызывая хаос на шине.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )