Техника

Вопрос по мк AVR. Останавливается ли счётчик мс функцией delay?

У контроллеров есть функция millis();, которая возвращает количество миллисекунд с момента запуска, и есть delay(ms);, приостанавливающая выполнение программы. Вопрос - продолжает ли набираться значение, которое вернёт millis();, пока программа ждёт по команде delay();?
Продолжает набираться. Я так тестил ее точность на ардуине. Таймер - это как бы отдельное ядро. Точно так же код генератора колебаний (через таймер) не конфликтует с основным кодом.

Но вообще не очень понятно, зачем нужен этот шлак AVR. От одной официальной Arduino IDE меня как профи программиста просто клинит. А STM32 и дешевле, и куда мощнее. Ну да, писать тяжело, доков толком нет, зоопарк моделей, надо именно быть профи - ну так написал бы один такой профи библиотек, а другие бы их юзали.
Купил китайскую (!) плату на STM32 рублей на 200-300 дороже ардуины - а там и кнопка вкл\выкл, и целых 2 USB-разъема (один, видимо, с 232, другой просто питание), и разъем для батарейки (для часов, наверно), и пинов как у 2 ардуин, и CAN, и тактовая частота высокая.

P. S. Дороже брал осознанно. Для прототипирования надо выбирать плату покруче. А минимальная - намного дешевле ардуины, т. к. сам чип намного дешевле.
Sherkhan Golanov
Sherkhan Golanov
5 149
Лучший ответ
Мухаммад . А чем так плох AVR? Я не говорю про Ардуино, а именно про сам камень. Предлагаете новичкам сразу на STM сесть? Что бы они запутавшись только в одной настройке тактирования камня, сразу бросили это дело?
Посеветую слезать вам с этой Arduino IDE и писать на чистом Си, так вы поймете все тонкости работы с контроллером, да и на другие контроллеры будет легче перелезть. А так как сказали выше, таймер тикает постоянно, независимо от delay(),, а в его прерывании (таймера) инкрементируется переменная, значение которой и возвращает функиция millis()
Ярослав Андрийчук Да мне этот AVR нужен чисто так, по мелочам, я этим профессионально не занимаюсь, так что особо перелезать на что-то смысла нет, ещё переучиваться заново..