- Вложения
-
- int0-1mega8.asm
- собственно код.
- (2.27 КБ) 363 скачивания
Глюк ШИМ при вызове прерывания INT0, INT1
Добрый день Котяры. Помогите разобраться. Вроде бы простой код а ведет себя непредсказуемо (на мой взгляд). Пишу в OCR2 127, запускаю таймер, далее вызываю прерывание INT0, и в OCR2 пишется 128. INT1 - в OCR2 пишется 1. И это еще ДО выполнения самого прерывания. Вроде бы и ошибиться негде, а не работает. 
- Реклама
а ты в дебагере просматривал как у тебя код работает??? на линиях инт_0 и инт_1 постоянно низкий уровень и, в соответствии с настройками, прерывания возникают постоянно, или так должно быть?
Потом у тебя постоянно загаживается стек, т.к. не вызавается команда ret или reti .
Если хочешь могу немного подправить код.
Потом у тебя постоянно загаживается стек, т.к. не вызавается команда ret или reti .
Если хочешь могу немного подправить код.
Если бы на Си написать в CVAVR то навеняка работало бы.Rubin писал(а): Вроде бы и ошибиться негде, а не работает.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Pirotehnick, превеликое Спасибо
. Код заработал, только не понял в чем трабла была: в настройке таймера или в стеке.
- Реклама
проблема была в настройке прерываний (INT0, INT1). В соответствии с твоими настройками прерывание инт_0 генерировалось постоянно, пока на соответствующем выводе держался низкий уровень.
И, как я уже говорил, у тебя постоянно загаживался стек, так как не вызывалась команда reti, видимо ты пытался сделать возврат в подпрограмму loop с помощью rjmp, можно было и так, но тогда тебе было бы нужно очистить стек, например с помощью команды pop.
А вообще не плохо было бы описать по подробнее, что требуется от данной программы, а то сразу и не понятно что ты хочешь сделать.
И, как я уже говорил, у тебя постоянно загаживался стек, так как не вызывалась команда reti, видимо ты пытался сделать возврат в подпрограмму loop с помощью rjmp, можно было и так, но тогда тебе было бы нужно очистить стек, например с помощью команды pop.
А вообще не плохо было бы описать по подробнее, что требуется от данной программы, а то сразу и не понятно что ты хочешь сделать.


