Друзья, помогите понять проблему. Написал код для обработки нажатия кнопки энкодера (обвязка по даташиту с кондером и pull-down презистором).
В среде ардуино после загрузки все работает как надо, а вот если скопилировать аналогичный код в AmtelStudio7, программа глючит. Прерывание по нажатию срабатывает с 10 раза, иногда светодиод может включится, а по отжатию кнопки не погаснуть. В среде ардуино аналогичный код работает ОТЛИЧНО.
Сама atmega328p-au снята с платы ардуино и запущена от встроенного генератора. Спойлер#define F_CPU 8000000UL
Внутри обработчика прерывания бессмысленно отключать другие прерывания - все прерывания запрещены аппаратно. Вместо int main лучше писать void main и ничего не возвращать - так сэкономится пару байт памяти.
Логичнее в обработчике менять фронт прерывания, а не заниматься лишними проверками.
Ну вот, лучше что нибудь дельное подсказали ) может фьюзы или ещё что? Пробовал в cvavr code wizard, там все ставится в дефолт, там все работает, копирую в amtel studio, глючит.
Как же не делал, написал же что делал ) И что там оформлять, там кода на четверть страницы. Какая то видимо ерундовая проблема. Тот бит что вы нашли уже в качестве экспериментов проскочил, поэтому и написал что очепятка...
Это вам надо или мне? Тогда выкладывайте с чем работаете на данный момент.
И уважать надо других, а то помогите и при этом ковыряйтесь в моём говне. Или - или.
Мне кажется вы несколько преувеличиваете, никакого неуважения нет в помине, одна сплошная уважуха ) И никакого моего "говна" в трех с половиной строчки простейшего кода я думаю нет, т.е. задача тривиальная - обработка нажатия кнопки и зажигания светодиода. Чтобы оно (мое говно) появилось хочу хотя бы решить эту проблему и настроить программное обеспечение. ) Поэтому еще раз: Программа работает в дебаггере, но не работает на плате - не срабатывает прерывание (срабатывает с 5-10 нажатия). Если тот же код загрузить через CVAVR все отлично работает. Если что, отсутствие "дребезга" кнопки проверено осциллографом. Сигнал с кнопки попадает на входную ножку МК (отсутствие дефектов монтажа). Кнопка подключена с кондером 0.1 и pull-down резистором 10К. ATMEGA 328P-AU запущена от внутреннего генератора. В настройках АМТЕЛ-а выбрана ATMEGA 328P. На всякий случай еще фьюзы МК прикладываю. Спасибо за внимание!
Говно - это когда вы начинаете предложение с маленькой буквы, пишете без знаков препинания, отступов и т.п. Когда мне нужно напрягаться что бы понять о чё вы. Аналогично и в тексте программы. Я должен смотреть на это и разбираться с вашим говнокодом, пусть даже с 3-мя строчками. Проблем нет, но заради чего? Вы пальцем не можете пошевелить, что бы привести это в удобочитаемый вид, при том что это ВАМ надо, а хотите получить решение вашей проблемы. Вот это и называется неуважением. Это ж как 2х2, что тут можно разжевывать.
Удачи!
Ппц. Удобочитаемый это как, я просто не понимаю о чем речь? Там все с комментами, если об этом, ну кроме записи в порт, но тут даже мне не требуется комментарий.
В результате выяснилось что МК работает не стабильно от внутреннего генератора на частоте 8Мгц! Включил по дефолту из даташита CKDIV8, т.е. частота /8 и все заработало… Правда тут 1Мгц будет. Не понятно не работает в принципе на 8-ми или что, мне и 1-го хватит ))). Так что кто все-таки столкнётся с подобной проблемой теперь знает шо делать. А то тут столько народу ходит, то ли лень писать то ли программистов нет, просто удивительно!!! Один товарищ тут развел оффтоп - бредоромашку про уважение/не уважение... ШОК! По фату такие горе советчики, лучше вообще ничего не пишите. Если руки чешутся а заний НУЛЬ, посмотрите хорошее кино на ххх.ком…