// avrdude -pt13 -cusbtiny -Pusb -e -U lfuse:w:0x7a:m -U hfuse:w:0xfb:m -U flash:w:C:\attiny13_timer.cpp.hex:i // +-\/-+ // A0 (D5) PB5 1| |8 VCC // A3 (D3) PB3 2| AT |7 PB2 (D2) INT0 A1 // A2 (D4) PB4 3| 13 |6 PB1 (D1) pwm1 // GND 4| |5 PB0 (D0) pwm0 // +----+ #define F_CPU 9600000 // clock 9.6 MHz #include #include long interval, delka_pulsu, delka_pauzy; unsigned long previousMillis, previousMillis_blink; byte pulse, wait; void setup() { OSCCAL = 88; // kalibracni konstanta oscilatoru - jen buh zna tu spravnou //pinMode(1, INPUT); // PB1 jako vstup spinace REVERS DDRB &= ~(1 << PB1); // PB1 jako vstup spinace REVERS //pinMode(0, OUTPUT); // PB0 jako vystup OUT DDRB |= 1 << PB0; // PB0 jako vystup OUT //pinMode(2, OUTPUT); // PB2 jako vystup = signalizacni blikajici ledka DDRB |= 1 << PB2; // PB2 jako vystup = signalizacni blikajici ledka //digitalWrite(0,LOW); // vystup na pocatku = LOW PORTB &= ~(1 << PB0); // vystup PB0 na pocatku = LOW PORTB &= ~(1 << PB2); // vystup PB2 na pocatku = LOW volatile const int8_t adc2 = (1<= 1000) { //digitalWrite(2, !digitalRead(2)); // zmena signalu na pinu 2 kazdou sekundu PORTB ^= 1 << PB2; // zmena signalu na pinu 2 kazdou sekundu = signalizacni blikajici ledka previousMillis_blink = currentMillis; } // ovladaci vystup na PB0 if ((unsigned long)(currentMillis - previousMillis) >= interval) { //digitalWrite(0, !digitalRead(0)); // zmena signalu na pinu 0 PORTB ^= 1 << PB0; // zmena signalu na pinu 0 previousMillis = currentMillis; if ( interval == delka_pulsu) { // zmena intervalu puls/pauza interval = delka_pauzy; // 0-255 minut } else { interval = delka_pulsu; // 0-255 sekund } } _delay_ms(50); // cely cyklus bezi v intervalu 50ms }