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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: demanik, ivan_fd  
режим sleep в pic16f876a
tesla88 Дата: Вт, 10.12.2013, 09:58  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 114
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Всем большой привет!!!
начал я тут проект по позиционированию солнечной батареи вслед за солнцем, и возникла проблема со спящим режимом , компилятор ругается всё время на команду sleep, может кто подскажет в чём косяк?
прилагаю код с коментами и срин -
 
Device 16F876A 
' КОНФИГУРАЦИИ ОБОРУДОВАНИЯ И МОДУЛЕЙ
Declare Xtal = 4 ' ЧАСТОТА КВАРЦА 4-мГ

    Declare Reminders Off 
 Config HS_OSC , WDT_ON , PWRTE_ON , BODEN_OFF , LVP_OFF ,  CP_OFF , DEBUG_OFF
    Declare Reminders On 

' КОНФИГУРАЦИЯ ПОРТОВ 
CMCON = %11111111 
TRISA = %11101111 
PORTA = %00000000 
PORTA = %00000000 
PORTB = %00000000 
TRISB = %00000000
PORTC = %00000000
TRISC = $00000000
TRISA.4 = 0

' ИНИЦИАЛИЗАЦИЯ LCD 16*2
Declare  LCD_Type ALPHA  
Declare  LCD_DTPin  PORTC.4  
Declare  LCD_ENPin  PORTC.3  
Declare  LCD_RSPin  PORTC.2  
Declare  LCD_Interface  4   
Declare  LCD_CommandUs  200   
Declare  LCD_DataUs  50  
Declare  LCD_Lines   2

DEFINE ADC_BITS 8 ' Set number of bits in result 
DEFINE ADC_CLOCK 3 ' Set clock source (rc = 3) 
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds
TRISA = 255 ' Set PORTA to all input 
ADCON1 = 2 ' PORTA is analog 
ADCON0 = %11000001 

' ПОРТЫ А

Symbol EN = PORTA.4

' ПОРТЫ B ВЫХОДЫ НА МОТОРЫ
Symbol A1 = PORTB.0
Symbol B1 = PORTB.1 
Symbol C1 = PORTB.2
Symbol D1 = PORTB.3 
Symbol A2 = PORTB.4 
Symbol B2 = PORTB.5
Symbol C2 = PORTB.6
Symbol D2 = PORTB.7
 
' ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ 
Dim R1 As Word
Dim R2 As Word
Dim R3 As Word
Dim R4 As Word

 Cls  
' ОСНОВНАЯ ПРОГРАММА
MAIN:
' ОПРОС ДАТЧИКОВ
R1 = ADIn 0
R2 = ADIn 1
R3 = ADIn 2
R4 = ADIn 3
DelayUS 1 ' Wait for 1us
' ВЫВОД ДАННЫХ НА LCD
Print At 1, 1, Dec R1, "     " 
Print At 1, 10, Dec R2, "     "   
Print At 2, 1, Dec R3, "     "
Print At 2, 10, Dec R4, "     "
DelayMS 1000
' ШАГИ МОТОРА
PORTC.1 = 1
PORTB = %00000001
DelayMS 100
PORTB = %00000010
DelayMS 100
PORTB = %00000100
DelayMS 100
PORTB = %00001000
DelayMS 100
PORTB = %00000000
PORTC.1 = 0
' СОН НА 10 СЕК.
Sleep 10 '
GoTo MAIN
End
Прикрепления: 0863298.png (230.6 Kb)
ЯНДЕКС Дата: 10.12.2013
tesla88 Дата: Вт, 10.12.2013, 10:21  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 114
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

А самое интересное , что в протеусе всё работает, возникает вопрос почему компилятор ругается???
фаил протеуса прилагаю) wacko
Прикрепления: solar_poz.dsn (162.2 Kb)

Сообщение отредактировал tesla88 - Вт, 10.12.2013, 10:21
ADMIN Дата: Вт, 10.12.2013, 11:17  |                                                                                                                Сообщение # 3
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Он не ругается, а предупреждает о том, что собака выключена и МК, возможно, никогда не проснется. В реальности не будет работать, скорей всего.
tesla88 Дата: Вт, 10.12.2013, 11:22  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 114
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Всмысле  в железе программа работать не будет? я правильно понял, и если да, то по какой причине?
ADMIN Дата: Вт, 10.12.2013, 11:38  |                                                                                                                Сообщение # 5
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Я не утверждаю, конечно, но всякое может быть. Я, например, не до конца понимаю, какой счетчик считает время сна.
tesla88 Дата: Вт, 10.12.2013, 12:11  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 114
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Вообще задумка такая - считывать показания с фоторезисторов по двум осям , если значения резисторов примерно равны (разброс показаний устанавливается экспериментально), то погрузить контроллер в режим спячки на определённое время, после пробуждения опять опросить датчики и если их показания  отклонились друг от друга на определённую величину, то запускать корректировку положения панели при помощи шаговых моторов. это один вариант , второй такой же , но только пробуждение контроллера происходит по прерыванию от ADC ( то есть если показания на одном канале изменились на определённую величину то выйти из спячки - опросить остальные каналы - сравнить их и произвести корректировку), но вот как сделать прерывания по изменению показаний ацп на определённую величину я увы пока не знаю, может кто то делал что то подобное?
ADMIN Дата: Вт, 10.12.2013, 12:27  |                                                                                                                Сообщение # 7
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

по-моему, прерывания от изменения на входе АЦП не существует. Но можно все-таки и проверить вариант со Sleep
tesla88 Дата: Вт, 10.12.2013, 12:49  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 114
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

я вот тоже начал думать что не существует, судя по этой вырезке из даташита:book:

просто первый вариант более безжалостен к аккумулятору, а тут идёт борьба за каждый милиампер bash
кстати вот такой вопрос - подскажите где на каком сайте можно заказать SMD  КОНТРОЛЛЕРЫ (в частности pic16f876a) ???
Прикрепления: 4259180.png (65.9 Kb)

Сообщение отредактировал tesla88 - Вт, 10.12.2013, 12:53
mikhail09p Дата: Вт, 10.12.2013, 14:30  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Я вот так делал:

Device = 16F628A
Xtal = 4

Config INTOSC_OSC_NOCLKOUT , MCLRE_OFF,  WDT_Off ,  PWRTE_ON , BODEN_OFF , LVP_Off ,  CP_OFF

loop:'--------------------------------------------------------------------------------------------------------------------

If Power = 0 Then
PORTA = %00010000
Sleep
p = 0
GoTo loop
Else
If p = 0 Then
DelayMS 2000
If Power = 0 Then loop
p = 1
Print $FE,$40,$06,$09,$09,$06,$00,$00,$00,$00     '8 Ïîcëàòü íà ÆÊÈ êîìàíäó ñîçäàíèÿ çíàêà ãðàäóñà
EndIf
EndIf

Тут программа.....

Работает и сегодня.
Да, потребляет около 50 микроампер.

Сообщение отредактировал mikhail09p - Вт, 10.12.2013, 14:33
ADMIN Дата: Вт, 10.12.2013, 15:13  |                                                                                                                Сообщение # 10
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Цитата tesla88 ()
кстати вот такой вопрос - подскажите где на каком сайте можно заказать SMD  КОНТРОЛЛЕРЫ (в частности pic16f876a) ???я
 я, в основном, заказываю в платане. там цены наиболее оптимальные. не подводили ни разу. касаемо вашего вопроса - вот что дал запрос на их сайте

mikhail09p, а по какому событию выход из sleep?
G2212 Дата: Вт, 10.12.2013, 15:14  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Новенький
Сообщений: 9
Репутация: 0   ±
Замечания:   ±
На сайте с 06.11.2012

Статус: Offline

подскажите где на каком сайте можно заказать SMD КОНТРОЛЛЕРЫ (в частности pic16f876a) ???

Например здесь - http://www.terraelectronica.ru/catalog....PageS=1
ЯНДЕКС Дата: 10.12.2013
mikhail09p Дата: Вт, 10.12.2013, 15:41  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Пока Power = 0 то Sleep и переход в начало, а Else - задержка 2 сек., ещё раз проверка, не равняется ли Power  нулю и дальше инициализация (у меня) ЖК дисплея, про что тоже тут на форуме обсуждалось и основная программа.
Выложить полностью проект? Программируемый термостат (часы, в частности) для дома.
доцент2 Дата: Вт, 10.12.2013, 17:25  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 291
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

вот здесь точно есть и по умеренным ценам http://trt.ru. Сам делал заказ наложенным платяжом, пришло через неделю (движение в пути отслеживается по инету.)
ADMIN Дата: Вт, 10.12.2013, 17:38  |                                                                                                                Сообщение # 14
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Цитата mikhail09p ()
Пока Power = 0 то Sleep и переход в начало, а Else - задержка 2 сек., ещё раз проверка, не равняется ли Power  нулю и дальше инициализация (у меня) ЖК дисплея, про что тоже тут на форуме обсуждалось и основная программа. Выложить полностью проект? Программируемый термостат (часы, в частности) для дома.
Ну,структуру программы я понимаю. Мне непонятно следующее - в режиме sleep программа не выполняется, если я не ошибаюсь. Каким образом происходит проверка? Или sleep не так работает, или он не уходит туда. Мне непонятно. Если честно, то не пытался практически, разобраться с этим, так как не было нужды.
xvovanx Дата: Вт, 10.12.2013, 17:56  |                                                                                                                Сообщение # 15
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 328
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

А зачем вообще со сном заморачиваться? Сколько мы сьэкономим в данном случае, 1мА? Если уж энергии хватает на шаговые двигатели, то на работу программы уж подавно хватит.

P.S.в предыдущем примере тоже не понял как схема просыпается из сна

Sleep
p = 0
GoTo loop

если он уснул, то он не присвоит р=0 и не пойдет на начало цикла (если только где-нибудь в теле программы нет таймеров).

P.S.2. насчет предупреждений компилятора - и с зелеными и оранжевыми предупреждениями все работает и в симуляторе и в железе. При красном -увы, не будет компиляции.

Сообщение отредактировал xvovanx - Вт, 10.12.2013, 17:59
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: