Chipenable: Статьи — chipenable.ru

Статьи — 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 шины являются возможность адресации до 128 устройств на одной шине, арбитраж и возможность использования нескольких ведущих устройств.

В этой статье описывается реализация ведущего 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

900 04 Вот полный пример кода с использованием CE1 в качестве Chip Select

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)

9002 4 Пример 4 — Форматирование аналогово-цифровых показаний в мА или VDC

Вместо считывания только аналогово-цифровых отсчетов может быть более целесообразным отображать фактические показания в мА, напряжении или температуре. Добавив еще одну библиотечную функцию, функция форматирования становится доступной для пользователя:

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)
 
 

90 024 Пример 7-Pi-Spi-8AI-5VDC Код образца (8 каналов от 0 до 6,6 В пост. Mod8AI(ChipEnable.CE1)

, тогда как 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *