Notes


Conversion of gauss to tesla:

1µG = 0.1nT, 1mG = 100nT, 1G = 100µT, 10G = 1mT, 10,000G = 1T

Relationship between Magnetic Flux Density (B) and Magnetic Field Strength (H):

For SI in vacuum or air a flux density of 1 T = 796 kA/m.

For cgs in vacuum or air a flux density of 1 gauss = 1 oersted.


Заказ плат:
Резонит и PCBWay, 20.05.2019, все параметры одинаковые.

 

Доставка плат:
Резонит, 27.05.2019 (7 дней), качество высокое, количество 10 + 6 (бонус), стоимость одной платы 665 рублей (415 рублей с бонусом).

PCBWay, 11.06.2019 (22 дня), качество высокое, количество 10, стоимость одной платы 105 рублей (70 рублей с купоном).


Калькулятор магнитного поля для датчиков TI.


Заказ плат:
SeeedStudio, JLCPCB и PCBWay, 29.06.2019, все параметры одинаковые.


Запись данных по адресу в памяти

Предположим, что читая описание периферийного блока, мы поняли, что для его корректной работы необходимо записать в него число 0x3B. Адрес регистра 0x60004012. Регистр 32-битный.

Значение 0x60004012 есть не что иное, как значение указателя на ячейку памяти. Нужно именно это и указать в программе, то есть сделать преобразование типов согласно синтаксису языка C:

(unsigned long*) (0x60004012)

Таким образом, у нас есть указатель на элемент. Теперь нужно в этот элемент записать необходимое значение. Делается это разыменовыванием указателя. Таким образом получаем правильную команду:

*(unsigned long*) (0x60004012) = 0x3B;

Установка произвольных бит в 1

Предположим, что необходимо установить «1» в 7 и 1 биты по адресу 0x60004012, при этом не изменив значение всех остальных бит в регистре. Для этого необходимо использовать бинарную операцию |.

*(unsigned long*) (0x60004012) |= 0x82;

*(unsigned long*) (0x60004012) |= 0b1000 0010;

Данная операция на самом деле занимает не менее 3 тактов — считывание значения, модификация, запись. Иногда это не допустимо, поскольку между считыванием и записью значение одного из бит, которые нам запрещено изменять, могло быть изменено периферийным блоком.

Установка произвольных бит в 0

Предположим, что необходимо установить «0» в 7 и 1 биты по адресу 0x60004012, при этом не изменив значение всех остальных бит в регистре. Для этого необходимо использовать бинарную операцию &.

*(unsigned long*)(0x60004012) &= 0xFFFFFF7D;

*(unsigned long*)(0x60004012) &= 0b1111 1111 1111 1111 1111 1111 0111 1101; // 32 bit

*(unsigned long*)(0x60004012) &= (~0x82);


Возврат к оглавлению

Дата последнего изменения: 12.08.2019

postmaster@rusmagnet.ru