I-Signalgenerator Windows-Iot universal entwickle JavaScript-Anwendung zu Raspberry Pi 2.Gibt es eine Möglichkeit Uhr zu verwenden, unterbricht auf Raspberry Pi 2 mit Windows iot
I MCP4921 DAC durch SPI mit ihm verbunden.
Was ich versuche zu tun ist, Sinus mit gegebener Frequenz, Amplitude und Offset zu erzeugen. Ich habe bereits Gerät funktioniert, aber wenn ich versuche, genaue Welle zu erzeugen, ist Anwendung zu verlangsamen sogar 10 Hz genaue Sinuswelle.
Derzeit wird so eine Welle generiert.
var Spi = Windows.Devices.Spi;
var Enumeration = Windows.Devices.Enumeration;
var frequency = 10;
var ts = 1/frequency;
var updateFreq = ts/100;
var time = 0;
var offset = 2;
var amplitude = 2;
var resolution = 4095;
var voltage = 5;
var settings = Spi.SpiConnectionSettings(0);
settings.clockFrequency = 2 * Math.pow(10, 7);
settings.mode = Spi.SpiMode.mode0;
var ags = Spi.SpiDevice.getDeviceSelector();
Enumeration.DeviceInformation.findAllAsync(ags, null).done(dis => {
Spi.SpiDevice.fromIdAsync(dis[0].id, settings).done(device => {
for (; ;) {
var value = offset + amplitude * Math.sin(2 * Math.PI * frequency * time);
var dacValue = parseInt(resolution/voltage * value);
if (dacValue > resolution) dacValue = resolution;
time += updateFreq;
if (time > 1000) time = 0;
var buffer = new Uint8Array(2);
buffer[0] = 0x30 | (dacValue >>> 8);
buffer[1] = 0xFF & dacValue;
device.write(buffer);
}
});
});
Ich versuchte setInterval zu verwenden, ich weiß, dass es keine gute Praxis ist, es ist atleast 10 ms, bevor läuft wieder warten.
Gibt es Möglichkeiten, Raspberry Timer, Uhr oder was auch immer zu ändern, um benutzerdefinierte Interrupt ISR-Funktion alle 0,1 ms auszuführen?
Ich schaute bereits dma Register bei BCM2835 Datasheet und BCM2836 Datasheet Datenblatt. Ich kann keine Lösungen finden, wie man Raspberry Pi-Taktunterbrechungen nur auf Nadelunterbrechungen handhaben kann.
Ich weiß auch, wie es in Arduino Uno zu tun, aber es wird mir nicht helfen, wie ich Himbeerregister nicht manipulieren kann.
Hier ist ein Bild der generierten Sinuswelle.
Vielen Dank im Voraus.