Ich versuche, mit dieser Bibliothek einen digitalen Topf MCP4131 von meinem Raspberry Pi aus zu steuern .
Mit den GPIO-Pins "emuliere" ich eine SPI-Schnittstelle. Ich bringe den ChipSelect-Pin auf Low, schreibe mein Byte und bringe ihn dann wieder auf High.
Wenn ich mein Messgerät an den Scheibenwischer anschließe, bekomme ich eine konstante Spannung. Es ändert sich nicht. Stimmt etwas mit meinem Code in nicht POT.cs
?
class Program {
static void Main(string[] args) {
GPIOMem cs = new GPIOMem(GPIOPins.GPIO_17);
GPIOMem clock = new GPIOMem(GPIOPins.GPIO_23);
GPIOMem sdisdo = new GPIOMem(GPIOPins.GPIO_22);
var pot = new POT(clock, sdisdo, cs);
while (true) {
for (uint level = 0; level <= 127; level++) {
pot.SetValue(level);
Thread.Sleep(100);
}
for (uint level = 127; level >= 0; level--) {
pot.SetValue(level);
Thread.Sleep(100);
}
}
}
}
Pot.cs
public class POT {
private GPIO clockpin;
private GPIO mosipin;
private GPIO cspin;
public POT(GPIO SPICLK, GPIO SPIMOSI, GPIO SPICS) {
clockpin = SPICLK;
mosipin = SPIMOSI;
cspin = SPICS;
}
public void SetValue(uint value) {
Console.WriteLine("here");
cspin.Write(true);
clockpin.Write(false); // #start clock low
cspin.Write(false); // #bring CS low
BitArray b = new BitArray(BitConverter.GetBytes(value));
Console.WriteLine(value);
for (int i = 8; i > 0; i--) {
mosipin.Write(b[i]);
clockpin.Write(true); //cycle the clock
clockpin.Write(false); //yucle the clock
}
cspin.Write(true);
}
}
Bitte beachten Sie : Alle 3 GPIO-Pins funktionieren wie sie sollten.
Der MCP4131 verwendet eine störende "gemultiplexte" SPI-Implementierung.
Um in den MCP4131 zu schreiben, können Sie nicht einfach 8 Bit schreiben. Sie müssen 16 Bit schreiben. Sie sind im Datenblatt beschrieben.
Sie sollten die Adresse 0 (flüchtiger Wischer Nr. 0) und den Befehl 0 verwenden, wobei die Daten Ihr Wert mit vorangestellten Nullen sind. Mit anderen Worten, takten Sie acht Nullbits vor Ihrem Wert aus, und Sie sind in Ordnung.
Ich wünschte, Microchip hätte nicht alle seine digitalen SPI-Pots in einem Datenblatt zusammengefasst. Das macht das Datenblatt schwerer lesbar.
Überprüfen Sie auch die Spannung an P0A und P0B (den Enden des Widerstands). Wenn Sie dort keine Spannung haben, ändert das Ändern des Topfhahns die Schleiferspannung nicht.
Chris Stratton
Mikrotherion
DoxyLover
John u
Chris Kooken
cloclpin.write
Zeilen schlafen?Mikrotherion
clockpin.Write
. Beginnen Sie mit einem Schlaf von etwa 1 µs, und wenn das funktioniert, versuchen Sie, sich dem theoretischen Minimum von 50 ns zu nähern.Chris Kooken
Chris Kooken
Markierungen
Connor Wolf
Benutzer25675