Статьи — chipenable.ru
Всем привет. В последнее время я ничего не пишу и не слежу за сайтом, из-за чего его взломали и наполнили спамом.Пришлось в срочном порядке обновлять движок и восстанавливать данные. Восстановил только статьи и комментарии, поскольку не хочу обращаться к кому-либо за помощью. Пока все функционирует в таком виде. Добавлять недостающий функционал и приводить в нормальный вид буду уже по ходу.
Read more…
Tagged under
- avr calculator
Написал небольшое Android приложение для AVR разработчиков. Оно позволяет рассчитывать значения регистров некоторых аппаратных модулей AVR микроконтроллеров, необходимых для задания их конфигурации.
С помощью этого приложения можно:
— рассчитывать значения TCNT и OCR регистров таймеров для заданного периода/частоты
— рассчитывать значения UBRR регистра для USART/UART модуля
— рассчитывать значение TWBR регистра для TWI модуля
— преобразовывать аналоговое напряжение в цифровое значение ADC
Read more…
Tagged under
- схемотехника
- вентилятор
- шим
Компактные электрические вентиляторы, благодаря невысокой цене, используются для охлаждения оборудования уже больше полувека. Тем не менее только в последние годы технологии управления вентиляторами стали значительно развиваться. В этой статье описано как и почему это развитие имело место быть и предложены некоторые полезные решения для разработчиков.
Read more…
Tagged under
- алгоритмы
- RTOS
Вопреки расхожему мнению, применение планировщиков/диспетчеров позволяет значительно ускорить разработку приложений, затратив при этом совсем немного памяти. А, как известно, время разработчика дороже последней. Средний диспетчер занимает около 1 кБ flash. Это совсем немного, учитывая те возможности, которые он предоставляет.
Сделать свои программы более организованными мне, простому любителю, хотелось достаточно давно. Я опробовал на реальных устройствах несколько готовых простых планировщиков, но они меня не устроили. Поэтому я взял один из них за основу и переделал под свои нужды В этой статье я расскажу о том, что и почему я изменил, а также продемонстрирую несколько примеров его использования.
Read more…
Tagged under
- библиотеки
- avr
Написал библиотеку для опроса кнопок.
Особенности библиотеки:
• предназначена для AVR
• работает с компиляторами GCC, IAR, CodeVision
• позволяет опрашивать до 32 цифровых входов
• распознает нажатие, удержание, отпускание и двойное нажатие на кнопку
• позволяет индивидуально задавать активный уровень и обрабатываемые события
• зафиксированные события сохраняются в кольцевом буфере
• позволяет отключать неиспользуемые функции
• легко интегрируется в готовый проект
Read more. ..
Программирование AVR — chipenable.ru
Tagged under
- библиотеки
- avr
Написал библиотеку для опроса кнопок.
Особенности библиотеки:
• предназначена для AVR
• работает с компиляторами GCC, IAR, CodeVision
• позволяет опрашивать до 32 цифровых входов
• имеет программную защиту от дребезга контактов
• распознает нажатие, удержание, отпускание и двойное нажатие на кнопку
• зафиксированные события сохраняются в кольцевом буфере
• позволяет отключать неиспользуемые функции
• легко интегрируется в готовый проект
Read more…
Tagged under
- sd
- avr
- звук
- шим
В этой статье мы рассмотрим практический пример использования SD карты с микроконтроллером AVR. По просьбе трудящихся я написал проект, который читает с SD карты wav файл и воспроизводит его.
Для проекта я использовал микроконтроллер atmega16, тактируемый от внешнего кварца с частотой 6 МГц. В качестве ЦАПа задействована функция формирования ШИМ сигнала таймера Т0. Wav файл для воспроизведения был выбран с такими параметрами: 8 бит, 22 кГц, моно.
Read more…
Tagged under
- sd
- fat
- библиотеки
В этой части мы рассмотрим библиотеку для работы с дисками, имеющими файловую систему FAT. Это всем известная библиотека Elm Chan`a — Petit FatFs. Она представляет собой облегченную версия библиотеки FatFs и предназначена для микроконтроллеров с небольшим объемом оперативной памяти. Конечно, функционал Petit FatFs сильно ограничен, но имеет смысл начать знакомство с нее, потому что в ней проще разобраться.
В этой части изложена информация справочного характера, которую я почерпнул из документации на библиотеку, а в следующей части будет уже практический материал.
Read more…
Tagged under
- avr
- sd
В устройствах на микроконтроллерах для хранения больших объемов данных используется внешняя память. Если требуется хранить единицы мегабайт, то подойдут микросхемы последовательной флэш памяти. Однако для больших объемов (десятки -сотни мегабайт) обычно применяются какие-нибудь карты памяти. В настоящий момент наибольшее распространение получили SD и microSD карты, о них я и хотел бы поговорить в серии материалов. В этой статье речь пойдет о подключении SD карт к микроконтроллеру, а в следующих мы будет разбираться как читать или записывать на них данные.
Read more…
Tagged under
- i2c
- twi
- avr
Двухпроводный последовательный интерфейс (TWI) совместим с I2C протоколом фирмы Philips. Он был разработан, чтобы обеспечить простой, надежный и недорогой способ обмена данными между интегральными микросхемами.
В этой статье описывается реализация ведущего TWI устройства в виде драйвера и пример его использования. Представленный драйвер может выполнять обмен данными как в стандартном режиме (<100 кбит), так и с скоростном (<400 кбит).
Read more…
PI-SPI-DIN-8AI Примеры кода Python — Widgetlords Electronics
8-канальный модуль аналогового ввода 4-20 мА Шина СПИ.
Этот модуль имеет 5 вариантов выбора микросхемы: от CE0 до CE4
Операция выбора микросхемы во время связи SPI обрабатывается непосредственно библиотекой libwidgetlords и ядром.
Чтобы запустить примеры кода Python, установите библиотеки Widgetlords libwidgetlords, как описано в:
Начало работы с библиотеками PI-SPI
ПРИМЕЧАНИЕ. Все примеры кода относятся к Python 3.
Убедитесь, что в файле /boot/config. txt правильно задан параметр dtoverlay:
dtoverlay=vpe -2701c
Пример 1. Базовое чтение AD Counts
В этом примере кода:
1. Мы импортируем библиотеку Widgetlords
2. Инициализируем библиотеку -SPI-DIN-8AI) с использованием Chip Select CE0
4. Печать чтения в окно оболочки
from time import sleep
from widgetlords.pi_spi_din import *
init()
inputs = Mod8AI(ChipEnable.CE0)
while True:
печать (входы.read_single ( 0))
sleep(0.5)
Пример 2 — считывание количества AD с альтернативного выбора микросхемы
Каждый модуль Pi-SPI-DIN имеет 5 точек выбора микросхемы, что позволяет использовать до 5 различных модулей вместе.
В этом примере кода показано, как включить выбор альтернативного чипа. ПРИМЕЧАНИЕ: это работает и для всех следующих примеров кода!
Для каждого типа модуля выбор микросхем по умолчанию соответствует следующим контактам GPIO:
CE4 = GPIO18
CE3 = GPIO23
CE2 = GPIO24
CE0 = GPIO8
CE1 = GPIO7
from time import sleep
from widgetlords. pi_spi_din import *
init()
inputs = Mod8AI(ChipEnable.CE1)
while True:
print(inputs.read_single (0))
сон(0,5 )
Образец 3. Показания счетчика АЦП для нескольких каналов
Считывает несколько каналов с 0 по 7 (от A1 до A8) в модуле и выводит их в окно оболочки.
from time import sleep
from widgetlords.pi_spi_din import *
init()
inputs = Mod8AI(ChipEnable.CE1)
while True:
A1 = inputs.read_single(0)
A2 = inputs.read_single( 1)
A3 = inputs.read_single(2)
A4 = inputs.read_single(3)
A5 = inputs.read_single(4)
A6 = inputs.read_single(5)
A7 = inputs.read_single(6)
A8 = inputs.read_single(7)
print(A1)
print(A2)
печать (A3 )
печать (A4)
печать (A5)
печать (A6)
печать (A7)
печать (A8)
печать(«»)
sleep(0. 5)
Вместо считывания только аналогово-цифровых отсчетов может быть более целесообразным отображать фактические показания в мА, напряжении или температуре. Добавив еще одну библиотечную функцию, функция форматирования становится доступной для пользователя:
counts_to_value(read_ad_counts, zero_ad_counts, span_ad_counts, zero_value, span_value )
где:
read_ad_counts = фактическое количество A/D из канала
zero_ad_counts = количество A/D для представления нулевого значения
диапазон _ad_counts = количество A/D до представляет значение диапазона
нулевое_значение = нулевое значение, т. е.: 0 мА или 4 мА
значение_диапазона = значение диапазона, т. е.: 20 мА
Вот пример кода для чтения канала 0 (A1) в мА:
(стандартное числовое форматирование Python для ограничения десятичных разрядов до 2 знаков)
from time import sleep
from widgetlords. pi_spi_din import *
from widgetlords import *
init()
inputs = Mod8AI(ChipEnable.CE1)
while True:
A1 = inputs.read_single(0)
печать («Вход 1 = %4d AD Counts, %0.2f mA» % (A1, counts_to_value(A1, 745, 3723, 4, 20 )))
print(«»)
sleep(0.5)
Вот пример кода для чтения канала 0 (A1) в VDC:
(стандартное числовое форматирование Python для ограничения десятичных знаков до 2 знаков)
ПРИМЕЧАНИЕ. Диапазон от 0 В до 6,6 В постоянного тока.
пока верно:
A1 = inputs.read_single(0)
print(«Вход 1 = %4d AD Counts, %0.2f VDC» % (A1, counts_to_value(A1, 0, 4095, 0, 6.6 )))
print(«»)
sleep(0.5)
Пример 5. Форматирование аналогово-цифровых показаний температуры с использованием уравнения Стейнхарта-Харта
Модуль PI-SPI-8AI-TEMP имеет 8 каналов термисторных входов для 8 каналов измерения температуры. Каждый канал для PI-SPI-8AI может быть сконфигурирован как вход 4–20 мА, 0–6,6 В постоянного тока или вход термистора.
Вот формат для преобразования счетчиков A/D в градусы C с использованием уравнения Стейнхарта-Харта:
Temp = steinhart_hart(r_temp, beta, max_ad_counts, read_ad_counts)
где:
Temp = отформатированное чтение как градус C
r_temp = сопротивление термистора при комнатной температуре (25 °C)
beta = значение биения используемого термистора
max_ad_counts = максимальное количество объявлений, т.е.: 4095 для 12-битного аналого-цифрового преобразователя
read_ad_counts = фактические считанные значения аналого-цифрового преобразователя.
В наших продуктах мы используем термистор Cantherm с сопротивлением 10 кОм при 25 °C, бета-версия 3380, а наш нагрузочный резистор составляет 10 кОм (фиксированное значение)
Вот пример кода для преобразования канала 0 (A1) в датчик температуры чтение:
из time import sleep
из widgetlords.pi_spi_din import *
из widgetlords import *
init()
inputs = Mod8AI(ChipEnable. CE1)
while True:
A1 = inputs.read_single(0)
Temp = steinhart_hart(10000, 338 0, 4095, A1)
печать( Temp)
print(«»)
sleep(0.5)
Пример 6 — Пример кода PI-SPI-DIN-8AI-20MA (8 каналов 4–20 мА)
from time import sleep
from widgetlord с. pi_spi_din import *
from widgetlords import *
init()
inputs = Mod8AI(ChipEnable.CE1)
while True:
A1 = inputs.read_single(0)
A2 = inputs.read_single(1)
A3 = inputs.read_single(2)
A4 = входы. read_single(3)
A5 = inputs.read_single(4)
A6 = inputs.read_single(5)
A7 = inputs.read_single(6)
A8 = inputs.read_single(7)
print( «Ввод 1 = %4d Счетчики AD, %0,2f мА» % (A1, counts_to_value(A1, 745, 3723, 4, 20 )))
print(«Input 2 = %4d Счетчики AD, %0,2f мА» % (A2, counts_to_value(A2 , 745, 3723, 4, 20 )))
print(«Вход 3 = %4d счетчиков AD, %0,2f мА» % (A3, counts_to_value(A3, 745, 3723, 4, 20 )))
print(«Вход 4 = %4d счетчиков AD, %0,2f мА» % (A4, counts_to_value(A4, 745, 3723, 4, 20 )))
print(«Input 5 = %4d AD Counts, %0. 2f mA» % (A5, counts_to_value(A5, 745, 3723, 4) , 20 )))
print(«Вход 6 = %4d AD отсчетов, %0,2f мА» % (A6, counts_to_value(A6, 745, 3723, 4, 20 )))
print(«Вход 7 = %4d AD Счетчики, %0,2f мА» % (A7, counts_to_value(A7, 745, 3723, 4, 20 )))
print(«Input 8 = %4d AD Counts, %0.2f mA» % (A8, counts_to_value(A8, 745, 3723, 4, 20 )))
print(«»)
sleep(0.5)
, тогда как True:
A1 = inputs.read_single(0)
A2 = inputs.read_single(1)
A3 = inputs.read_single(2)
A4 = inputs.read_single(3)
A5 = inputs.read_single(4)
A6 = inputs.read_single(5)
A7 = inputs.read_single (6)
A8 = inputs.read_single(7)
print(«Вход 1 = %4d AD Counts, %0.2f VDC» % (A1, counts_to_value(A1, 0, 4095, 0, 6.6 )))
print («Вход 2 = %4d счетчиков AD, %0,2f В пост. тока» % (A2, counts_to_value(A2, 0, 4095, 0, 6,6 )))
print(«Вход 3 = %4d счетчиков AD, %0,2f В пост. тока» % (A3, counts_to_value(A3, 0, 4095, 0, 6.6 )))
print(«Вход 4 = %4d AD Counts, %0.2f VDC» % (A4, counts_to_value(A4, 0, 4095, 0, 6.6 )))
print(«Вход 5 = %4d Счетчики AD, %0,2f В постоянного тока» % (A5, counts_to_value(A5, 0, 4095, 0, 6,6 )))
print(«Ввод 6 = %4d Счетчики AD, %0,2f VDC» % (A6, counts_to_value (A6, 0, 4095, 0, 6.6 )))
print(«Ввод 7 = %4d AD Counts, %0.2f VDC» % (A7, counts_to_value(A7, 0, 4095, 0, 6.6 )))
print («Вход 8 = %4d счетчиков AD, %0,2f В пост. тока» % (A8, counts_to_value(A8, 0, 4095, 0, 6.6 )))
print(«»)
sleep(0.5)
Образец 8 — PI-SPI-DIN-8AI-10VDC Образец кода (8 каналов на входе от 0 до 10 В постоянного тока)
от времени import sleep
from widgetlords.pi_spi_din import *
from widgetlords import *
init()
inputs = Mod8AI(ChipEnable.CE1)
while True:
A1 = inputs.read_single(0) 9 0029 A2 = inputs. read_single (1)
A3 = inputs.read_single(2)
A4 = inputs.read_single(3)
A5 = inputs.read_single(4)
A6 = inputs.read_single(5)
A7 = inputs.read_single(6)
A8 = inputs.read_single(7)
print(«Ввод 1 = %4 г AD Отсчеты, % 0.2f VDC» % (A1, counts_to_value(A1, 0, 3685, 0, 10 )))
print(«Input 2 = %4d AD Counts, %0.2f VDC» % (A2, counts_to_value(A2, 0, 3685) , 0, 10 )))
print(«Вход 3 = %4d AD Counts, %0.2f VDC» % (A3, counts_to_value(A3, 0, 3685, 0, 10 )))
print(«Вход 4 = % 4d Счетчики AD, %0.2f VDC» % (A4, counts_to_value(A4, 0, 3685, 0, 10 )))
print(«Вход 5 = %4d счетчиков AD, %0,2f VDC» % (A5, counts_to_value(A5, 0, 3685, 0, 10 )))
print(«Вход 6 = %4d счетчиков AD, %0,2f VDC» % (A6, counts_to_value(A6, 0, 3685, 0, 10 )))
print(«Input 7 = %4d AD Counts, %0.2f VDC» % (A7, counts_to_value(A7, 0, 3685, 0 , 10 )))
print(«Input 8 = %4d AD Counts, %0.2f VDC» % (A8, counts_to_value(A8, 0, 3685, 0, 10 )))
print(«»)
sleep( 0. 5)
Пример 9 — Пример кода PI-SPI-8AI-NTC10K (8-канальный термисторный вход)
from time import sleep
from widgetlords.pi_spi_din import *
from widgetlords import *
init()
inputs = Mod8AI(ChipEnable.CE1)
while True:
A1 = inputs.read_single(0)
A2 = inputs.read_single(1)
A3 = inputs.read_single(2)
A4 = inputs.read_single(3)
A5 = inputs.read_single(4)
A6 = inputs.read_single(5)
A7 = input s.read_single( 6)
A8 = inputs.read_single(7)
Temp1 = steinhart_hart(10000, 3380, 4095, A1)
Temp2 = steinhart_hart(10000, 3380, 4095, A2)
Temp3 = steinhart_hart(10000, 3380, 4095, A3)
Temp4 = steinhart_hart(10000, 3380, 4095 , A4)
Temp5 = steinhart_hart(10000, 3380, 4095, A5)
Temp6 = steinhart_hart(10000, 3380, 4095, A6)
Temp7 = steinhart_hart(10000, 3380, 4095, A7)
Temp8 = steinhart_hart(10000, 3380 , 4095, A8)
if(A1>4050):# Проверить наличие датчика
print(«Датчик отсутствует»)
else:
print(«Temp1 = %0. 1f Deg C» % Temp1)
sleep(0.5)
[PATCH 1/3] ARM: dts: sun5 я: чип: включить bluetooth
[PATCH 1/3] ARM: dts:sun5i: чип: Enable bluetooth — Джонатан Макдауэллlinux-kernel.vger.kernel.org архивное зеркало помощь / цвет / зеркало / канал Atom
От: Джонатан МакдауэллКому: Робу Херрингу , Кшиштоф Козловски , Чен-Ю Цай , Джерней Скрабец , Сэмюэл Холланд Копия: [email protected], [email protected], [email protected], [email protected] Тема: [ПАТЧ 1/3] ARM: dts:sun5i: чип: Включить блютуз Дата: сб, 15 апреля 2023 г., 18:46:03 +0100 [обзор темы] Идентификатор сообщения: (сырой) Кому в ответе: У C.H.I.P есть устройство rtl8723bs с подключенным интерфейсом bluetooth на UART3. Поддержка этого не существовала в основной линии, когда DTS был изначально добавлено, но теперь есть, поэтому включите его. Подписано: Джонатаном Макдауэллом --- арка/рука/загрузка/dts/sun5i-r8-chip.dts | 4 ++++ 1 файл изменен, 4 вставки(+) diff --git a/arch/arm/boot/dts/sun5i-r8-chip.dts b/arch/arm/boot/dts/sun5i-r8-chip.dts индекс fd37bd1f3920..4d72a181d8aa 100644 --- a/arch/arm/boot/dts/sun5i-r8-chip.dts +++ b/arch/arm/boot/dts/sun5i-r8-chip.dts @@ -255,6 +255,10 @@ &uart3 { pinctrl-0 = <&uart3_pg_pins> , <&uart3_cts_rts_pg_pins>; статус = "хорошо"; + + Bluetooth { + совместимый = "realtek, rtl8723bs-bt"; + } }; &usb_otg { -- 2.39.2
следующая предыдущая родительский ответ другие темы:[~2023-04-15 17:46 UTC|новейшие] Обзор темы: 15+ сообщений / expand[flat|nested] mbox.gz Atom top feed top 15.04.2023, 17:45 [ИСПРАВЛЕНИЕ 0/3] Незначительные дополнения дерева устройств для C.H.I.P Джонатана Макдауэлла 15-04-2023, 17:46 ` Джонатан Макдауэлл [это сообщение] 15. 04.2023, 20:36 ` [ИСПРАВЛЕНИЕ 1/3] ARM: dts: sun5i: чип: Включить тестовый робот ядра Bluetooth 2023-04-16 00:24 ` Андре Пшивара 2023-04-20 19:12 ` Джонатан Макдауэлл 2023-04-21 1:43 ` Саравана Каннан 2023-04-21 8:28 ` Джонатан Макдауэлл 21.04.2023, 22:45 ` Саравана Каннан 2023-04-24 17:34 ` Джонатан Макдауэлл 15.04.2023, 17:46 ` [ИСПРАВЛЕНИЕ 2/3] ARM: dts: sun5i: Добавить настройки pinmux порта E для mmc2 Джонатан Макдауэлл 2023-04-16 0:47 ` Андре Пшивара 2023-04-20 19:13 ` Джонатан Макдауэлл 15.04.2023, 17:47 ` [ИСПРАВЛЕНИЕ 3/3] ARM: dts: axp209: добавлен узел iio-hwmon для внутренней температуры Джонатан Макдауэлл 2023-04-16 7:27 ` Кшиштоф Козловски 2023-04-20 19:06 ` Джонатан Макдауэлл
Инструкции по ответу: Вы можете публично ответить на это сообщение по электронной почте с открытым текстом. с помощью любого из следующих методов: * Сохраните следующий файл mbox, импортируйте его в свой почтовый клиент, и ответ всем оттуда: mbox Избегайте размещения наверху и отдавайте предпочтение чередованию цитат: https://en.