Oleg74 Опубликовано 15 мая, 2016 Поделиться Опубликовано 15 мая, 2016 Доброго времени суток всем форумчанам! Проблемка возникла у меня с прерыванием от TMR1 в программе приёма IR NEC протокола. Суть проблемы в том, что после приёма 32 бит адреса и данных провожу сравнение, инвертируя второй байт адреса, затем второй байт команды и далее программа принимает биты повтора. На этом этапе программа работает без укоризненно. Между битами повтора запускаю TMR1 с входным предделителем 1:2 на время 100ms. Т.е. если за заданное время нет приёма бита повтора, - должен очиститься регистр команды и сброситься флаг повтора. А прерывание от TMR1 работает как ему вздумается... Может сработать в заданное время, но чаще проходит от 20 до 40 сек до сброса режима повтора. Что же может влиять на такую работу таймера? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
солар Опубликовано 16 мая, 2016 Поделиться Опубликовано 16 мая, 2016 работает как ему вздумается Работает так, как ему велено. Что же может влиять Проверьте параметризацию таймера, разрешение и обработку прерываний. 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Oleg74 Опубликовано 16 мая, 2016 Автор Поделиться Опубликовано 16 мая, 2016 Проверял неоднократно, флаг сброшен, прерывание от INT разрешено, а он насчитывает круги. Отслеживал работу таймера в MPLAB по регистрам. Использовал и протаса в ней же Отправлено с моего Ixion XL145 Snatch через Tapatalk 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
my504 Опубликовано 17 мая, 2016 Поделиться Опубликовано 17 мая, 2016 Какая связь между прерываниями от таймера и прерыванием по INT? Разрешение прерываний по TMR1 обеспечивается ТРЕМЯ битами: T1IE, PEIE, GIE Отсутствие любого из них запретит этот источник прерываний. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Vovka Опубликовано 17 мая, 2016 Поделиться Опубликовано 17 мая, 2016 МК хоть какой? Может там еще что вмешивается... Да и код инициализации и самого прерывания неплохо бы глянуть... 0 На форумах принято общаться на "ты", что не является оскорбительным и подразумевает равноправие Ссылка на комментарий Поделиться на другие сайты Поделиться
Oleg74 Опубликовано 17 мая, 2016 Автор Поделиться Опубликовано 17 мая, 2016 (изменено) Контроллер 16f876 ....не пойму, как вставить скрин с кодом Изменено 17 мая, 2016 пользователем Oleg74 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oleg74 Опубликовано 17 мая, 2016 Автор Поделиться Опубликовано 17 мая, 2016 Прикрепил скрины с инициализацией прерываний и таймера 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 17 мая, 2016 Поделиться Опубликовано 17 мая, 2016 (изменено) Кому нужен этот скрин? В нем нет всего кода и в нем есть макросы, определения которых не видны. Кроме того, нет разрешения периферийных прерываний. В регистре INTCON бит PEIE сброшен в 0. Изменено 17 мая, 2016 пользователем my504 2 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oleg74 Опубликовано 17 мая, 2016 Автор Поделиться Опубликовано 17 мая, 2016 Вроде разобрался. В регистре INTCON бит PEIE установил в 1, таймер стал работать как и положено ему. Только не совсем понял, причём тут прерывания от периферийных модулей 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 17 мая, 2016 Поделиться Опубликовано 17 мая, 2016 (изменено) Чтобы это понять, нужно читать даташит. Хотя бы иногда и выборочно. Все источники прерываний, флаги и разрешения которых находятся в регистрах PIR1 и PIE1, управляются битом PEIE. Это совершенно однозначно показано в разделах Interrupts даташитов в схеме формирования запросов. Это естественно следует и из самого названия как регистров флагов/запросов, так и названия оного управляющего бита. Служит этот бит для упрощения доступа к управлению разрешениями, поскольку INTCON виден из всех банков, а PIE1 только из первого. ЗЫ. К периферийным модулям PIC10...PIC16 относятся все таймеры кроме нулевого (он является системным и даже не может быть остановлен), модули CCP, все интерфейсы типа SPI, I2C, UART, USB, ADC, CTMU и другие. Изменено 17 мая, 2016 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oleg74 Опубликовано 17 мая, 2016 Автор Поделиться Опубликовано 17 мая, 2016 (изменено) Да с регистрами PIE1 и PIR1 всё понятно. В них находятся TMR1IE-бит разрешения прерывания от TMR1 и TMR1IF-флаг того же прерывания. Тут никаких проблем не было. Все операции с ними проводились согласно даташиту. Получается, что таймер TMR1 относится к периферийным модулям? Раз при разрешении данного прерывания (PEIE=1) стало обрабатываться прерывание от TMR1 Кстати в даташите в описании модуля таймера TMR1 про бит PEIE регистра INTCON ничего не сказано, что он влияет на прерывание от TMR1 Изменено 17 мая, 2016 пользователем Oleg74 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 17 мая, 2016 Поделиться Опубликовано 17 мая, 2016 (изменено) И в описании на таймер все сказано, и в описании модуля прерываний... Даташит на PIC16F886 (у всех 16-х в разделе таймера 1 написана копипаста). Раздел 6 Таймер 1 Параграф 6.7: 6.7 Timer1 Interrupt The Timer1 register pair (TMR1H:TMR1L) increments to FFFFh and rolls over to 0000h. When Timer1 rolls over, the Timer1 interrupt flag bit of the PIR1 register is set. To enable the interrupt on rollover, you must set these bits: • Timer1 interrupt enable bit of the PIE1 register • PEIE bit of the INTCON register • GIE bit of the INTCON register The interrupt is cleared by clearing the TMR1IF bit in the Interrupt Service Routine. А почему Вас так удивляет отнесение первого таймера к периферийным модулям? Вы вообще что понимаете под термином периферийный? Изменено 17 мая, 2016 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Oleg74 Опубликовано 17 мая, 2016 Автор Поделиться Опубликовано 17 мая, 2016 (изменено) Я считал периферийними модулями CCP, MSSP, АЦП, но только не модули таймеров Видимо в даташите на русском языке зыбыли указать про бит PEIE ив описании модуля TMR1. Всё равно спасибо!!! Думаю Тема закрыта Изменено 17 мая, 2016 пользователем Oleg74 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 17 мая, 2016 Поделиться Опубликовано 17 мая, 2016 (изменено) Микрочип не издает даташитов на русском языке. Сайт www.microchip.ru не имеет никакого отношения к оной компании. Этот сайт запилил один из дистрибьюторов Микрочипа. Он же организовал перевод на русский. Так что пользоваться документацией на этом сайте нужно осмотрительно. Чисто в ознакомительных целях и для выяснения смысла не слишком понятных в английском оригинале текстов. Изменено 17 мая, 2016 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.