1. Nie włączyłeś przerwań z przetwornika ADC. Patrz program podany przeze mnie wyżej.
2. Odczytuj pomiar do zmiennej i ją i ją używaj w if().
3. Ustawić tryb snu wystarczy raz.
4. Zegar definiuj w opcjach projektu z tych powodów: http://mikrokontrolery.blogspot.com/201 ... iowac.html
Czyli Twój program powinien wyglądać mniej więcej tak:
Kod: Zaznacz cały
//#define F_CPU 4800000UL //patrz punkt 4 w opisie powyżej
//#include <stdio.h> // zbędny
#include <avr/io.h>
//#include <util/delay.h> // zbędny
#include <avr/interrupt.h>
#include <avr/sleep.h>
#define LED1 PB1
#define LED2 PB2
#define ADCIN PB4
unsigned int pomiar;
int main(void)
{
DDRB |= (1<<LED1)|(1<<LED2);
DDRB &=~ (1<<ADCIN);
ADCSRA |= (1<<ADEN) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1);
ADMUX |= (1<<MUX1)|(1<<REFS0);
set_sleep_mode(SLEEP_MODE_ADC);
sleep_enable();
sei();
for(;;)
{
//rozpocznij pomiar przez uśpienie mikrokontrolera
sleep_cpu();
pomiar = ADC;
if(pomiar<700)
{
PORTB &=~ (1<<LED1);
PORTB &=~ (1<<LED2);
}
else if(pomiar<750)
{
PORTB &=~ (1<<LED1);
PORTB |= (1<<LED2);
}
else
{
PORTB |= (1<<LED1);
PORTB |= (1<<LED2);
}
}
}
ISR(ADC_vect){
}