Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
ob:o7:example:put [2021/11/12 09:14] iadenisov |
ob:o7:example:put [2021/12/01 04:34] (текущий) amalgama |
Управление микроконтроллером осуществляет через операции записи и чтения значений регистров. | Управление микроконтроллером осуществляет через операции записи и чтения значений регистров. |
| |
Для записи значения примеряется процедура ''SYSTEM.PUT''. | Для записи значения примеряется процедура ''SYSTEM.PUT(adr, val)''. |
| |
Первый аргумент — адрес регистра, второй — машинное слово. | Первый аргумент процедуры — адрес регистра, второй — значение равное машинному слову. |
| |
Машинное слово может быть переменной или константой типа целое (''INTEGER'') или множество (''SET''). | Машинное слово может быть переменной или константой типа целое (''INTEGER'') или множество (''SET''). |
| |
| Тип SET позволяет записать машинное слово в формате множества бит. |
| |
| Пример константы типа ''SET'', где 1-ый, 2-й и 30-й бит 32-битного машинного слова равны 1: |
| <code> |
| {0,2,30} |
| </code> |
| что соответствует машинному слову, записанному в двоичном виде (младший бит в конце): |
| <code> |
| 0100 0000 0000 0000 0000 0000 0000 0101 |
| </code> |
| |
| Рассмотрим запись на примере регистра ''GPIOx_BSRR''. В этом фрагменте из [[https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf|документации к микроконтроллеру]] показано, что первые 16 бит регистра ''GPIOx_BSRR'' управляют подачей напряжения на вывод, а оставшиеся 16 бит (от 16 до 31) выключают напряжение на выводах порта. |
| |
| {{ :ob:o7:example:bsrr.png?800 |}} |
| |
Адреса регистров хранятся в модулях подсистемы ''Micro''. | Адреса регистров хранятся в модулях подсистемы ''Micro''. |
| |
| Для микроконтроллеров **STM32F10xxD** адреса хранятся в модуле ''MicroSTM32F10xxD''. |
| |
<code> | <code> |
END Off; | END Off; |
| |
| еще бы добавить пример кода когда в цикле биты set / unset |
| |
| |
END ExamplesPut. | END ExamplesPut. |
</code> | </code> |
| |
В процедуре ''On13'' мы записываем константу ''{13}'' типа ''SET'', которая означает то, что бит с номером 13 равен 1, а остальные биты машинного при этом равны 0. | В процедуре ''On13'' мы записываем константу ''{13}'' типа ''SET'', которая означает то, что бит с номером 13 равен 1, а остальные биты машинного слова при этом равны 0. |
| |
В процедуре ''Off13'' мы записываем константу ''{13+16}'' типа ''SET'', которая означает то, что бит с номером 29 равен 1. Такая операция над регистром ''GPIOCBSRR'' приводит к выключению напряжения на выводе ''PC13''. | В процедуре ''Off13'' мы записываем константу ''{13+16}'' типа ''SET'', которая означает то, что бит с номером 29 равен 1. Такая операция над регистром ''GPIOCBSRR'' приводит к выключению напряжения на выводе ''PC13''. |
| |
В этом фрагменте из [[https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf|документации к микроконтроллеру]] показано, что первые 16 бит регистра ''GPIOx_BSRR'' управляют подачей напряжения на вывод, а оставшиеся 16 бит (от 16 до 31) выключают напряжение на выводах порта. | |
| |
{{ :ob:o7:example:bsrr.png?800 |}} | |
| |
Подробнее про [[https://oberoncore.ru/library/wirth_sets|применение типа SET для управления регистрами]]. | |