Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Спящий режим ATMega 128
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Lazin
Плата на базе ATMega128 должна при отключении питания работать от аккумулятора. В принципе ничего сложного, нужно завести сигнал наличия внешнего питания на какой нибудь INT, засыпать и просыпаться по нему. Проблема в том, что контроллер выполняет помимо всего прочего еще и ф-ию RTC. Выглядит это так:

Код
#define TIMER0_CLK 0x5

//TIMER0 initialisation - prescale:1024
// WGM: Normal
// desired value: 100Hz
// actual value: 100.160Hz (0.2%)

void timer0_init(void)
{        
TCCR0=0x00; //stop
ASSR=0x00; //set async mode
TCNT0=0xC0; //set count
OCR0=0x40;
TCCR0=TIMER0_CLK; //start timer
}

//call this routine to initialise all peripherals
void init_devices(void)
{          
CLI();
XDIV=0x00;
XMCRA=0x00;
port_init();
timer0_init();
timer1_init();
uart0_init();
spi_init();

MCUCR = 0x00;
EICRA = 0x00;
EICRB = 0x00;
EIMSK = 0x00;
TIMSK = 0x05;
ETIMSK=0x20;// - timer 3 capture -
SEI();
}
unsigned char tcnt0 = 0;
unsigned char led = 0;

//код прерывания - моргает светодиодом и считает время
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void){            
    tcnt0++;
    if(tcnt0 == 225){
        tcnt0=0;
        if(led){
         led=0;
         PORTB=PINB&0xEF;
        }
        else{
         led=1;
         PORTB=PINB|0x10;
         time_change ();//ф-я обновления времени
        }
    }
}

При такой реализации RTC, нужно просыпаться по прерыванию от таймера 0 и считать время, затем опять засыпать, но я не знаю какой из спящих режимов сюда подойдёт, и можно ли вообще так делать. Буду рад любой помощи. Заранее спасибо.
defunct
Если использовать Timer3 в асинхронном режиме (тактировать от внешнего часового кварца). Тогда контроллер можно отправлять в Power-save режим (почти эквивалентно Power-down).

В такой реализации как у Вас (с использованием T0 для RTC), максимум, что можно включить - режим Idle. Про потребление, в энергосберегающих режимах написано в даташите.
Lazin
Спасибо. Разобрался.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.