Sleep módy Atmegy8
Moderátor: Moderátoři
Sleep módy Atmegy8
v datasheetu je napsáno : The Oscillator is optimized for use with a 32.768 kHz watch crystal. Applying an external
clock to the TOSC1 pin may result in incorrect Timer/Counter2 operation. The CPU main
clock frequency must be more than four times the Oscillator frequency.
Ještě jak jsi psal o té předděličce- jestli jsem dobře pochopil datasheet tak ta se při asynchronním módu toho Timeru2 neuplatní....
Kód: Vybrat vše
#include <stdlib.h>
#include <avr/io.h>
#include <stdio.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#define F_CPU 8000000 //definovana rychlost taktu pro knihovnu "delay.h", interni RC
#include <util/delay.h>
#define USART_BAUDRATE 9600
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
void main(void)
{
UCSRB |= (1 << RXEN) | (1 << TXEN);
UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1);
UBRRL = BAUD_PRESCALE;
UBRRH = (BAUD_PRESCALE >> 8);
ASSR = (1 << AS2);
//TCCR2 |= ((1 << CS22) | (1 << CS21) | (1 << CS20)); //zakomentovana preddelicka 1024
TIMSK |= (1 << TOIE2);
TCCR2 |= (1 << CS10);
MCUCR |= (1<<SE)|(1<<SM1)|(1<<SM0); // Povoleni sleep modu (power safe mod
sei();
while(1)
{
asm("sleep");
_delay_ms(200);
}
}
ISR(TIMER2_OVF_vect)
{
_delay_ms(200);
UDR = '0x55';
}