• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ногодрыг на rtl

АндрейМ

New member
написал драйвер под owe wire на таймере. В первом варианте (без EDGE triggered IRQ) - основная проблема была в слипе 10 мс внутри таймера. на работе никак не отражалось, ошибок небыло.
Второй вариант драйвера был со взводом IRQ. Макс слип - 1 мс, как без него обойтись не придумал. С некоторой невысокой вероятностью фатально задерживается срабатывание прерывания
 

pvvx

Активный участник сообщества
Не получается настроить таймер в 30 мс. Минимум 60. даже при LoadCount=1
Минимум 31 мкс (30.5175 мкс... 1/32768). Count обычно = (кол-во - 1).
И куда вам прерывания в 32 кГц? Пожалейте систему - она тоже работать хочет :). Для экспериментов под RTOS с CLK 83 МНz тянет прерывания и за 100 кГц, но зачем...
Брать WiFi-SoC и делать из него эмуляцию аппаратного драйвера ногодрыгом как-то не сходится с задачами данного чипа :)
Может ещё ногодрыгом сделать USB3.0 возьметесь?
 
Последнее редактирование:

АндрейМ

New member
Минимум 31 мкс (30.5175 мкс... 1/32768). Count обычно = (кол-во - 1).
И куда вам прерывания в 32 кГц? Пожалейте систему - она тоже работать хочет :). Для экспериментов под RTOS с CLK 83 МНz тянет прерывания и за 100 кГц, но зачем...
На ините таймера видел заглушку 0=>1. В моем обработчике таймера почти все по феншую. Цикл 60 или 90 мкс. 32кгц хотелось для эксперимента, я и так выкосил из драйвера 95% usleep. По большому счету и 60 кгц для данного эксперимента было-бы не лишним :)
Брать WiFi-SoC и делать из него эмуляцию аппаратного драйвера ногодрыгом как-то не сходится с задачами данного чипа :)
Я смотрю несколько шире - если есть возможность не ставить дополнительных контроллеров - надо этим пользоваться :) На есп уже работает одно изделие, построенное по похожему принципу. И вифи и опрос датчиков и экранчик и перистальтический насос. Дискретных элементов минимум.

Вы упоминали по эмуляцию через сериальный RX/TX. На ПК драйвер от максима так и работает. Где-бы почитать про реализацию последовательного порта на RTL? мне не хватает для полноты эксперимента. Не уверен, что получится разложить чтение/запись на такты 16кгц.
 

pvvx

Активный участник сообщества
На ините таймера видел заглушку 0=>1. В моем обработчике таймера почти все по феншую. Цикл 60 или 90 мкс. 32кгц хотелось для эксперимента, я и так выкосил из драйвера 95% usleep. По большому счету и 60 кгц для данного эксперимента было-бы не лишним :)
Я смотрю несколько шире - если есть возможность не ставить дополнительных контроллеров - надо этим пользоваться :) На есп уже работает одно изделие, построенное по похожему принципу. И вифи и опрос датчиков и экранчик и перистальтический насос. Дискретных элементов минимум.
Работа с GPIO - это 0.33 мкс на одно обращение. В прерывании нужна их пачка. Когда работать другим задачам? Контролеров отложенных транзакций на шинах у данного MCU нет и он не может исполнять команды, пока стоит ready от шины. Ну нет у него PCI-E последних редакций :)
Работа GPIO контроллера рассчитывается для статических переключений, а не создания на нем клоков и прочего. Для дрыгания на asm с частотой CLK есть специализированные MCU. Например PIC33/24/32...
Вы упоминали по эмуляцию через сериальный RX/TX. На ПК драйвер от максима так и работает. Где-бы почитать про реализацию последовательного порта на RTL? мне не хватает для полноты эксперимента. Не уверен, что получится разложить чтение/запись на такты 16кгц.
Там стандартный IP блок UART по подобию от Intel 16550, аналогичный имеется во многих устройствах, включая PC. Доки с описанием выкладывались. У всех моделей по типу 16550 имеются различия в установке CLK, остальные регистры всегда одинаковы и софт совместим. Можно брать дрова от любого (хоть от PC), поправив установку CLK и дописав переключение мультиплексора i/o. Исходники (и примеры) инициализации UART и установки CLK/baud rate, c коммутацией выводов UART на i/o в SDK есть.
 
Последнее редактирование:

АндрейМ

New member
Когда работать другим задачам?
Нужно ли говорить, что RTOS не совсем RT? В отличии от 8266 у RTL все более-менее неплохо с TC, а моя задача вертится и на кривом ESP, под который программирование задачи свелось в распиливании монолитных алгоритмов на куски, которые не рушили бы магию внутри HAL. Говоря о реальном мире, мой драйвер отнимает 10 микросекунд за 90 микросекунд на 1 бит. На опрос датчиков +/- 1000 бит, потом пауза в 750 миллисекунд и так по кругу. Говорить о сверхнагрузке тут просто не приходится. Аналогично, при использовании IRQ - 1 мкс/60 мкс. За одно прерывание идет 0-3 обращений. Естественно, этот подход не пойдет для массивных протоколов с большими битрейтами.
Для дрыгания на asm с частотой CLK есть специализированные MCU.
Пока еще цел микроскоп - про молоток даже не подумаю.
Там стандартный IP блок UART по подобию от Intel 16550
16550 знаком со времен давних. Смутно вспоминаются очереди данных, только совсем не ничего не знаю про полудуплекс :( буду читать.
 

pvvx

Активный участник сообщества
Пока еще цел микроскоп - про молоток даже не подумаю.
Вообще существует ли аппаратный блок "owe wire" в каком MCU ? Или это шина только для DIY ? :)
I2C хотя бы как-то стандартизировали и дополнили спецификацией SMBUS, после чего и появились интегрированные контролеры для неё в MCU... А для "1 wire" что-то совсем редко и жидко...
---
Вики говорит, что 1-Wire: " В сельском хозяйстве применяется для многоточечного контроля температуры в теплицах, ульях, элеваторах, инкубаторах, овощехранилищах. Популярны домашние метеостанции, подключаемые по этому интерфейсу." :)
 
Последнее редактирование:

sharikov

Active member
Вообще существует ли аппаратный блок "owe wire" в каком MCU ? Или это шина только для DIY ?
Встречается в "тяжелых" soc. Например есть в imx25, во многих планшетных soc. Применяется для связи с контроллером батареи.

А для "1 wire" что-то совсем редко и жидко...
Для 1-wire все вдоль и поперек запатентовано maxim/dallas.
 

pvvx

Активный участник сообщества
Для 1-wire все вдоль и поперек запатентовано maxim/dallas.
Значит устройств с 1-Wire собирать и выпускать на продажу незя, не уплатив пошлины/оброка?
Нелзя что-ли было сделать проще - соединить RX и TX у UART (или SPI), при выводе TX с "открытым коллектором", да при передаче бит данных, после бита старта (или байта синхро начала блока), смотреть побитную "коллизию" в адресе (путем одновременного приема по RX), тем самым получая арбитраж по приоритетам и прочему, как это реализовано в CAN? Тогда никаких доп контролеров не требуется...
 
Последнее редактирование:

sharikov

Active member
Значит устройств с 1-Wire собирать и выпускать на продажу незя, не уплатив пошлины/оброка?
Вы где нибудь видели в продаже 1-wire устройства не maxim ??? Даже китайские ds18b20 маскируются под оригинал.
В европе даже rfid ридер с эмуляцией ds1990 продают полуподпольно: засудятнах!

Тогда никаких доп контролеров не требуется...
В приличных 1-wire контроллерах есть Search ROM accelerator. Под линуксом с его тяжелым переключением контекста полезная штука.
 

=AK=

New member
Вообще существует ли аппаратный блок "owe wire" в каком MCU ?
1-wire мастер аппаратно реализуется при помощи UART на 115200 с минимальной внешней обвеской (надо выход с открытым коллектором сделать). Так что аппаратный блок 1-wire есть почти в любом MCU. :D
 
Последнее редактирование:

АндрейМ

New member
В сельском хозяйстве применяется для многоточечного контроля температуры в теплицах, ульях, элеваторах, инкубаторах, овощехранилищах. Популярны домашние метеостанции, подключаемые по этому интерфейсу." :)
Подскажи любой другой термодатчик, который можно включать параллельно и засунуть в 6мм гильзу? А так ты прав, сельское хозяйство, как оно есть :)
 

pvvx

Активный участник сообщества
1-wire мастер аппаратно реализуется при помощи UART на 115200 с минимальной внешней обвеской (надо выход с открытым коллектором сделать). Так что аппаратный блок 1-wire есть почти в любом MCU. :D
Если бы было всё так (то не писал бы пост ранее про UART c ОК - уточнение для дурика =AK=)... но реализуется на UART не полностью и очень заморочисто. И данному алго-реализации без разницы, что UART, что SPI, что I2S. Аппаратно он не дешифрирует адрес и со "слейвом" проблемсы... Таким-же образом можно и на USB выводах сформировать 1-wire :)
Т.е. аппаратного контроллера 1-wire нет в 99.999% производимых MCU с Flash (это не считая 4-х битников c масочной ROM и прочими огрызками встроенными в малые чипы, коих на рынке производиться поболее - там бывают).
Кароче только через ASIC или набортный FPGA (если такой имеется у MCU).
https://datasheets.maximintegrated.com/en/ds/DS1WM.pdf
https://www.datsi.fi.upm.es/docencia/Micro_C/dallas/app120.pdf
 
Последнее редактирование:

pvvx

Активный участник сообщества
Мне интересно тему добить, забубню на DMA и прерываниях UART драйвер
Дык есть же уже примеры... Возьмите, как пишут, за базу хотя-бы из Linux (там тот-же тип UART в 90% кода), а если нет желания туда лезть и поддерживать его концепции, да нужен короткий код - пишите сами.
Лучшая реализация реализация UART => 1-wire и I2C/SPI на базе роутеров? :)
 
Последнее редактирование:
Сверху Снизу