Hallo Community, Ich versuche gerade für einen selbst gebauten USB-Signalgenerator die Windowsforms-Software, in C# zu schreiben, stehe aber vor einem großen Problem. Die Software soll die Werte für die Einstellung des µCs nach dem Datenblatt des Bausteins berechnen und diese per Emulierten RS232/USB-Schnittstelle an den Controller senden. Wie auf dem Bild zu sehen, habe ich einen 32Bit Integer. Dieser soll nach 14 Bits getrennt werden. Anschließend, sollen zwei 14 Bit Integer enstehen. Zu diesen wird jeweils 0x4000 addiert (zur Auswahl des Steuerregisters des µc). anschließend sollen die de entstandenen Daten über die Serielle Schnittstelle, mit 8Bit, versendet werden. meine Idee war nun, die Bits einfach zu shifften Die variable "helper" habe ich nur eingefügt um besser debuggen zu können:
1 | freqreg = 762357; // 0xBA1F4 um die gleichen Werte wie in der Zeichnung zu bekommen |
2 | |
3 | int helper = 0; // Hilfsvariable |
4 | helper = (freqreg << 18); // Hier ist meiner Meinung nach der Fehler wird zu -201614950 |
5 | |
6 | helper = helper >> 18; |
7 | tb_MSB.Text = Convert.ToString(helper, 16); // funktioniert nicht 0xFFFFE1F5 |
8 | tb_LSB.Text = Convert.ToString(Convert.ToInt32((freqreg >> 14) + 16384), 16); //funktioniert 0x402E |
Mit dem Code wollte ich erreichen, dass die oberen 14Bit nach links aus der Zahl heraus geschoben werden und anschließend wieder alles mit Nullen aufgefüllt wird. Leider wird nach dem ersten shifft die Zahl negativ, wohl durch das Vorzeichenbit. Also habe ich versucht, diese ans uint zu nehmen, dann lassen sich allerdings die anderen Operationen nicht mehr anwenden.... Ich hoffe Ihr könnt mir da helfen. Vielen Dank schon einmal:-)