pic16f917 Sleep
|
|
cheh |
Дата: Пт, 14.09.2012, 23:36 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
2
Замечания:
±
На сайте с 27.12.2011
Статус:
Offline
|
Доброго времени суток!
Помогите разобраться с выходом со спящего режиме данного процессора. Необходимо выходить со спячки по прерыванию от порта RB7. Пример с pic16f628a http://www.terrarus.ucoz.ru/proton_....ep.html работает, а если подставляю вместо него pic16f917, то из сна по изменению RB7 не выходит, выходит только по INT0. Схемку в протеусе и програмку прилагаю.
|
|
|
|
DAlexV |
Дата: Сб, 15.09.2012, 02:02 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 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 Протона позволяя просматривать код и регистры. Так проше работать. Успехов
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
cheh |
Дата: Сб, 15.09.2012, 17:33 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
2
Замечания:
±
На сайте с 27.12.2011
Статус:
Offline
|
Спасибо!!! раньше не сталкивался, теперь все получилось!
|
|
|
|
DAlexV |
Дата: Сб, 15.09.2012, 23:20 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (cheh) раньше не сталкивался Я то же приятно удивился. Видимо это из за особенности PICа (поддержка LCD). Спасибо за плюсик. Удачи
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|