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

Делюсь опытом Power Profiler на рельсах AdHoc protocol

pvvx

Активный участник сообщества
Опишите как работает калбаск от прерывания с разрешением этого прерывания.
 

pvvx

Активный участник сообщества
The NVIC and the processor core interface are closely coupled, which enables low latency
interrupt processing and efficient processing of late arriving interrupts.
All interrupts including the core exceptions are managed by the NVIC.

какой FreeRTOS...
охренеть, да ты реально просто баньщик!
Офигеть 0 да вы просто тролль с копипастом из google и пустой головой.
 

pvvx

Активный участник сообщества
Пора прекращать с вами возиться. Видно что это бессмысленно, т.к. нет базовых знаний реальных вещей.
 

pvvx

Активный участник сообщества
Вас уже давно не просят о помощи. Вам пытались описать как оптимально решить вашу задачу.
Т.е. это вы обратились за помощью и неуважительно относитесь к оппонентам высказывающим своё мнение (о себе я молчу).
Может на этом и закроем тему AdHoc?
 

cheblin

Member
All microcontrollers provide a feature called interrupts. An interrupt is an asynchronous event
that causes stopping the execution of the current code on a priority basis (the more important the
interrupt is, the higher its priority; this will cause that a lower-priority interrupt is suspended). The
code that services the interrupt is called Interrupt Service Routine (ISR).
Interrupts are a source of multiprogramming: the hardware knows about them and it is responsible
of saving the current execution context (that is, the stack frame, the current Program Counter and
few other things) before switching to the ISR. They are exploited by Real Time Operating Systems to
introduce the notion of tasks.
Without help by the hardware it is impossible to have a true preemptive
system, which allows switching between several execution contexts without irreparably losing the
current execution flow.
теперь понятно какую дичь, типа, ветер от того, что деревья гнуться,
от тебя приходится выслушивать?
 

pvvx

Активный участник сообщества
Сохранение и восстановление регистров CPU и прочей фигни при отработке аппаратного прерывания по вашему не называется сохранением и восстановлением контекста прерываемой задачи. На этом вам можно заканчивать программировать. Пока.
 

cheblin

Member
pvvx ты просто веди себя поскромнее,
я постоянно пытаюсь вести беседу в нормальном, продуктивном русле, пока ты не начинаешь нести очередную пургу и хрень.

агитатор из тебя зачётный,... вот только фанера гремит за спиной.

и убери эту дурацкую подпись
ESP8266 устарел по всем направлениям...
готовить уметь надо
 

cheblin

Member
upload_2020-2-1_23-49-43.png
NVIC is a dedicated hardware unit inside the Cortex-M based microcontrollers

это вполне конкретные куски кремния на кристале
 

pvvx

Активный участник сообщества
NVIC is a dedicated hardware unit inside the Cortex-M based microcontrollers

это вполне конкретные куски кремния на кристале
Смотрю дела с AdHoc для MCU опять встали, автор открыл для себя что у элементарных MCU есть контроллер прерываний...
Ранее прогнозируемые сроки появления первой альфа версии AdHoc на MCU переносятся на неопределенный срок.
 

pvvx

Активный участник сообщества
Как там дела в AdHoc с ручной отладкой?

Задача при ручной отладке проcта:

На любых имеющихся под рукой утилитах проверить или локализовать найденную ошибку в комплексной работе контроллера с оконечным устройством.

Тут можно конкретизировать – цели AdHoC упростить программисту работу по протоколу связи, но сам интерфейс создается не ради самого протокола связи, а для обмена данными между устройствами выполняющими определенные задачи.

Взять тот-же PowerProfiler. Втыкаем к нему на шину I2C DAC и хотим протестировать – работает ли он или уточнить что там в нем сбивается и где причина...

Запускаем … э что запустить-то? Ведь протокол AdHoC шифрован для человека…

А – по версии автора надо поставить java и описать там что-то и послать ему. Через пару дней придет ответ… или не придет?

Будем считать что пришел. Нужна ещё VS или какой специализированный компилятор… Установили.

Так – теперь нужно собрать специальный новый проект на железке… Копаемся в старом хламе и ищем подходящую железку… Нашли.

Покорпели и накалякали программу… пару вечеров отлаживали, т.к. забыли то да сё, что там конкретно в той старой железке…

Вот теперь можем подключить её к испытуемому. Ура!

Включаем… Что-то не так. Тестовый блок нескольких итераций переключения DAC из 0 в 3 по капе посылается, но ничего на выходе DAC не видно. Работает ли он?

Вспоминаем, что в этом хламе, в виде I2C DAC MCP4725 не пашет выход на низком уровне от GND. Блин – опять всё переписывать…

Переписали, запрограммировали в железку… Ночи не спали…

Включаем – теперь передается блок с набором кода DAC 0 и 0xfff.

Смотрим конечное устройство:
upload_2020-2-4_10-27-21.png
И видим, что в его дровах I2C лишний флаг и передается лишний байт…
------------------
Ндас - с AdHoc убьем месяцы чтобы это получить...
Безусловно я сделал это проще, за пару минут:
upload_2020-2-4_10-29-15.png
Вписав в первую же попавшуюся утилиту код, который нужно передать для получения на шине i2c...
Благо кодировка пакета элементарная...
 

pvvx

Активный участник сообщества
Дык как - посоревнуемся кто быстрее набьет в hex редакторе пакет по протоколу пусть modbus или AdHoc?
А так-же в логе отследит где передается что-то не то по каналу?
 

cheblin

Member
Дык как - посоревнуемся кто быстрее набьет
Устраивается на работу секретарша, её спрашивают:
— Скорость машинописи какая?
— 9000 знаков в минуту.
— Господи, разве можно с такой скоростью печатать?
—Конечно, можно, правда ТАКАЯ фигня получается!

все персонажи вымышлены, а совпадения случайны
 

pvvx

Активный участник сообщества
Фигня давно исправлена :p Но не благодаря AdHoc, а благодаря простой кодировке протокола.
upload_2020-2-4_10-49-5.png
В любом терминале...
Включить инициализацию I2C по заранее сохраненным установкам: 01 01 00
Передать в устройство на шине I2C с адресом 0xC0 блок последовательности байт 00 00 и 0f ff:
20 0c С0 xx 0fff 0000 0fff 0000 0fff 0000 0fff 0000 0fff 0000 0fff 0000 0fff 0000 0fff 0000
 

pvvx

Активный участник сообщества
Можно и в JS
JavaScript:
function SetDAC(value){
    log('Send command #0C: DAC Out: '+ value);
    let x = value & 0xfff;
    characteristicCache.writeValue(new Uint8Array([4, 0x0C, 0xC0, 2, x>>8, x&0xff]));
}
А так-же в Питоне и любых прочих языках.

И герои не вымышлены, в отличии от вымышленного AdHoc :) :)
 

cheblin

Member
альфа версии AdHoc на
друх,
я тебе уже кажися настоятельно рекомендовал, задёрнуть штаны, и перестать грязно и не умело фантазировать ручками на тему AdHoc протокола.

если так интересно, был наконец реализован деплоймент сгенереных файлов в папки проектов пользователя, долго не мог придумать как это сделать красивее... казалось что лучше чем пользовательский скрипт ничего не придумать... однако нашел ещё более красивое решение...

элементарных MCU есть контроллер прерываний.
что? до банщика наконец доперло, что прерывания существуют безовсяких ртосей? вот и славно
 

cheblin

Member
Питоне и любых прочих языках.
банщик переключился на текстовый формат?
а если нет, то ему стоит узнать и про endianness, потому как если бы он про это слышал, он не стал бы передавать структуры в сеть, так, как он делает сейчас.
 

pvvx

Активный участник сообщества
друх,
я тебе уже кажися настоятельно рекомендовал, задёрнуть штаны, и перестать грязно и не умело фантазировать ручками на тему AdHoc протокола.

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