реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Кто как усыпляет SAM7S ?, что-то не знаю где подсмотреть
nameless
сообщение Aug 25 2006, 11:39
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



Ну, с периферией все ясно....почти, а как быть с System Peripherals (как понял FLASH и RAM) есть ли проверенные приемы отключения и т.п.
Go to the top of the page
 
+Quote Post
sapID
сообщение Aug 30 2006, 05:13
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 24
Регистрация: 21-10-04
Из: Пермь, РФ
Пользователь №: 934



Вот таким кодом я "глушил" Кит до очень маленького потребления. Естественно, после этого разбудить его не удается, поэтому так глубоко усыплять его не стоит.


__ramfunc void PowerDownAbsolute(void)
{
//Flash is in standby mode (__ramfunc)

while (1) ;
}


void PowerDown(void)
{

// Disable Interrupts
AT91F_AIC_DisableIt(AT91C_BASE_AIC, 0xFFFFFFFF );

//Analog-to-Digital Converter de-activated.
AT91F_ADC_CfgModeReg(AT91C_BASE_ADC, AT91C_ADC_SLEEP_MODE);

//USB transceiver disabled.
AT91F_UDP_DisableTransceiver(AT91C_BASE_UDP);
//ARM Core in idle mode.
AT91F_PMC_CfgSysClkDisableReg(AT91C_BASE_PMC, AT91C_PMC_UDP | AT91C_PMC_PCK | AT91C_PMC_PCK0 | AT91C_PMC_PCK1 | AT91C_PMC_PCK2);

// Pull-Up off
AT91F_PIO_CfgPullup(AT91C_BASE_PIOA,0xFFFFFFFF);
//AT91F_PIO_CfgPullup(AT91C_BASE_PIOA,0);
//Tri-state
//AT91F_PIO_CfgOpendrain(AT91C_BASE_PIOA,0xFFFFFFFF);
//AT91F_PIO_CfgOpendrain(AT91C_BASE_PIOA,0);
// Все на вход
//AT91F_PIO_CfgInput(AT91C_BASE_PIOA,0xFFFFFFFF);

//All peripheral clocks de-activated.
AT91F_PMC_DisablePeriphClock ( AT91C_BASE_PMC, 0xFFFFFFFF );

//MCK @ 500Hz.
AT91F_PMC_CfgMCKReg (AT91C_BASE_PMC,AT91C_PMC_CSS_SLOW_CLK | AT91C_PMC_PRES_CLK_4);
while(!(AT91F_PMC_GetStatus(AT91C_BASE_PMC) & AT91C_PMC_MCKRDY));

AT91F_CKGR_CfgPLLReg(AT91C_BASE_CKGR,0);

// Disable Main Oscillator
AT91F_CKGR_DisableMainOscillator(AT91C_BASE_CKGR);
while(!(AT91F_PMC_GetStatus(AT91C_BASE_PMC) & AT91C_PMC_MOSCS));

//Voltage regulator is in Low-power mode.
AT91F_VREG_Enable_LowPowerMode(AT91C_BASE_VREG);

//ARM Core in idle mode.
PowerDownAbsolute();

while (1) ;
}
Go to the top of the page
 
+Quote Post
nameless
сообщение Aug 30 2006, 07:14
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



Большое спасибо. Я именно в таком русле и начал самостоятельно.
Теперь другой вопрос - по какому именно прерыванию от UDP можно проснуться. Как я поня SOFINT не подходит, так как комп все время обращается к USB (наверное ищет вновь подключаемые устройства)
Go to the top of the page
 
+Quote Post
sapID
сообщение Sep 1 2006, 04:29
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 24
Регистрация: 21-10-04
Из: Пермь, РФ
Пользователь №: 934



либо AT91C_UDP_ENDBUSRES, либо AT91C_UDP_RXRSM

В cfgDescriptor на всякий случай прописать, что устройство умеет WAKEUP
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016