36 lines
703 B
C
36 lines
703 B
C
#include<avr/io.h>
|
|
#include<avr/interrupt.h>
|
|
|
|
volatile uint8_t dioda = 0;
|
|
|
|
// Przerwanie ktore wykonuje sie przy zmianie stanu kompratora
|
|
ISR(ANALOG_COMP_vect) {
|
|
if(dioda == 0) dioda = 1;
|
|
else dioda = 0;
|
|
}
|
|
|
|
int main(void) {
|
|
// Ustawienie portu C0 i C1 jako wyjscie
|
|
DDRC |= (1<<PC0) | (1<<PC1);
|
|
|
|
// Wlaczenie interrupt na toggle stanu komparatora
|
|
cli();
|
|
ACSR |= (1<<ACIE);
|
|
sei();
|
|
|
|
while(1) {
|
|
// Zmiana na bezposrednie zczytanie stanu
|
|
// B2 - AIN0
|
|
// B3 - AIN1
|
|
uint8_t AIN0_wieksze_od_AIN1 = ACSR & (1<<ACO);
|
|
if(AIN0_wieksze_od_AIN1) PORTC |= (1<<PC0);
|
|
else PORTC &= ~(1<<PC0);
|
|
|
|
// Zmiana na interrupt
|
|
if(dioda == 0) PORTC &= ~(1<<PC1);
|
|
else PORTC |= (1<<PC1);
|
|
}
|
|
|
|
return 0;
|
|
}
|