Например TDA7294

Форум РадиоКот • Просмотр темы - Как решить вопрос с прерываниями
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 12:28:02

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как решить вопрос с прерываниями
СообщениеДобавлено: Вс май 27, 2018 15:01:29 
Родился

Зарегистрирован: Вс май 27, 2018 14:55:05
Сообщений: 3
Рейтинг сообщения: 0
Осваиваю прерывания, делаю таймер на PIC16f676, вобщем, прога работает, но когда происходит прерывание(у меня по изменению уровня на порте а)прога не выходит из обработчика, перепробовал массу способов но никак! Кто-нить сталкивался с подобным?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вс май 27, 2018 15:16:56 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
После входа в подпрограмму обработки прерываний и после того как выяснили от кого получено прерывание, нужно сбросить флаг прерывания.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вс май 27, 2018 15:25:04 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
Отрывок из рабочего листинга:

Код:
;
;Светофор
;
#include <p16f84.inc>   ;подключаем файл определений мк

...
   org   0   ;начальный адрес программы
   clrf   INTCON   ;запрет всех прерываний
   goto   START   ;переход на начало
            
   org   04h   ;вектор прерываний
   goto   interrupt   ;переход на подпрограмму обработки прерываний
;
START
   bsf   STATUS, RP0   ;включаем BANK1
   movlw   b'11111000'   ;RA0,RA1,RA2 - выходы
   movwf   TRISA      ;запись в TRISA
   movlw   b'00000011'   ;RB7..RB2 - выходы
   movwf   TRISB      ;запись в TRISB
   movlw   b'00000100'   ;определение прескалера для таймера 1:32
   movwf   OPTION_REG   ;запись в OPTION_REG
   bcf   STATUS,RP0   ;включаем BANK0
   clrw         ;обнуляем рабочий регистр
   movwf   PORTA      ;устанавливаем на выходах порта А нули(гасим лампы)
   movwf   PORTB      ;устанавливаем на выходах порта B нули(гасим лампы)

   movlw   0x3D      ;начальное состояние счетчика
   movwf   counter      ;в переменную
   movlw   .31      ;начальное количество тактов
   movwf   takt      ;в переменную

   movlw   b'10100000'   ;взводим биты нужных прерываний
   movwf   INTCON      ;разрешаем прерывание от таймера и общее разрешение
loop
   goto   loop      ;зацикливаемся на метке loop
;************************
;
;************************
interrupt
   btfss   INTCON,T0IF   ;проверяем флаг прерывания от таймера
   retfie         ;если не таймер, то выходим из п/п

...
m1
   bcf   INTCON,T0IF   ;сбрасываем флаг прерывания от таймера
   retfie         ;выход из п/п обработки прерывания
;
;Подпрограмма возвращает данные для ламп
;Такты перебираются от 31-го до 1-го и далее, по кругу.
;
;    b'D7 D6 D5 D4 D3 D2 D1 D0'
;
;D0 - красный светофора_1 и светофора_3
;D1 - желтый светофора_1 и светофора_3
...
   end   ;конец программы

_________________
Docendo discimus


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вс май 27, 2018 15:47:20 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Опасное место в коде:
Цитата:
interrupt
btfss INTCON,T0IF ;проверяем флаг прерывания от таймера
retfie ;если не таймер, то выходим из п/п

...
m1
bcf INTCON,T0IF ;сбрасываем флаг прерывания от таймера
retfie ;выход из п/п обработки прерывания
Дело в том, что "просто так" попасть в обработку прерываний вы не можете, а если уж попали - проверяйте по какому условию и сбрасывайте соответствующий флаг прерывания.
В противном случае, есть шанс не "вылезть" из обработчика прерываний (не понимая, при этом, какого ххх туда заходит программа)...


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вс май 27, 2018 16:14:36 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
Согласен. Исправлять не стал, т.к. разработка теоретическая.

_________________
Docendo discimus


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вс май 27, 2018 16:37:17 
Родился

Зарегистрирован: Вс май 27, 2018 14:55:05
Сообщений: 3
Рейтинг сообщения: 0
У меня только от изменения уровня на порте а. Соответствующий флаг я сбрасываю в самом начале обработчика, только это не помогает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вс май 27, 2018 16:42:41 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Выкладывайте текст программы и полную схему устройства.
Если программа на asm - постараюсь помочь. Если на другом языке программирования - кто-нибудь подскажет.
P.S.
А вообще то, "реагировать" на мех. кнопку по прерыванию (с кнопки) - не советую (если только не хотите вначале создать себе проблемы, а потом их разгребать).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Пн май 28, 2018 08:51:00 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У ПИКов при нескольких одновременно задействованных источниках прерываний надо предобработку определения источника сначала делать.
Для начинающего проще сначала научится работать с одним источником (тот же таймер), а обработку кнопок проводить программно.
Или отработать отдельно кнопки отдельно таймер, а уж затем составить обработчик/селектор для обеих источников прерываний.
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вт май 29, 2018 13:16:05 
Родился

Зарегистрирован: Вс май 27, 2018 14:55:05
Сообщений: 3
Рейтинг сообщения: 0
Решил проблему-просто вставил #include <p16f84.inc> и всё. Работает как задумано. Хотел еще спросить-какие МК лучше-PIC или AVR?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вт май 29, 2018 13:22:21 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
Провокация.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как решить вопрос с прерываниями
СообщениеДобавлено: Вт май 29, 2018 13:37:43 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Олег88135 писал(а):
Решил проблему-просто вставил #include <p16f84.inc> и всё. Работает как задумано.
Что за хрень? :facepalm:
Т.е., для PIC16f676 подкинули файл с картой регистров и пр. от PIC16f84 и считаете это нормальным?
Это, приблизительно, как в навигаторе подменить карту текущего местоположения на карту другого города. Далеко уедете?
Олег88135 писал(а):
какие МК лучше-PIC или AVR?
Те, которые знаешь лучше, чем пальцы на руке и которые более подходят под разрабатываемое изделие. :)))


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y