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

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

pvvx

Активный участник сообщества
банщик переключился на текстовый формат?
а если нет, то ему стоит узнать и про endianness, потому как если бы он про это слышал, он не стал бы передавать структуры в сеть, так, как он делает сейчас.
Клоун не знает как в исполняемом коде си (runtime) определить какой индеец в индианах у данного CPU?
Или в пакете IP не написано какой там индеец?
 

pvvx

Активный участник сообщества
фигасе, у банщиков ещё есть и своя - терминология банщика....
Безусловно. Я же не оперирую заученными названиями функций из какой-то изученной вами библиотеки для какого-то языка что специфично только для начинающего программиста на нем. Я говорю по русски...
Для стыковки терминологии укажите какой "индианес" у MCP4725: http://ww1.microchip.com/downloads/en/DeviceDoc/22039d.pdf
И на счет вложенных в прерывание функций - это моветон. Во время их исполнения все прерывания запрещены, или запрещены все выше по заданному в контроллеру прерываний приоритету.
Калбаков в прерывании не бывает. Калбак от прерывания - это когда в прерывании устанавливаются флаги для ОС и производится выход из прерывания. По флагам, из ОС уже и запускает калбак.
 

pvvx

Активный участник сообщества
Реализация калбаков по прерываниям зависит от ОС. Затраты на данный процесс так-же зависит от ОС.
Она может быть примитивной и неявной для первого взгляда начинающего программера.
Одна из задач ОС - распределение обработки по событиям. В примитивном виде это может быть реализовано по флагам в основном цикле main().
Прерывание ставит флаг, а main опрашивает его или другие флаги по приоритету и вызывает нужную функцию - таки и реализуется калбаск по прерыванию в примитивном виде. :p
 

pvvx

Активный участник сообщества
@cheblin - Когда изучите основы программирования, тогда опять зайду проконтролировать… :p
 

pvvx

Активный участник сообщества
Домашнее задание для @cheblin
Определить по каким причинам возникают недостатки у Callback - обратного вызова функций и почему это не годится для увеличения пропускной способности канала передачи, кол-ву ошибок в коде и времени на разработку у программиста, на что была заявка у AdHoc:
Недостатки:
  • Уменьшение производительности, связанной с дополнительными вызовами «обратной функции», прямо пропорционально «стоимости вызова функции» в среде выполнения и количеству дополнительных вызовов при работе программы.
  • Ухудшение читаемости исходного кода — для понимания алгоритма программы необходимо отслеживать всю цепочку вызовов.
 

cheblin

Member
банщику, быстро, быстро читать про Vector Table и что там, в её содержимом.
 

pvvx

Активный участник сообщества
банщику, быстро, быстро читать про Vector Table и что там, в её содержимом.
Как вижу опять необходима помощь...
Таблица адресов процедур не имеет ни какого отношения к callback.
Функция обратного вызова может быть задана по имени или иметь номерное название, может быть даже фиксирована и определяться битом для её вызова. Это зависит от реализации самого кода вызова callback-ов.
Таблица функций переходов по irq или switch не является системой callback-ов. Это всего малая частная часть.
С таким вашим подходом к понятию callback можно причислить любой бит в CPU.
 
  • Like
Реакции: A_D

pvvx

Активный участник сообщества
Перечитайте определение callback.
Обратный вызов позволяет в функции исполнять код, который задаётся в аргументах при её вызове. Этот код может быть определён в других контекстах программного кода и быть недоступным для прямого вызова из этой функции.
Мы не вызываем irq как функцию. Т.е. для системы прерывание по irq не является вызываемой функцией - инициацию irq производит аппаратное событие.
Исполняется не функция, а прерывание и переход по таблице :p
 
  • Like
Реакции: A_D

pvvx

Активный участник сообщества
Задаем код исполнения и по его по получению по шине CPU выполняет назначенную функцию - это значит, что исполняемый код CPU в flash или ещё где является по вашему callback-ами.
 

cheblin

Member
Таблица адресов процедур не имеет ни какого отношения к callback.
это и есть таблица колбэков прибитая гвоздями.

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

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

потому они и называются callback = call me back
 

pvvx

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

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

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

потому они и называются callback = call me back
Я уже понял - у вас каждый бит программы для ALU CPU является callback-ом. Как и каждая функция шага вашего мышления в заданных заранее в callback-ах :)
Домашнее задание не сделали, а опять гоните пургу для отвлечения. Юлите по полной.
Т.к. у вас своё личное представление что такое callback, которое я у вас выявил, то от употребления слова callback вам следует отказаться. Оно не стыкуется с общественным и прочим.
 

pvvx

Активный участник сообщества
upload_2020-2-4_13-46-36.png
Реализация калбаков по прерываниям зависит от ОС. Затраты на данный процесс так-же зависит от ОС.
Она может быть примитивной и неявной для первого взгляда начинающего программера.
Одна из задач ОС - распределение обработки по событиям. В примитивном виде это может быть реализовано по флагам в основном цикле main().
Прерывание ставит флаг, а main опрашивает его или другие флаги по приоритету и вызывает нужную функцию - так и и реализуется калбаск по прерыванию в примитивном виде. :p
 

pvvx

Активный участник сообщества
Гуляйте со своим NVIC - он этого не делает. Не перезванивает назад.
 

pvvx

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

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

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

потому они и называются callback = call me back
Обнаружилось, что часть вы всё-таки осознаете, на подсознательном уровне. Это происходит по тому, что я вам пишу на русском языке, а он обладает передачей свойств, и описывает звуками основные свойства...
Если, как вам и было рекомендовано вы воздержитесь от употребления языка и лексикона Эллочки-Людоедочки (т.е. англ-сакского), то всё выходит в норме:
"это и есть таблица прибитая гвоздями. хочешь, можешь создать свой массив указателей на функции и дергать их."
А вот дальше - хуже, т.к. полная белиберда:
"это функции которые сам не вызываешь, а передаёшь кому-то, куда-то указатель на них. в надежде на то, что в нужный момент они будут вызваны.
потому они и называются - 'перезвони мне'"

т.к. "перезванивания" тут не происходит.
Или не происходит передачи обратно в прерванный (основной) процесс указания на новую задачу или к исполнению какой-либо функции.
 

cheblin

Member
ща нам банщик переведёт с английского call of duty

не ржать я сказал!
 

pvvx

Активный участник сообщества
Теперь вернемся к основной задаче – поступает звонок, но перезвонить она не может.
Не выполняется ваша “в надежде на то, что в нужный момент они будут вызваны”.
Буфер передачи занят. Может и куча “заказов перезвонить” переполнена.
В прерывании NVIC будете ждать освобождения передатчика? :)
Всем лежать полчаса.

Как в процессе перезвонить нам поможет:
  • Уменьшение производительности, связанной с дополнительными вызовами «обратной функции», прямо пропорционально «стоимости вызова функции» в среде выполнения и количеству дополнительных вызовов при работе программы.
  • Ухудшение читаемости исходного кода — для понимания алгоритма программы необходимо отслеживать всю цепочку вызовов.
 

cheblin

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