команда Sleep
|
|
доцент2 |
Дата: Вт, 05.01.2016, 19:09 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
293
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Помогите разобраться с командой Sleep. Хочу загнать pic12f675 в сон на несколько секунд. Для работы команды Sleep в конфигурации устанавливаю WDT_ON Но при этом происходит постоянный сброс МК и выполнение программы не успевает дойти до стройки с командой Sleep. вот пример программки:
Device = 12F675 ' Xtal = 4 '
'----------------- конфигурация --------------- Config CPD_OFF, CP_OFF, BODEN_OFF, MCLRE_OFF, PWRTE_OFF, WDT_ON, INTRC_OSC_NOCLKOUT '----------------------- ---------------------- All_Digital = On ' '------------------- переменные ----------------- Dim i As Byte '---------------------- -------------------- OPTION_REG =%00001111 ' определитель 1:128 установлен перед WDT ADCON0 = %00000000 TRISIO = %00000000 GPIO = %00000000 ' '-----------------------программа --------------------- MainProgram: For i=0 To 10 GPIO.1 =0 GPIO.2 =1 DelayMS 100 GPIO.1 =1 GPIO.2 =0 DelayMS 100 Next i GPIO = 0
Sound GPIO.5,[90,110,20,30,77,20,71,120]
Sleep 5 GoTo MainProgram '
Сообщение отредактировал
доцент2 - Вт, 05.01.2016, 21:57
|
|
|
|
Broka |
Дата: Вт, 05.01.2016, 22:48 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
253
Замечания:
±
На сайте с 30.09.2009
Статус:
Offline
|
Доброго времени! Про команду sleep было написано на форуме.. http://picbasic.ru/forum/5-1457-13481-16-1386655085-1
Наладчик КИП и А
|
|
|
|
доцент2 |
Дата: Вт, 05.01.2016, 23:59 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
293
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
эту тему видел. интересно пишут - один WDT включает один отключает и обоих все работает!? странно. Спасибо Broka, просмотрел всю тему до конца и вот оно решение - команда Clrwdt (как ее пропустил когда даташит читал?) сброса собаки WDT. только эту команду надо периодически повторять в программе.
Сообщение отредактировал
доцент2 - Ср, 06.01.2016, 00:40
|
|
|
|
mnbv |
Дата: Пт, 08.01.2016, 12:58 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 09.03.2011
Статус:
Offline
|
Я эту задачу решил в лоб: если для спячки собака нужна - включаем её перед sleep (WDTCON.0 = 1 ), затем, соответственно, выключаю (WDTCON.0 = 0).
Сообщение отредактировал
mnbv - Пт, 08.01.2016, 12:59
|
|
|
|
доцент2 |
Дата: Сб, 09.01.2016, 06:33 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
293
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Цитата mnbv ( ) Я эту задачу решил в лоб: если для спячки собака нужна - включаем её перед sleep (WDTCON.0 = 1 ), затем, соответственно, выключаю (WDTCON.0 = 0). с 12f675 или с 12f629 такое не прокатит. если нужно использовать Sleep с установкой по времени (Sleep 10), то включать WDT надо в конфигурации и периодически вставлять в код программы сброс Clrwdt. Если надо загнать МК в спячку без ограничения по времени (Sleep), то собаку WDT надо отключать в конфигурации, а выход из спячки осуществлять через прерывание.
|
|
|
|
holyuser |
Дата: Ср, 13.01.2016, 16:41 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
228
Замечания:
±
На сайте с 12.12.2007
Статус:
Offline
|
Для того, чтобы нормально использовать Sleep, надо в начале кода добавить Declare WatchDog = On и больши ничего не нужно включать и выключать.
|
|
|
|
доцент2 |
Дата: Ср, 13.01.2016, 20:44 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
293
Замечания:
±
На сайте с 13.09.2011
Статус:
Offline
|
Цитата holyuser ( ) Для того, чтобы нормально использовать Sleep, надо в начале кода добавитьDeclare WatchDog = On и больши ничего не нужно включать и выключать. Точно!
|
|
|
|