8 БИТ #29 Что здесь делает yield()?

  Рет қаралды 3,015

arduinonsk

arduinonsk

Күн бұрын

Пікірлер: 33
@ЛштшфумАщвф
@ЛштшфумАщвф Жыл бұрын
Отлично, очень интересно, спасибо!
@ДмитрийМелентьев-ю9с
@ДмитрийМелентьев-ю9с 6 жыл бұрын
Спасибо, всё понравилось) Понял «привет» и «пока»! )))
@СергейС-н2ю
@СергейС-н2ю 6 жыл бұрын
Дмитрий Мелентьев, тут особая подача контента, к ней привыкнуть надо. И иметь базовые знания си и ассемблера
@pichbah
@pichbah 6 жыл бұрын
Хотелось бы поподробнее - "Для чайников".
@arduinonsk
@arduinonsk 6 жыл бұрын
да я всё по существу вопроса рассказал ) могу еще раз пересказать. Arduino в программном смысле - это такой фреймворк, т.е. набор библиотек, который заставляет нас при разработке встраиваемых решений придерживаться определенных подходов. Ядро Arduino кроссплатформенно, то есть если вы сделаете прослойку между регистрами контроллера и wiring.c (грубо говоря), то вам автоматически бесплатно достанется всё, что есть на верхнем уровне фреймворка. Ядро Arduino портировано на многие контроллеры, в том числе на те, которые используют операционные системы реального времени (типа FreeRTOS). В ядре Arduino есть такая функция delay(int), которая задупляет контроллер, и он не делает ничего в течение N миллисекунд. Подобные функции называются блокирующими. Использование блокирующих функций в операционных системах - это плохо, потому что система может не успеть среагировать на какое-то событие, потому что ресурсы оказались заблокированы, и обработчики не смогли вызваться. Чтобы сделать delay(int) неблокирующей, в нее в каждую итерацию цикла, который проверяет, не прошла ли тысяча микросекунд, добавили функцию yield(). Это очень стандартная функция для операционной системы, которая сообщает, что задача хочет отдать управление другим задачам. Если программировать Arduino c контроллерами ATmega, эта функция бесполезна, и на ее место просто вставлена затычка, которая ничего не делает.
@ЕвгенийЕгоров-с9ъ
@ЕвгенийЕгоров-с9ъ 6 жыл бұрын
Александр Соколов на сколько мне, как чайнику понятно, при использовании delay на esp8266 чип не приостанавливает работу, то есть, например, продолжает принимать показания с датчиков, что аналогично использовании функции millis. Поправьте, если ошибаюсь.
@arduinonsk
@arduinonsk 6 жыл бұрын
Всё верно
@spajalnikom
@spajalnikom 6 жыл бұрын
О,я о такой функции и не знал.Спасибо.
@transformer7171
@transformer7171 6 жыл бұрын
"Встреча в пустыне" Научно-фантастический рассказ Росоховатский :-)
@MrRediska
@MrRediska 6 жыл бұрын
Первыйнах! Лайк поставил, сейчас задачу переключу
@alekskandrpetushkov
@alekskandrpetushkov 6 жыл бұрын
Что Вы прыжите право - лево, я только в одну сторону монитора голову поверну, нужно в другую....
@arduinonsk
@arduinonsk 6 жыл бұрын
Хоть где-то физкультурой занимаюсь
@alekskandrpetushkov
@alekskandrpetushkov 6 жыл бұрын
нужно нужно!
@MaPeHuH
@MaPeHuH 6 жыл бұрын
Классссс! А что можно занятного без freertos замутить на avr с этой функцией?
@arduinonsk
@arduinonsk 6 жыл бұрын
можно написать какую-нить смешную реализацию yield и прикалываться над друзьями, когда она будет вызываться каждые n микросекунд во время delay
@arduinonsk
@arduinonsk 6 жыл бұрын
Типа вот так: void setup() {Serial.begin(115200);} void loop() {delay(1000);} void yield(){Serial.println("ti loh");} Так хз откуда вызывается yield )))))) Можно его где-то спрятать еще.
@Zeksait
@Zeksait 6 жыл бұрын
на всех видео ставлю скорость 0.75
@transformer7171
@transformer7171 6 жыл бұрын
Какой шустрый :-) А поговорить? :-)
@arduinonsk
@arduinonsk 6 жыл бұрын
Там народ жаловался, что я долго рассказываю.
@transformer7171
@transformer7171 6 жыл бұрын
88 секунд :-) Твою же мать дивизию :-) Я даже моргнуть не успел толком :-)
@transformer7171
@transformer7171 6 жыл бұрын
Там уже не народ, там наверно искусственный интеллект жаловался :-)
@arduinonsk
@arduinonsk 6 жыл бұрын
Нужно ли искусственному интеллекту давать гражданство ?
@transformer7171
@transformer7171 6 жыл бұрын
Саудиты в Саудовской Аравии уже выдали гражданство. Так что это уже не вопрос, это констатация факта.
@СергейС-н2ю
@СергейС-н2ю 6 жыл бұрын
Так, то что есп32 не уходит в ступор при вызове делай это замечательно, а в есп8266 так же?
@arduinonsk
@arduinonsk 6 жыл бұрын
в ядре esp8266 своя реализация delay, но там тоже есть yield(), который называется esp_yield(). Прошу в сорцы: github.com/esp8266/Arduino/blob/master/cores/esp8266/core_esp8266_wiring.c
@ЕвгенийЕгоров-с9ъ
@ЕвгенийЕгоров-с9ъ 6 жыл бұрын
Илья, скажи «стаааруууухааа»!
@arduinonsk
@arduinonsk 6 жыл бұрын
Зачем )
@ЕвгенийЕгоров-с9ъ
@ЕвгенийЕгоров-с9ъ 6 жыл бұрын
vk.com/video1702505_163580139 :)
@vladimirstar9745
@vladimirstar9745 6 жыл бұрын
)
Quilt Challenge, No Skills, Just Luck#Funnyfamily #Partygames #Funny
00:32
Family Games Media
Рет қаралды 55 МЛН
8 БИТ #30 Спокойной ночи!
3:34
arduinonsk
Рет қаралды 6 М.
Trump announced the end date of the war / Emergency plane landing
14:05
Как стать ДЕЙСТВИТЕЛЬНО хорошим программистом
7:35
Бинарный происк
Рет қаралды 159 М.
Уроки Ардуино. Прерывания по таймеру
9:04
Заметки Ардуинщика
Рет қаралды 111 М.
Quilt Challenge, No Skills, Just Luck#Funnyfamily #Partygames #Funny
00:32
Family Games Media
Рет қаралды 55 МЛН