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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
команда Sleep
доцент2 Дата: Вт, 05.01.2016, 19:09  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 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
ЯНДЕКС Дата: 05.01.2016
Broka Дата: Вт, 05.01.2016, 22:48  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Доброго времени!  Про команду sleep было написано на форуме..  http://picbasic.ru/forum/5-1457-13481-16-1386655085-1

Наладчик КИП и А
доцент2 Дата: Вт, 05.01.2016, 23:59  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

эту тему видел. интересно пишут - один WDT включает один отключает и обоих все работает!? странно.
Спасибо Broka, просмотрел всю тему до конца и вот оно решение - команда Clrwdt (как ее пропустил когда даташит читал?) сброса собаки WDT. только эту команду надо периодически повторять в программе.

Сообщение отредактировал доцент2 - Ср, 06.01.2016, 00:40
mnbv Дата: Пт, 08.01.2016, 12:58  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 2   ±
Замечания:   ±
На сайте с 09.03.2011

Статус: Offline

Я эту задачу решил в лоб: если для спячки собака нужна - включаем её перед sleep (WDTCON.0 = 1 ), затем, соответственно, выключаю (WDTCON.0 = 0).
Сообщение отредактировал mnbv - Пт, 08.01.2016, 12:59
доцент2 Дата: Сб, 09.01.2016, 06:33  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 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
Репутация: 5   ±
Замечания:   ±
На сайте с 12.12.2007

Статус: Offline

Для того, чтобы нормально использовать Sleep, надо в начале кода добавить
Declare WatchDog = On
и больши ничего не нужно включать и выключать.
доцент2 Дата: Ср, 13.01.2016, 20:44  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата holyuser ()
Для того, чтобы нормально использовать Sleep, надо в начале кода добавитьDeclare WatchDog = On
и больши ничего не нужно включать и выключать.
Точно!
  • Страница 1 из 1
  • 1
Поиск: