zdrojovy kod
Kód: Vybrať všetko
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
ISR(INT0_vect){
if(OCR1A < 245) OCR1A+=10;
}
ISR(INT1_vect){
if(OCR1A > 10) OCR1A-=10;
}
int main(){
DDRB |= (1 << PB1); // OC1A ako výstupný
// REZIM 5 - Fast PWM 8bit,
TCCR1A |= (1 << COM1A1) | (1 << WGM10);
TCCR1B |= (1 << WGM12) | (1 << CS11); // preddelička 8 pri 8 MHz = (1us)
// PD2,PD3 ako vstupné (ext. prerušenia)
DDRD &= ~((1 << PD2) | (1 << PD3));
// Zapnutie interného pull-up rezistora
PORTD |= (1 << PD2) | (1 << PD3);
MCUCR |= (1 << ISC01); // dobežná hrana INT0
MCUCR |= (1 << ISC11); // dobežná hrana INT1
GICR |= (1 << INT1) | (1 << INT0); // povol prerušenia od INT1 a INT0
OSCCAL = 0xA5; // nastavenie kalibracneho bajtu interneho RC oscilatora
sei(); // povol globalne prerušenia
while(1);
return 0;
}