Зміст: формати кодування
- Доповняльний код (англ. two’s complement, «доповнення до 2»)
- Число з рухомою комою (floating point): мантиса і експонента
- Прямий двійковий код (straight binary code)
- Кодування цілої і дробової частини числа фракціями у вигляді ступенів двійки
- Двійково-десятковий код (Binary Coded Decimal)
Формат: Доповняльний код (англ. two’s complement, «доповнення до 2»)
Опис формату Wikipedia
Приклади компонентів де застосовується формат кодування:
Назва компоненту | Регістр | Посилання |
Пульсоксиметр MAX30102 | Регістр температури: Temperature Data (0x1F–0x21) | MAX30102 |
АЦП ADS1115 | Регістр результату перетворення: Conversion Register (0x00) Регістри порогів: Lo_thresh (0x02) & Hi_thresh (0x03) | ADS1115 |
Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:
Назва продукту | Категорія | Посилання |
Модуль конвертує задане у доповненому до 2ки форматі десяткове число у звичайне десяткове число з урахуванням знаку та десяткової фракції після коми | Перетворення та обчислення, Системні компоненти | twosc2dec.lua |
Формат: Число з рухомою комою (floating point): мантиса і експонента
Опис формату Wikipedia
Приклади компонентів де застосовується формат кодування:
Назва компоненту | Регістр | Посилання |
MAX44009 22-bit I2C-bus Low Power Ambient Light Sensor with ADC | Результат вимірювання у люксах: LUX READING (0x03-0x04) 4-bit exponent followed by an 8-bit mantissa Регістри порогів: THRESHOLD SET (0x05-0x06) | max44009 |
Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:
Назва продукту | Категорія | Посилання |
Сенсор освітленості MAX44009 – програмний I2C драйвер з обробкою подій без GPIO переривань | Вимірювання цифрових величин, Детектування цифрових сенсорів, Обробка подій цифрових сенсорів, Перетворення цифрових даних, Сенсори, Цифрові сенсори | max44009.lua |
Формат: Прямий двійковий код (straight binary code)
Опис формату Wikipedia
Приклади компонентів де застосовується формат кодування:
Назва компоненту | Регістр | Посилання |
АЦП TI ADC101C021 | Регістр результату перетворення: Conversion Result Register (0x00) | АЦП TI ADC101C021 |
NXP PCA9538 I2C-bus GPIO expander | Регістр поточного стану входів-виходів: Input Port register 0x00 & Output Port register 0x01 | NXP PCA9538 |
Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:
Назва продукту | Категорія | Посилання |
Вимірювання напруги на АЦП TI ADC101c021, з обробкою подій і мін/макс за HW регістрами, шляхом опитування I2C | Аналого-цифрові перетворювачі, Обробка подій аналогових сенсорів, Перетворювачі, Сенсори | TI adc101c021.lua |
Восьмиканальний розширювач портів PCA9538 – програмний I2C драйвер з обробкою переривань | Дискретні розширювачі вводу-виводу, Сенсори | pca9538.lua |
I2C драйвер модуля інтерфейсів користувача IoT-Devices I2CUI1 з обробкою подій | Зумери, Інтерфейс користувача, Кнопки, Локальна індикація і сигналізація, Локальне керування, Світлодіоди | i2cui1.lua |
Формат: Кодування цілої і дробової частини числа фракціями у вигляді ступенів двійки
Приклад формату:
Приклади компонентів де застосовується формат кодування:
Назва компоненту | Регістр | Посилання |
CCS811 I2C-bus Ultra-Low Power Digital Gas Sensor for Monitoring Indoor Air Quality – eCO2 & eTVOC | Регістри компенсації по вологості і температурі: ENV_DATA (Environment Data) Register (0x05) | CCS811 |
Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:
Назва продукту | Категорія | Посилання |
Цифровий газовий датчик CCS811 для моніторингу якості повітря в приміщенні по CO2 та TVOC – програмний I2C драйвер з обробкою подій без GPIO переривань | Вимірювання цифрових величин, Детектування цифрових сенсорів, Обробка подій цифрових сенсорів, Перетворення цифрових даних, Сенсори, Цифрові сенсори | ccs811.lua |
Формат: Двійково-десятковий код (Binary Coded Decimal)
Опис формату Wikipedia
Приклад формату:
- для десяткового числа 22333, функція
dec2bcd(22333)
повертає результат перетворення у двійково-десятковому форматі як масив, чи як текст:
1 |
00100010001100110011; |
- для кодованого у двійково-десятковому форматі двійкового числа 0001001000110100 функція
bcd2dec(0001001000110100)
повертає результат перетворення у десяткове як число:
1 |
1234. |
Примітка: назву функцій bcd2dec & dec2bcd
наведено лише для наочності прикладу.
Калькулятор онлайн: digital computation: bcd decimal converter
Приклади компонентів де застосовується формат кодування:
Назва компоненту | Регістр | Посилання |
DS3231 Extremely Accurate I2C-Integrated RTC/TCXO/Crystal | Вміст регістрів часу та календаря (0x00 – 0x06) | DS3231 |
Приклади продуктів alterstrategy.lab, де реалізовано алгоритм перетворення:
Наразі комерційного продукту не пропонується.
Але рекомендуємо подивитися приклад реалізації перетворення у вихідному коді офіційного Lua-модуля прошивки NodeMCU за наступним посиланням: nodemcu firmware: lua modules ds3231
Документація на модуль: lua modules: ds3231