Как стать автором
Обновить

Комментарии 18

прошу побольше критики

Изучите, пожалуйста, как составляются блок-схемы.
Зачем? Зачем блок схемы при простом объяснении работы простого Ардуино проекта? Думаю, это излишне.
Если блок-схемы не нужны, то не надо пытаться вставить их в статью. Если всё же блок-схема добавляется, то гораздо лучше, если она будет выглядеть нормально, а не так, как у автора.
Хорошо, спасибо.
Поздравляю с изобретением ПИД-регулятора
немного дешевле чем ПИД регулятор и в моем есть таймер :)
Так как это один из первых проектов, прошу побольше критики!

Ваш код ужасен.

А в чем именно заключается ужас, да это моя первая программа, с помощью которой я в большей степени изучал С++.
… прошу побольше критики!

Статья очень несодержательная.
Мало картинок.

Хорошо, «кишки» устройства я добавлю, как только придумаю куда их впихнуть!
После нескольких месяцев разбора принципов работы с Arduino IDE
За несколько месяцев вы могли бы разобраться с Атмел Студио.

Ардуину ставят чтоб «вот прям щас», и использовать готовый код из интернета.
Я разбираюсь и стем и с другим параллельно, в добавок еще и с протеусом, тут больше дело не в том, что я разбирался с Ардуино, а в том, что я отрабатывал алгоритм работы, учитывая особенность печи.
Примитивный контроллер прерываний ATMEGA328 не поддерживает вложенных прерываний и их приоритета. Поэтому внутри обработчика прерывания (функция clkEnc()) запрещать прерывания (вызов cli()) и затем разрешать их (вызов sei()) абсолютно бессмысленно. Обработчик и так будет выполнен от начала до конца без возможности перехвата потока выполнения другими прерываниями.
Хотите сказать, что он примитивнее atmega8? Я на ней вложенные прерывания делал.
Приношу извинения, был немного неточен, вложенные прерывания возможны, но Вы должны для этого предпринять некоторые действия: внутри обработчика «руками» разрешить обработку другого прерывания, иначе оно будет обработано только после завершения текущего обработчика. Запрещать прерывания внутри обработчика для атомарности, если они не были предварительно разрешены в этом обработчике не нужно. Из документации atmega8:
When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts are disabled. The user software can write logic one to the I-bit to enable nested interrupts. All enabled interrupts can then interrupt the current interrupt routine. The I-bit is automatically set when a Return from Interrupt instruction – RETI – is executed.
Спасибо, пример работы энкодера был взят с просторов, так как я не совсем еще разобрался, но от себя так же добавлю, что при изучении программирования Atmega на ассемблере, первое что делал обработчик, так это запрещал прерывания, а в конце разрешал.
нужно больше volatile!
Везде написано, что при использовании функции переменную нужно объявлять как volatile и так как я решил поделиться проектом, я использовал volatile, но у меня и без них все работало :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории