47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
"use strict";
|
|
|
|
/*
|
|
* In this test, GPIO7 is connected to one end of a 1kΩ current limiting
|
|
* resistor and GPIO8 is connected to the other end of the resistor. GPIO7 is
|
|
* an interrupt generating input and GPIO8 is an output. By toggling the state
|
|
* of the output an interrupt is generated. The output is toggled as often as
|
|
* possible to determine the maximum rate at which interrupts can be handled.
|
|
*/
|
|
const Gpio = require('../onoff').Gpio;
|
|
const input = new Gpio(7, 'in', 'both');
|
|
const output = new Gpio(8, 'out');
|
|
|
|
let irqCount = 0;
|
|
let iv;
|
|
|
|
// Exit handler
|
|
function exit() {
|
|
input.unexport();
|
|
output.unexport();
|
|
|
|
clearInterval(iv);
|
|
}
|
|
process.on('SIGINT', exit);
|
|
|
|
// Interrupt handler
|
|
input.watch((err, value) => {
|
|
if (err) {
|
|
exit();
|
|
}
|
|
|
|
irqCount += 1;
|
|
|
|
// Trigger next interrupt by toggling output.
|
|
output.writeSync(value === 0 ? 1 : 0);
|
|
});
|
|
|
|
// Print number of interrupts once a second.
|
|
iv = setInterval(() => {
|
|
console.log(irqCount);
|
|
irqCount = 0;
|
|
}, 1000);
|
|
|
|
// Trigger first interrupt by toggling output.
|
|
output.writeSync(output.readSync() === 0 ? 1 : 0);
|
|
|