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() {}