Спасибо, всё понравилось) Понял «привет» и «пока»! )))
@СергейС-н2ю6 жыл бұрын
Дмитрий Мелентьев, тут особая подача контента, к ней привыкнуть надо. И иметь базовые знания си и ассемблера
@pichbah6 жыл бұрын
Хотелось бы поподробнее - "Для чайников".
@arduinonsk6 жыл бұрын
да я всё по существу вопроса рассказал ) могу еще раз пересказать. Arduino в программном смысле - это такой фреймворк, т.е. набор библиотек, который заставляет нас при разработке встраиваемых решений придерживаться определенных подходов. Ядро Arduino кроссплатформенно, то есть если вы сделаете прослойку между регистрами контроллера и wiring.c (грубо говоря), то вам автоматически бесплатно достанется всё, что есть на верхнем уровне фреймворка. Ядро Arduino портировано на многие контроллеры, в том числе на те, которые используют операционные системы реального времени (типа FreeRTOS). В ядре Arduino есть такая функция delay(int), которая задупляет контроллер, и он не делает ничего в течение N миллисекунд. Подобные функции называются блокирующими. Использование блокирующих функций в операционных системах - это плохо, потому что система может не успеть среагировать на какое-то событие, потому что ресурсы оказались заблокированы, и обработчики не смогли вызваться. Чтобы сделать delay(int) неблокирующей, в нее в каждую итерацию цикла, который проверяет, не прошла ли тысяча микросекунд, добавили функцию yield(). Это очень стандартная функция для операционной системы, которая сообщает, что задача хочет отдать управление другим задачам. Если программировать Arduino c контроллерами ATmega, эта функция бесполезна, и на ее место просто вставлена затычка, которая ничего не делает.
@ЕвгенийЕгоров-с9ъ6 жыл бұрын
Александр Соколов на сколько мне, как чайнику понятно, при использовании delay на esp8266 чип не приостанавливает работу, то есть, например, продолжает принимать показания с датчиков, что аналогично использовании функции millis. Поправьте, если ошибаюсь.
@arduinonsk6 жыл бұрын
Всё верно
@spajalnikom6 жыл бұрын
О,я о такой функции и не знал.Спасибо.
@transformer71716 жыл бұрын
"Встреча в пустыне" Научно-фантастический рассказ Росоховатский :-)
@MrRediska6 жыл бұрын
Первыйнах! Лайк поставил, сейчас задачу переключу
@alekskandrpetushkov6 жыл бұрын
Что Вы прыжите право - лево, я только в одну сторону монитора голову поверну, нужно в другую....
@arduinonsk6 жыл бұрын
Хоть где-то физкультурой занимаюсь
@alekskandrpetushkov6 жыл бұрын
нужно нужно!
@MaPeHuH6 жыл бұрын
Классссс! А что можно занятного без freertos замутить на avr с этой функцией?
@arduinonsk6 жыл бұрын
можно написать какую-нить смешную реализацию yield и прикалываться над друзьями, когда она будет вызываться каждые n микросекунд во время delay
@arduinonsk6 жыл бұрын
Типа вот так: void setup() {Serial.begin(115200);} void loop() {delay(1000);} void yield(){Serial.println("ti loh");} Так хз откуда вызывается yield )))))) Можно его где-то спрятать еще.
@Zeksait6 жыл бұрын
на всех видео ставлю скорость 0.75
@transformer71716 жыл бұрын
Какой шустрый :-) А поговорить? :-)
@arduinonsk6 жыл бұрын
Там народ жаловался, что я долго рассказываю.
@transformer71716 жыл бұрын
88 секунд :-) Твою же мать дивизию :-) Я даже моргнуть не успел толком :-)
@transformer71716 жыл бұрын
Там уже не народ, там наверно искусственный интеллект жаловался :-)
@arduinonsk6 жыл бұрын
Нужно ли искусственному интеллекту давать гражданство ?
@transformer71716 жыл бұрын
Саудиты в Саудовской Аравии уже выдали гражданство. Так что это уже не вопрос, это констатация факта.
@СергейС-н2ю6 жыл бұрын
Так, то что есп32 не уходит в ступор при вызове делай это замечательно, а в есп8266 так же?
@arduinonsk6 жыл бұрын
в ядре esp8266 своя реализация delay, но там тоже есть yield(), который называется esp_yield(). Прошу в сорцы: github.com/esp8266/Arduino/blob/master/cores/esp8266/core_esp8266_wiring.c