BLINK через Каро-Паго
- Войдите на сайт для отправки комментариев
Ср, 15/01/2020 - 22:46
Тема о возможности такого вида блинка уже пробегала (ЕвгенийП), но примера не было!
Можно использовать для отслеживания работоспособности таймера (меандр).
enum Prescalers {
PRESCALER_1 = 1, PRESCALER_8 = 2, PRESCALER_64 = 3, PRESCALER_256 = 4, PRESCALER_1024 = 5
};
volatile unsigned long led = 0;
void setup() {
uint8_t prescaler = PRESCALER_8;
uint16_t topValue = 9;
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
/* Запускаем таймер */
TCCR1A=(1<<COM1A0) | (1<<COM1B0); // Инвертирование пина 9 и 10 по сравнению
TCCR1B = 0x08 | prescaler; // Установить СТС режим и делитель частоты
OCR1A = topValue; // установить TOP равным topValue
set_blink();
}// END SETUP
ISR(PCINT0_vect) {
blink_led13();
}
void set_blink(){
PCICR |= (1 << PCIE0); // инициализируем порт для приёма CH2
PCMSK0 |= (1 << PCINT1/*D9*/);
}
void blink_led13(){
static unsigned long ulStart;
if(digitalRead(9)) {
ulStart++;
}
else {
if(ulStart >=25000){digitalWrite(13,!digitalRead(13));ulStart=0;}
}
}
void loop() {}