Помогите, кто может. PIC 16f 628 контроллер, задействован 1-й таймер TMR1, разрешаю прерывания INTCON(GIE), устанавливаю прерывания по переполнению PIE1(TMR1IE), отслеживаю флаг PIR1(TMR1IF), рабочая точка программы уходит и возвращается обратно.
В подпрограмме обработки
запрещаю прерывания,
прибавляю 1 к переменной количества прерываний,
сбрасываю флаг переполнения,
разрешаю прерывания,
возврат в основной блок программы.
Проблема в том, что рабочая точка уходит по прерыванию 2 раза, на третий раз не реагирует.
Максимальное число получается 196607 hex 2 FF FF, то же не понимаю, получается 2 раза переполняется, а на 3 обнуляется.
Накопительная переменная 4-х байтная, кол-во прерываний 1 или 2-х байтная, без разницы.
Страница 1 из 1
Как Контролировать Прерывания
#1
Отправлено 20 Март 2010 - 19:53
С 98г. электроника как хобби, но сейчас пдумываю заниматься ею плотнее.
#2
Отправлено 20 Март 2010 - 20:59
Цитата
рабочая точка программы уходит и возвращается обратно.
Объясните проблему попонятнее и желательно с приведённым кодом.
Я гдето тут выкладывал пример работы с таймером, поищите, может поможет.
#3
Отправлено 20 Март 2010 - 23:58
Про рабочую точку, это я вычитал где-то, у зарубежных авторов. Я имел ввиду программа выполняется контроллером, последовательно, тот адрес, который исполняется в данный момент времени назван рабочей точкой. Это мне так понятнее.))
Код на бейсике. Программа не вся, чтобы долго не искать, это только прерывание, как я его сделал.
Код на бейсике. Программа не вся, чтобы долго не искать, это только прерывание, как я его сделал.
Прикрепленные файлы
-
21.rar (12,72К)
Количество загрузок:: 157
С 98г. электроника как хобби, но сейчас пдумываю заниматься ею плотнее.
#4
Отправлено 06 Ноябрь 2011 - 01:32
Непонятный код. Но я не вижу нигде сохранения контекста в прерывании... хотя бейсик вродебы должен делать это автоматически?
И что тогда значит "рабочая точка уходит" в небытиё? Прерывание надо разрешить непосредственно перед возвратом, иначе много плохих вещей может происходить.
Флаг прерывания нужно смотреть только в самом прерывании. В основной программе установленный флаг ты увидишь только когда прерывания запрещены.
И что тогда значит "рабочая точка уходит" в небытиё? Прерывание надо разрешить непосредственно перед возвратом, иначе много плохих вещей может происходить.
Флаг прерывания нужно смотреть только в самом прерывании. В основной программе установленный флаг ты увидишь только когда прерывания запрещены.
#5
Отправлено 13 Январь 2012 - 22:46
Флаг прерывания нужно смотреть только в самом прерывании.
Вот это правильно подмечено....... вот имено после команды RESUME и надо поставить Флаг запрета прерывания.
Вот это правильно подмечено....... вот имено после команды RESUME и надо поставить Флаг запрета прерывания.
Поделиться темой:
Страница 1 из 1