Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 07.02.2014, 14:02   #1
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 33
Сообщений: 365
Вес репутации: 194/46
hammer has a spectacular aura abouthammer has a spectacular aura about
Question PIC24F DeepSleep

Здравствуйте. Имею устройство на батарейном питании. В устройстве стоит PPIC24FJ64GB004, внешний кварц 24MHz. Нужно погружать его в глубокий сон и вызывать оттуда. Для вызова использую INT0 на котором висит кнопка. Кнопка подтянута внутренним пуллапом и через 130 Ом замыкается на землю. Включаться (выходить из сна) устройство должно по удержанию кнопки. Т.е., на мой взгляд, алгоритм такой:
1. Прилетело прерывание от INT0, разбудило контроллер
2. Контроллер смотрит, его разбудили или его просто включили (RCON.SLEEP)
3. Если разбудили, то выдерживаем паузу, после которой проверяем кнопку, которая должна была удерживаться все это время (PORTBbits.RB7 == 0)
4. Если так и было, то можно просыпаться
5. Если PORTBbits.RB7 = 1, значит это чистая случайность и идем спать дальше

Вот такой алгоритм, но чота не работает. Включается даже при коротком тычке на кнопку, причем уверенно говорит, что кнопку я держал. Привожу существенные, на мой взгляд, куски кода
Код:
/***********************************************************/
_CONFIG1(FWDTEN_ON & JTAGEN_OFF & GCP_ON & FWPSA_PR128 & WDTPS_PS1024)
_CONFIG2(FNOSC_PRIPLL & OSCIOFNC_OFF & IOL1WAY_ON & FCKSM_CSDCMD & I2C1SEL_SEC & POSCMOD_HS & PLLDIV_DIV6 & IESO_OFF & PLL96MHZ_ON)
_CONFIG3(WPFP_WPFP0 & SOSCSEL_SOSC & WUTSEL_LEG & WPDIS_WPDIS & WPCFG_WPCFGDIS & WPEND_WPENDMEM)
_CONFIG4(DSWDTPS_DSWDTPS3 & DSWDTOSC_LPRC & RTCOSC_SOSC & DSBOREN_OFF & DSWDTEN_OFF)
/***********************************************************/ 

void enterDeepSleep()
{
	//SHDN = 0;
	_T1IE = 0;
	turnOffDisplay();
	setADCPowerDown();
	//config INT0
	TRISBbits.TRISB7 = 1;
	IEC0bits.INT0IE = 0;
	INTCON2bits.INT0EP = 0;
	IFS0bits.INT0IF = 0;
	IEC0bits.INT0IE = 1;
	
	if(GotoDeepSleep())//This function puts the device into deep sleep
	{	 
		IFS0bits.INT0IF = 0; //Interrupt occured simultaneously while going to deep sleep.Hence service it.
	}
}

int main(void)
{
	unsigned long i = 0;
	fromDeepSleep = 1;
	//if(IsResetFromDeepSleep() == TRUE) //if this is the reset after the deep_sleep wakup...then do this
	if(RCONbits.SLEEP)
	{
		ReleaseDeepSleep();
		IFS0bits.INT0IF = 0;
		fromDeepSleep = 2;
		_T1IE = 0;
		TMR1 = 0;
		PR1 = 0xFFFF;
		T1CON = 0;
		T1CONbits.TCKPS = 3;
		T1CONbits.TON = 1;
		_T1IF = 0;
		while(!_T1IF)
		{
			ClrWdt();
		}
		_T1IF = 0;

		if(PORTBbits.RB7 == 0)
		{
			ReleaseDeepSleep();
			fromDeepSleep = 5;
		}
		else
		{
			//ReleaseDeepSleep();
			enterDeepSleep();
		}

	}
...
}
значение переменной fromDeepSleep всегда 5. Я не считал (лень), но мне кажется, что задержка таймером весьма существенна для определения долгого нажатия.
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Старый 07.02.2014, 14:37   #2
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 33
Сообщений: 365
Вес репутации: 194/46
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: PIC24F DeepSleep

Походу, протупил я с пуллапом... надо внешний повесить
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Старый 08.02.2014, 14:36   #3
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 33
Сообщений: 365
Вес репутации: 194/46
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: PIC24F DeepSleep

Похоже, проблема глубже, чем хотелось бы. Не могу установить бит DSCON.DSEN и он уходит просто в слип, а не в дипслип. Перепробовал кучу вариантов. Проверку делаю выводя содержимое регистра DSCON на встроенный дисплей. Сразу, после установки бита, копирую содержимое регистра в переменную и вывожу...
Пробовал следующее:
Код:
DSCONbits.DSEN = 1;

asm("bset DSCON, #15");

//и даже
asm("disi #4");
asm("bset DSCON, #15");
asm("nop");
asm("nop");
asm("nop");
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Старый 08.02.2014, 15:37   #4
d-f-m
Senior Member
 
Регистрация: 09.02.2009
Адрес: Недалеко от Пятигорска
Возраст: 46
Сообщений: 611
Вес репутации: 1289/54
d-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud of
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от hammer Посмотреть сообщение
Похоже, проблема глубже, чем хотелось бы.
У меня работало так:

В инициализации МК:
Код:
    SRbits.IPL=1;//по умолчанию 0. Нужно 1 чтобы прерывания с прир.1 вызывали только просыпание
Код для засыпания:
Код:
    EnableCN(); //Включить подтяжку и настроить CN
    IPC4bits.CNIP = 1;    //приоритет 1 при IPL=1 вызывает только просыпание без прерывания
    IEC1bits.CNIE = 1;
    IFS1bits.CNIF = 0;
//*deepsleep
    asm("disi #4");
    asm("bset DSCON, #15");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("pwrsav #0");
    asm("nop"); //здесь просыпается по прерыванию
    DSCONbits.RELEASE=0;
//-deepsleep

Последний раз редактировалось d-f-m; 08.02.2014 в 15:42.
d-f-m вне форума   Ответить с цитированием
Старый 08.02.2014, 18:14   #5
alxdr
Senior Member
 
Регистрация: 03.01.2009
Сообщений: 128
Вес репутации: 394/40
alxdr is just really nicealxdr is just really nicealxdr is just really nicealxdr is just really nice
По умолчанию Re: PIC24F DeepSleep

При выходе из deep sleep микроконтроллер не продолжит работу, а перезагрузится:

When a wake-up event occurs in Deep Sleep mode (by Reset, RTCC alarm, external interrupt
(INT0) or DSWDT), the device will exit Deep Sleep mode and rearm a Power-on Reset (POR).
alxdr вне форума   Ответить с цитированием
Старый 08.02.2014, 18:59   #6
d-f-m
Senior Member
 
Регистрация: 09.02.2009
Адрес: Недалеко от Пятигорска
Возраст: 46
Сообщений: 611
Вес репутации: 1289/54
d-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud ofd-f-m has much to be proud of
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от alxdr Посмотреть сообщение
При выходе из deep sleep микроконтроллер не продолжит работу, а перезагрузится:

When a wake-up event occurs in Deep Sleep mode (by Reset, RTCC alarm, external interrupt
(INT0) or DSWDT), the device will exit Deep Sleep mode and rearm a Power-on Reset (POR).
Да, POR.
Привел кусок, который работал и со Sleep и Deep Sleep. Надо закомментировать одну строку для выбора варианта.
После выхода из Sleep заполнял DSGPR0, DSGPR1 и делал asm("reset");
Так оказалось проще - все регистры МК, переменные и периферия инициализировалась естественным образом в любом случае.
d-f-m вне форума   Ответить с цитированием
Старый 08.02.2014, 20:08   #7
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 33
Сообщений: 365
Вес репутации: 194/46
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от d-f-m Посмотреть сообщение
Да, POR.
Привел кусок, который работал и со Sleep и Deep Sleep. Надо закомментировать одну строку для выбора варианта.
После выхода из Sleep заполнял DSGPR0, DSGPR1 и делал asm("reset");
Так оказалось проще - все регистры МК, переменные и периферия инициализировалась естественным образом в любом случае.
Вот у меня тоже получается просто Sleep и тоже пришлось сделать reset для переинициализации. Но как-то хотелось все-таки дипслип, меньше жрет же... Библиотечные функции из dpslp.h тож не помогают.
Как-то мутно это все...

Может, я что-то упускаю, и дипслип работает только при каких-нибудь определенных условиях или конфигурации?
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...

Последний раз редактировалось hammer; 08.02.2014 в 20:27.
hammer вне форума   Ответить с цитированием
Старый 09.02.2014, 12:45   #8
hammer
Senior Member
 
Аватар для hammer
 
Регистрация: 28.03.2007
Адрес: Almaty
Возраст: 33
Сообщений: 365
Вес репутации: 194/46
hammer has a spectacular aura abouthammer has a spectacular aura about
По умолчанию Re: PIC24F DeepSleep

Ну да...
Цитата:
Note: In Deep Sleep mode, the device with an on-chip regulator, powers down the
microcontroller by turning off the on-chip VDDCOREvoltage regulator, Deep Sleep
capability is available only when operating with the internal regulator enabled.
__________________
Бывает, проснешься как птица –
Крылатой пружиной на взводе.
И хочется жить и трудиться!..
Но к завтраку это проходит...
hammer вне форума   Ответить с цитированием
Старый 10.08.2016, 12:10   #9
kibr3
Member
 
Регистрация: 11.02.2008
Возраст: 39
Сообщений: 66
Вес репутации: 135/40
kibr3 will become famous soon enoughkibr3 will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

Столкнулся с той же проблемой. Не могу загнать PIC24FJ128GA204 в Deep Sleep. Вот кусок кода для Deep Sleep.
Код:
.include "p24FJ128GA204.inc"
.global _Deep_Sleep_Mode

.section .text
_Deep_Sleep_Mode:
	disi #4
	;BSET DSCON #DSEN 	; if commnted this line entering Sleep Mode only
	BSET DSCON #DSEN 
	NOP
	NOP
	NOP
	PWRSAV #SLEEP_MODE ; Put the device into Deep SLEEP mode
	NOP
	NOP
	NOP
	return
.end
Если убрать коммент на первый BSET DSCON #DSEN то возможно заходит в Deep Sleep (гаснет экран) но не может проснутся ни по INT0 ни по DSWDTEN․
После пробуждения должен вести себя как после рестарта.
Поэтому по сразу ставлю RELEASE и проверку DPSLP бита.
Код:
int main (void)
{

    DSCONbits.RELEASE = 0;
     SYSTEM_Initialize();  
     Configure_Pins();
	/* Initialize SPI and LCD Display */
	//Display_Setup();
	
    GLCD_INIT();
    EXT_INT_Initialize();   
    if(RCONbits.DPSLP){ //RCONbits.SLEEP
       Display("DS_OK")
    }
    else {
       Display("NO_DS");
    }

...
Если оставить коммент на BSET DSCON #DSEN как показано в асм коде выше то заходит в обычный Sleep, все работает и выходит из Sleep по INT0 прерыванию.
Попробовал кот от d-f-m. Ведет похожим образом.
У кого то есть рабочий код для Deep Sleep на PIC24?
__________________
Похоже, что мир будет разрушен, и многие эксперты сходятся в том, что виной этому будет случайность. Тут приходит наша очередь; МЫ— КОМПЬЮТЕРЩИКИ-ПРОФЕССИОНАЛЫ. МЫ — ПРИЧИНА СЛУЧАЙНОСТЕЙ.
kibr3 вне форума   Ответить с цитированием
Старый 10.08.2016, 20:35   #10
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: PIC24F DeepSleep

Код:
static void deep_sleep(void)
{
   _INT0EP     = 0;             // Interrupt on positive edge

    // deepsleep
    asm("disi #4");
    asm("bset DSCON, #15");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("pwrsav #0");
    asm("nop");                 //здесь просыпается и уходит на reset
    // deepsleep
}
Vlad&mir вне форума   Ответить с цитированием
Старый 11.08.2016, 14:53   #11
ramonchik
Senior Member
 
Регистрация: 01.03.2007
Возраст: 46
Сообщений: 131
Вес репутации: 450/48
ramonchik is a glorious beacon of lightramonchik is a glorious beacon of lightramonchik is a glorious beacon of lightramonchik is a glorious beacon of lightramonchik is a glorious beacon of light
Отправить сообщение для ramonchik с помощью ICQ
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Код:
static void deep_sleep(void)
{
   _INT0EP     = 0;             // Interrupt on positive edge

    // deepsleep
    asm("disi #4");
    asm("bset DSCON, #15");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("pwrsav #0");
    asm("nop");                 //здесь просыпается и уходит на reset
    // deepsleep
}

Компилятор XC16 v1.25 генерит для PIC24F четыре варианта функции GotoDeepSleep() из периферийной библиотеки в зависимости от конкретного типа микроконтроллера.
Код:
Line  Address  Opcode       Label                 Disassembly           

   341   2A8    FC0002 GotoDeepSleep_v1_1 disi #2                          
   342   2AA    A8E759                  bset.b 0x0759,#7                 
   343   2AC    000000                  nop                              
   344   2AE    000000                  nop                              
   345   2B0    AE0084                  btss.b 0x0084,#0                 
   346   2B2    FE4000                  pwrsav #0                        
   347   2B4    EBC000                  setm.b w0                        
   348   2B6    060000                  return
   
   349   2B8    A8E759 GotoDeepSleep_v1_2 bset.b 0x0759,#7                 
   350   2BA    A8E759                  bset.b 0x0759,#7                 
   351   2BC    FE4000                  pwrsav #0                        
   352   2BE    EBC000                  setm.b w0                        
   353   2C0    060000                  return
   
   354   2C2    A8E759 GotoDeepSleep_v2 bset.b 0x0759,#7                 
   355   2C4    FE4000                  pwrsav #0                        
   356   2C6    000000                  nop                              
   357   2C8    EBC000                  setm.b w0                        
   358   2CA    060000                  return 
   
   359   2CC    A8E759 GotoDeepSleep_v2_2 bset.b 0x0759,#7                 
   360   2CE    FC0005                  disi #5                          
   361   2D0    200550                  mov.w #0x55,w0                   
   362   2D2    883B30                  mov.w w0,0x0766                  
   363   2D4    200AA1                  mov.w #0xaa,w1                   
   364   2D6    883B31                  mov.w w1,0x0766                  
   365   2D8    000000                  nop                              
   366   2DA    000000                  nop                              
   367   2DC    000000                  nop                              
   368   2DE    FE4000                  pwrsav #0                        
   369   2E0    000000                  nop                              
   370   2E2    EBC000                  setm.b w0                        
   371   2E4    060000                  return
Видимо не все так однозначно.
ramonchik вне форума   Ответить с цитированием
Старый 11.08.2016, 17:52   #12
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от ramonchik Посмотреть сообщение
...Видимо не все так однозначно.
Код, который я привёл, 100% работает в PIC24FJ64GB004 и в PIC24FJ256GB206. Главное, не забыть разрешить прерывания от INT0, а то не проснётся!
За остальные ручаться не могу.
Vlad&mir вне форума   Ответить с цитированием
Старый 13.08.2016, 12:25   #13
kibr3
Member
 
Регистрация: 11.02.2008
Возраст: 39
Сообщений: 66
Вес репутации: 135/40
kibr3 will become famous soon enoughkibr3 will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Код, который я привёл, 100% работает в PIC24FJ64GB004 и в PIC24FJ256GB206. Главное, не забыть разрешить прерывания от INT0, а то не проснётся!
За остальные ручаться не могу.
Уважаемый Vlad&mir в даташите на PIC24FJ256GB206 не нашел упоминания на Deep Sleep.

К сожалению все версии ассемблера от ramonchik тоже не работают. Работает только Sleep Mode но не Deep Sleep Mode при котором должно быть POR (Reset) после просыпания.

Может что то не в порядке с моим процем. Попробую на другом.
__________________
Похоже, что мир будет разрушен, и многие эксперты сходятся в том, что виной этому будет случайность. Тут приходит наша очередь; МЫ— КОМПЬЮТЕРЩИКИ-ПРОФЕССИОНАЛЫ. МЫ — ПРИЧИНА СЛУЧАЙНОСТЕЙ.
kibr3 вне форума   Ответить с цитированием
Старый 13.08.2016, 15:03   #14
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/97
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от kibr3 Посмотреть сообщение
Уважаемый Vlad&mir в даташите на PIC24FJ256GB206 не нашел упоминания на Deep Sleep...
Виноват! Сбрехал. Уточнил на работе: PIC24FJ128GB202
Простите великодушно!
Vlad&mir вне форума   Ответить с цитированием
Старый 27.08.2016, 14:06   #15
kibr3
Member
 
Регистрация: 11.02.2008
Возраст: 39
Сообщений: 66
Вес репутации: 135/40
kibr3 will become famous soon enoughkibr3 will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

Последние результаты
Получилось загнать в Deep Sleep
Вот рабочий код
PHP код:
static void Deep_Sleep(void){
    
// Enclose all in-line assembly in its own function
    
asm("MOV #0x8000, w2");
    
asm("MOV w2, DSCON");
    
asm("MOV w2, DSCON"); // Must repeat writes for GC family devices.
    
asm("PWRSAV #0");
    
// The following code is fine for non GC devices.
    //_DSCON = 1;
    //Sleep()
}
void Deep_SleepRelease(void)
{
    
_RELEASE 0;
    
_RELEASE 0// Must repeat writes for GC family devices.

К сожалению нигде в Datasheet не было указано что после выхода из Deep Sleep должно быть 2 раза _RELEASE чтобы работало.

Еще пару заметок. Перед входом в Deep Sleep
A). Чтобы получить минимальный ток < 1uA надо все порты конфигугурировать на вход.
B) Tе порты которые подключены на выход надо менять состояние TRIS не уверен с чем это связано но только так получается < 1uA.
C) Все использованные переферии надо выключить "ручками" перед входом.После просыпния все инизиализируется заново. За исключением RTCC.
PHP код:
LATBbits.LATB9 != LATBbits.LATB9
               TRISA
=0xff
               
TRISB=0xff
               
TRISC=0xff
__________________
Похоже, что мир будет разрушен, и многие эксперты сходятся в том, что виной этому будет случайность. Тут приходит наша очередь; МЫ— КОМПЬЮТЕРЩИКИ-ПРОФЕССИОНАЛЫ. МЫ — ПРИЧИНА СЛУЧАЙНОСТЕЙ.
kibr3 вне форума   Ответить с цитированием
Старый 29.08.2016, 08:44   #16
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 32
Сообщений: 1,317
Вес репутации: 2246/74
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: PIC24F DeepSleep

Цитата:
Сообщение от kibr3 Посмотреть сообщение
A). Чтобы получить минимальный ток < 1uA надо все порты конфигугурировать на вход.
Только при этом эти входы должны быть притянуты куда-то. Если висят в воздухе, то будут клацать туда-сюда ключи входного буфера, что вызовет потребление тока.
Рак на форуме   Ответить с цитированием
Старый 04.07.2018, 12:57   #17
GIGSatellite
Junior Member
 
Регистрация: 03.08.2010
Возраст: 55
Сообщений: 24
Вес репутации: 100/31
GIGSatellite will become famous soon enoughGIGSatellite will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

делаю так:
{__asm__ volatile ("bset DSCON #15");}
{__asm__ volatile ("bset DSCON #15");}
Sleep();

Выхожу из Sleep по WDT ...после ресет смотрю биты в RCON
SLEEP=1
DPSLP=0

т.е. не было Deep Sleep... что я делаю не так???
GIGSatellite вне форума   Ответить с цитированием
Старый 04.07.2018, 13:21   #18
kibr3
Member
 
Регистрация: 11.02.2008
Возраст: 39
Сообщений: 66
Вес репутации: 135/40
kibr3 will become famous soon enoughkibr3 will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

Цитата:
т.е. не было Deep Sleep... что я делаю не так???
Не забываем про двойной RELEASE в самом начале, на старте.
PHP код:
int main (void){    
_RELEASE 0
_RELEASE 0;
...

Без этого не зайдет.
__________________
Похоже, что мир будет разрушен, и многие эксперты сходятся в том, что виной этому будет случайность. Тут приходит наша очередь; МЫ— КОМПЬЮТЕРЩИКИ-ПРОФЕССИОНАЛЫ. МЫ — ПРИЧИНА СЛУЧАЙНОСТЕЙ.
kibr3 вне форума   Ответить с цитированием
Старый 04.07.2018, 13:47   #19
GIGSatellite
Junior Member
 
Регистрация: 03.08.2010
Возраст: 55
Сообщений: 24
Вес репутации: 100/31
GIGSatellite will become famous soon enoughGIGSatellite will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

Да...по включению сразу:
DSCONbits.RELEASE=0;
DSCONbits.RELEASE=0;

выхожу на ресет по WDT а должен по DSWDT
GIGSatellite вне форума   Ответить с цитированием
Старый 04.07.2018, 13:55   #20
GIGSatellite
Junior Member
 
Регистрация: 03.08.2010
Возраст: 55
Сообщений: 24
Вес репутации: 100/31
GIGSatellite will become famous soon enoughGIGSatellite will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

пробовал и так:

#define Disi() {__asm__ volatile ("disi #5");}
#define DSenIni() {__asm__ volatile ("bset DSCON #15");}

Disi();
DSenIni();
DSenIni();
Nop();
Nop();
Nop();
Sleep();
Nop();

Deep Sleep не срабатывает...(((
GIGSatellite вне форума   Ответить с цитированием
Старый 04.07.2018, 14:03   #21
kibr3
Member
 
Регистрация: 11.02.2008
Возраст: 39
Сообщений: 66
Вес репутации: 135/40
kibr3 will become famous soon enoughkibr3 will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

В какой то момент у меня DPSLP=0 бит не устанавливался даже когда входило в DS.
Проверить DS можно по току потребления. Но надо запретить WD и разрешить INT0.
__________________
Похоже, что мир будет разрушен, и многие эксперты сходятся в том, что виной этому будет случайность. Тут приходит наша очередь; МЫ— КОМПЬЮТЕРЩИКИ-ПРОФЕССИОНАЛЫ. МЫ — ПРИЧИНА СЛУЧАЙНОСТЕЙ.
kibr3 вне форума   Ответить с цитированием
Старый 04.07.2018, 14:19   #22
GIGSatellite
Junior Member
 
Регистрация: 03.08.2010
Возраст: 55
Сообщений: 24
Вес репутации: 100/31
GIGSatellite will become famous soon enoughGIGSatellite will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

задача просыпаться по DSWDT...но не работает, разрешаю WDT срабатывает по нему
GIGSatellite вне форума   Ответить с цитированием
Старый 04.07.2018, 15:21   #23
kibr3
Member
 
Регистрация: 11.02.2008
Возраст: 39
Сообщений: 66
Вес репутации: 135/40
kibr3 will become famous soon enoughkibr3 will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

Попробуй убрать все Nop() после DSenIni();
Там все должно быть замерено по тактам.
Замени sleep() на "PWRSAV #0" или проверь по дизассебмли что они одинаковы.
__________________
Похоже, что мир будет разрушен, и многие эксперты сходятся в том, что виной этому будет случайность. Тут приходит наша очередь; МЫ— КОМПЬЮТЕРЩИКИ-ПРОФЕССИОНАЛЫ. МЫ — ПРИЧИНА СЛУЧАЙНОСТЕЙ.
kibr3 вне форума   Ответить с цитированием
Старый 04.07.2018, 15:27   #24
GIGSatellite
Junior Member
 
Регистрация: 03.08.2010
Возраст: 55
Сообщений: 24
Вес репутации: 100/31
GIGSatellite will become famous soon enoughGIGSatellite will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

Код:
!    //Disi();
!    DSenIni();
0x21D4: BSET 0x759, #7
!    DSenIni();
0x21D6: BSET 0x759, #7
!    //Nop();
!    //Nop();
!   // Nop();
!    Sleep();
0x21D8: PWRSAV #0
!    Nop();
0x21DA: NOP
!    Nop();
0x21DC: NOP
!    Nop();
0x21DE: NOP
не помогает...((
GIGSatellite вне форума   Ответить с цитированием
Старый 04.07.2018, 15:39   #25
kibr3
Member
 
Регистрация: 11.02.2008
Возраст: 39
Сообщений: 66
Вес репутации: 135/40
kibr3 will become famous soon enoughkibr3 will become famous soon enough
По умолчанию Re: PIC24F DeepSleep

"BSET 0x759, #7" ???
Должно же быть BSET 0x759, #15
__________________
Похоже, что мир будет разрушен, и многие эксперты сходятся в том, что виной этому будет случайность. Тут приходит наша очередь; МЫ— КОМПЬЮТЕРЩИКИ-ПРОФЕССИОНАЛЫ. МЫ — ПРИЧИНА СЛУЧАЙНОСТЕЙ.
kibr3 вне форума   Ответить с цитированием
Ответ

Метки
deep sleep, pic24, геморрой


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при компиляции программы для Pic24F Yevgeniy_F Вопросы начинающих 1 31.07.2013 19:50
С30 для PIC24F обращение к биту переменной типа int Solario Вопросы начинающих 3 22.05.2013 16:43
PIC24F Starter Kit - можно ли прошивать МК не из комплекта? zladm Продукция MICROCHIP 4 02.12.2010 19:33
DeepSleep на PIC18F45J50 soksok Продукция MICROCHIP 4 02.11.2010 10:46
pic24f и ЖКИ mt-16s2r Torik Продукция MICROCHIP 3 30.11.2009 17:35


Часовой пояс GMT +3, время: 15:48.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot