Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
pic16f917 Sleep
cheh Дата: Пт, 14.09.2012, 23:36  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 27.12.2011

Статус: Offline

Доброго времени суток!

Помогите разобраться с выходом со спящего режиме данного процессора. Необходимо выходить со спячки по прерыванию от порта RB7. Пример с pic16f628a http://www.terrarus.ucoz.ru/proton_....ep.html работает, а если подставляю вместо него pic16f917, то из сна по изменению RB7 не выходит, выходит только по INT0. Схемку в протеусе и програмку прилагаю.
Прикрепления: sleep2.rar (32.4 Kb)
ЯНДЕКС Дата: 14.09.2012
DAlexV Дата: Сб, 15.09.2012, 02:02  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Device 16F917
Xtal = 4 ' Установка частоты тактового генератора

'-------------------------- Управление регистром INTCON --------------------------
Symbol LED = PORTA.0
Symbol INTF = INTCON.1 ' Флаг внешнего прерывания по PORTB.0(INT)
'Symbol T0IF = INTCON.2 ' Флаг переполнения TMR0
Symbol RBIF = INTCON.0 ' Флаг внешнего прерывания по PORTB.4-PORTB.7
Symbol INTE = INTCON.4 ' Бит разрешения прерывания по PORTB.0(INT) Symbol
Symbol RBIE = INTCON.3 ' Управление разрешением внешнего прерывания по изменению сигнала RB7...RB4
Symbol RBPU = OPTION_REG.7 ' Управление включением подтягивающих регистров для PORTB
Symbol GIE = INTCON.7 ' Управление включением/выключением глобальных прерываний
'-------------------------------- Главная программа -----------------------------
Main:
IOCB=%11110000 ' индивидуальная настройка прерывания В4-В7 (мануал DS41250E-page 41 { 3.3.2 INTERRUPT-ON-CHANGE } )

GIE = 0 ' Выключить глобальныe прерывания
While GIE = 1: GIE = 0: Wend ' Убедиться, что они отключены
TRISB = %11111111 ' Установить PORTB.4 в качестве входа
RBPU = 0 ' Включить подтягивающие резисторы для PORTB
RBIE = 1 ' Включить прерывания для PORTB[4...7]
INTE = 1
Again:
DelayMS 500 ' Пауза 0,5 сек
Low LED ' Выключить LED
RBIF = 0 ' Сбросить флаг прерывания по изменению уровня сигнала на RB7...RB4
INTF = 0
Sleep ' Перевести микроконтроллер в режим бесконечного сна
High LED ' Когда он проснется включить LED
DelayMS 2000 ' задержка 2 сек для индикации момента выхода из сна
GoTo Again ' Переход в начало цикла

P/s. Протеус нормально кушает bas Протона позволяя просматривать код и регистры. Так проше работать. Успехов wink

Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
cheh Дата: Сб, 15.09.2012, 17:33  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 27.12.2011

Статус: Offline

Спасибо!!! раньше не сталкивался, теперь все получилось!
DAlexV Дата: Сб, 15.09.2012, 23:20  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (cheh)
раньше не сталкивался
Я то же приятно удивился. Видимо это из за особенности PICа (поддержка LCD). Спасибо за плюсик. Удачи wink


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
  • Страница 1 из 1
  • 1
Поиск: