Охота вам над железкой издеваться? 4 прерывания с четырьмя обработчиками в один и тот же момент - выпутывайся, как знаешь. И обработки коротких импульсов нет.
/* для 328 (UNO/NANO/MINI), см. схему
с регистрацией коротких импульсов
Arduino 1.8.6.
*/
volatile uint16_t counters[] = {0, 0, 0, 0,}; // 0.2, 0.4, 08, 1.2
uint32_t startTime = 0;
uint16_t interval = 1000;
void detect() {
uint8_t pinD = PIND;
counters[bitRead(pinD,4)+ bitRead(pinD,5)+ bitRead(pinD,6)]++ ;
digitalWrite(7, LOW);
digitalWrite(7, HIGH);
}
void setup() {
Serial.begin(57600);
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
digitalWrite(7, HIGH);
/*
* ешё что надо настраиваем
*/
startTime = millis();
attachInterrupt(1, detect, RISING);
}
void loop() {
if (millis() - startTime >= interval) {
detachInterrupt(1);
/* Здесь передаюм что попало куда угодно,
измеряем температуру и вообще не спеша
делаем что хочется
*/
for (uint8_t n = 0; n < 4; n++) { counters[n] = 0; }
startTime = millis();
attachInterrupt(1, detect, RISING);
}
}
Охота вам над железкой издеваться? 4 прерывания с четырьмя обработчиками в один и тот же момент - выпутывайся, как знаешь. И обработки коротких импульсов нет.
По моему, может потребоваться задержка фронта по входу С, чтобы не пропустить "верхние" значения.
Охота вам над железкой издеваться? 4 прерывания с четырьмя обработчиками в один и тот же момент - выпутывайся, как знаешь. И обработки коротких импульсов нет.
По моему, может потребоваться задержка фронта по входу С, чтобы не пропустить "верхние" значения.
м.быть,.. поставить вместо одного ТМ8 два корпуса ТМ2 с изменением схемы тактирования.
в любом случае желательно погонять/проверить на имитаторе.
Охота вам над железкой издеваться? 4 прерывания с четырьмя обработчиками в один и тот же момент - выпутывайся, как знаешь. И обработки коротких импульсов нет.
Охота вам над железкой издеваться? 4 прерывания с четырьмя обработчиками в один и тот же момент - выпутывайся, как знаешь. И обработки коротких импульсов нет.
По моему, может потребоваться задержка фронта по входу С, чтобы не пропустить "верхние" значения.
Охота вам над железкой издеваться? 4 прерывания с четырьмя обработчиками в один и тот же момент - выпутывайся, как знаешь. И обработки коротких импульсов нет.
По моему, может потребоваться задержка фронта по входу С, чтобы не пропустить "верхние" значения.
в любом случае желательно погонять/проверить на имитаторе.