Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Таймеры, прерывания
Таймеры, прерывания
mikhail09p Дата: Ср, 30.06.2010, 23:59  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 507
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Ребята, тыкните, где доходчиво почитать о таймерах, прерываниях. Ещё лучше на примере конкретного микроконтроллера.

Что, нигде про это не написано? Не могу сделать часы... surprised

Сообщение отредактировал mikhail09p - Чт, 01.07.2010, 09:23
ЯНДЕКС Дата: 30.06.2010
retas Дата: Пт, 02.07.2010, 19:52  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Наверное доходчиво написано в документации на конкретный МК -
сходите на microchip.ru .
Есть у меня 3-я книга Н.И. Заяца и про таймеры и про часы, но она на асм и
сюда не влазит, но в интерне она есть.


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
Wictorych Дата: Пн, 02.08.2010, 23:13  |                                                                                                                Сообщение # 3
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 61
Репутация: 0   ±
Замечания:   ±
На сайте с 11.07.2010

Статус: Offline

Я тоже присоединяюсь к автору топика.
retas, не подскажете ли название "третьей книги Заяца" ?
retas Дата: Вт, 03.08.2010, 00:33  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Да они все "Радиолюбительские конструкции на PIC микроконтроллерах", книга3. У третьей ещё
на облошке перечислено: Шахматные часы, Таймеры, Охрана, ЖК-дисплеи, DS18x2, TIC9162.

Во, нашёл ссылку http://www.texnic.ru/books/opis/cpu/cpu009.htm ,
и ещё про всякую всячину http://www.texnic.ru/books/mikroproc.htm


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
Сообщение отредактировал retas - Вт, 03.08.2010, 00:41
Python Дата: Вт, 10.08.2010, 20:04  |                                                                                                                Сообщение # 5
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 51
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

C коментариями особенно не заморачивался спрашивай что непонятно.
Реально работающий таймер уже исполнен в железе...
Поскольку регулировать величину счета нет необходимости кнопки и прочее
не предусмотрено...

Device 16F628A ' Использовать микроконтроллер 16F628A
Declare XTAL 4 ' Использовать тактовый генератор на 4 МГц
' ---Конфигурация микроконтроллера--------------------------------------------
Config BODEN_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT, CP_OFF, DATA_CP_OFF
' INTRC_OSC-NOCLKOUT - включить внутренний генератор на 4 мГц
' MCLRE_OFF - Включить режим работы RA5/MCLR как цифрового порта ввода/вывода
' и использовать внутренний сброс MCLR
' PWRTE_ON - Включить бит разрешения работы таймера включения питания для лучшего запуска
' CP_ON - Включить защиту памяти программ от несанкционированного считывания
' DATA_CP_ON - Включить защиту EEPROM памяти данных от несанкционированного считывания

OPTION_REG=%00000101 ' Установить делитель =64
On_Interrupt GoTo ISR ' Обработчик прерывания
INTCON=%10100000 ' Включить прерывание таймера TMR0 и глобальные прерывания
PORTB_PULLUPS = On ' Включить подтягивающие резисторы на PORTB
ALL_DIGITAL = On ' Установить все порты цифровыми входами/выходами
TRISA=0
TRISB=%00000001
Dim Tiks As Byte
Dim Cnt As Byte
Dim Digit As Byte
Dim pattern As Byte
Dim odin As Byte
Dim dva As Byte
Dim tri As Byte
'Digit1 PORTA.0
Dim se As Byte 'Время присутствия сигнала
Dim sn As Byte 'Время отсутствия сигнала
Dim sd As Byte 'Интервал перед включением канала 2
Dim s_e As Byte 'Переменная se
Dim s_n As Byte 'Переменная sn
'Dim Digit3 As PORTA.2
'Dim Signal0 As PORTB.7
'Dim i As DWord

EData 0, 5, 7, 30, 4, 0, 0, 0

se = ERead 1
sn = ERead 2
sd = ERead 3
nop
Cnt=0
PORTA=0
PORTB=0
s_e=0
Wait_s:
If s_e=se Then
Cnt=0
PORTA.6=1
GoTo LOOP
EndIf
GoTo Wait_s

LOOP:
Digit = Cnt Dig 2 ' Get 100s digit
GoSub Convert ' Get segments to turn on
odin = pattern ' Display 100s digit
PORTB = odin
PORTA.2 = 0
PORTA.1 = 0
PORTA.0 = 1
DelayMS 7
Digit = Cnt Dig 1 ' Get 10s digit
GoSub Convert ' Get segments to turn on
dva = pattern ' Display 10s digit
PORTA.0 = 0
PORTB = dva
PORTA.2 = 0
PORTA.1 = 1
PORTA.0 = 0
DelayMS 7
Digit = Cnt Dig 0 ' Get 1s digit
GoSub Convert ' Get segments to turn on
tri = pattern ' Display 1s digit
PORTA.0 = 0
PORTB = tri
PORTA.2 = 1
PORTA.1 = 0
PORTA.0 = 0
DelayMS 7
PORTA.2 = 0
If Cnt>=sd Then
PORTA.7=1
'Cnt=30
EndIf
If s_n=sn Then GoTo signal_off

GoTo LOOP

Convert:
pattern = LookUp Digit, [$7E, $0C, $B6, $9E, $CC, $DA, $FA, $0E, $FE, $DE]
pattern = pattern ^ $FF ' Invert bits of variable Pattern
Return

signal_off:
PORTA.6=0
PORTA.7=0
s_e=0
s_n=0
Cnt=0
GoTo Wait_s
GoTo signal_off

ISR:
Context SAVE
Tiks = Tiks + 1
If Tiks < 62 Then NoUpdate 'если меньше секунды
Tiks = 0
Cnt=cnt+1
If PORTB.0=0 Then
s_n=0
s_e=s_e+1
Else
s_e=0
s_n=s_n+1
EndIf
NoUpdate:
INTCON.2=0 ' Re-enable TMR0 interrupts
Context Restore

End

mikhail09p Дата: Ср, 11.08.2010, 13:50  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 507
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Quote (Python)
Реально работающий таймер уже исполнен в железе...

А схема? Или проэкт Протеуса имеется?

Python Дата: Ср, 11.08.2010, 14:58  |                                                                                                                Сообщение # 7
Группа: Пользователи
Ранг:  Пытаюсь разобраться
Сообщений: 51
Репутация: 0   ±
Замечания:   ±
На сайте с 11.02.2010

Статус: Offline

Смысл работы устройства:

когда сигнал присутствует на ноге RB0 более 5 сек (секунды это условно)
включается основной отсчет с индикацией и т.д. если после включения основного отсчета сигнал отсутствует более 7-ми сек. выключается все.

Прикрепления: Timer_pech.zip(60Kb)
silverr Дата: Вт, 18.10.2011, 14:25  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 18.10.2011

Статус: Offline

Уважаемые форумчане.Подскажите пожалуйста логический принцип построения таймера на PROTON с большой выдержкой времени(часы) с возможностью остановки таймера в любой момент по входному сигналу с порта и выдаче пршедшего времени на LCD.Пытался использовть фрагменты прогамм с электронных часов,но нехватает опыта для новичка в связи с большим объёмом исходников программ.
retas Дата: Вт, 18.10.2011, 18:04  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

silverr!
Дам голую идею.
1. Берите любой таймер.
2. Сделайте счетчик (копилку) k длиной word.
3. Как только таймер переполнится инкрементируйте k (т.е. Inc k).
4. Если представить что таймер переполнится за 1мс а k может досчитать под 65000, то у вас будет час (грубо).
5. Даёте команду в какой то момент отправится содержимому k в портХ к которому подключен индикатор.
Удачи.


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
silverr Дата: Ср, 19.10.2011, 23:03  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 18.10.2011

Статус: Offline

retas! Благодарю за оперативный ответ.Идею понял-буду пробовать
ADMIN Дата: Пт, 21.10.2011, 13:31  |                                                                                                                Сообщение # 11
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1109
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Вот, кстати, написал статью про динамическую индикацию. Там как раз есть информация про таймеры и прерывания
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Таймеры, прерывания
Страница 1 из 11
Поиск: