Инструменты пользователя

Инструменты сайта


ob:o7:example:put

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ob:o7:example:put [2021/11/12 08:55]
iadenisov
ob:o7:example:put [2021/12/01 04:34] (текущий)
amalgama
Строка 3: Строка 3:
 Управление микроконтроллером осуществляет через операции записи и чтения значений регистров. Управление микроконтроллером осуществляет через операции записи и чтения значений регистров.
  
-Для записи значения примеряется процедура ''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>
Строка 37: Строка 53:
  END Off;  END Off;
  
 +    еще бы добавить пример кода когда в цикле биты set / unset
 +  
  
 END ExamplesPut. END ExamplesPut.
 </code> </code>
  
-В процедуре ''On'' мы записываем константу ''{13}'' типа ''SET'', которая означает то, что бит с номером 13 равен 1, остальные значения равны 0.+В процедуре ''On13'' мы записываем константу ''{13}'' типа ''SET'', которая означает то, что бит с номером 13 равен 1, а остальные биты машинного слова при этом равны 0.
  
-В процедуре ''Off'' мы записываем константу ''{13+16}'' типа ''SET'', которая означает то, что бит с номером 29 равен 1, остальные значения равны 0. Такая операция над регистром ''GPIOCBSRR'' приводит к выключению напряжения на выводе ''PC13''.+В процедуре ''Off13'' мы записываем константу ''{13+16}'' типа ''SET'', которая означает то, что бит с номером 29 равен 1. Такая операция над регистром ''GPIOCBSRR'' приводит к выключению напряжения на выводе ''PC13''.
  
-{{ :ob:o7:example:bsrr.png?800 |}} 
  
-Подробнее про [[https://oberoncore.ru/library/wirth_sets|применение типа SET для управления регистрами]]. 
ob/o7/example/put.1636696533.txt.gz · Последнее изменение: 2021/11/12 08:55 — iadenisov