64Bit Variable?
|
02.02.2021, 16:33
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2021 19:47 von Bitklopfer.)
Beitrag #1
|
|||
|
|||
64Bit Variable?
Hallo,
ich habe 8 Schieberegister 74165 und 8 Schieberegister 74595 mit 64 In- und 64 Outputs. Zuerst sollen erstmal die Zustände der Inputs(x165) auf den entsprechenden Output(x595) dargestellt werden sowie vorgegebene Ausgänge blinken. Das funktionierte mit 32 In- und Outputs auch prima, aber mit 64Bit scheint es nicht zu funktionieren, obwohl ich bereits uint64_t benutze. Weiss jemand wie man 64 Bits in einer Variable erfolgreich speichern kann? Der Prozessor ist ein ATMEGA2560... Hier der code: Code: // Pin- und Variablen-Definierung der Input Shiftregister 74165 Würde ungerne den Weg über 2 32Bit Variablen gehen... |
|||
02.02.2021, 16:36
Beitrag #2
|
|||
|
|||
RE: 64Bit Variable?
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
02.02.2021, 16:46
Beitrag #3
|
|||
|
|||
RE: 64Bit Variable?
(02.02.2021 16:36)Tommy56 schrieb: Als Erinnerung: Wir warten noch auf die Veröffentlichung einer Routine von Dir. Stimmt, ganz vergessen... ![]() |
|||
02.02.2021, 17:03
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2021 17:03 von Tommy56.)
Beitrag #4
|
|||
|
|||
RE: 64Bit Variable?
Wo klemmt es denn genau?
Bei der Arbeit mit den uint64_t, bei der Ausgabe auf die Schieberegister oder noch wo anders? Zur Ausgabe (print unterstützt es nicht) habe ich mir hier ein paar Routinen gebaut. ShiftOut will Byte. Wäre da nicht ein &0xFF angebracht? Code: shiftOut(OUT_dataPin, OUT_clockPin, LSBFIRST, val & 0xFF); Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
02.02.2021, 20:11
Beitrag #5
|
|||
|
|||
RE: 64Bit Variable?
(02.02.2021 17:03)Tommy56 schrieb: Wo klemmt es denn genau? Es kommen immer nur 32 Bits an, da diese aber an den richtigen Positionen sitzen, werden 64Bits durch die Shiftregister erfolgreich geschoben. Allerdings sind die obersten 32Bits alle auf 0. |
|||
02.02.2021, 20:17
Beitrag #6
|
|||
|
|||
RE: 64Bit Variable?
Dann lass Dir doch zur Kontrolle das jeweilige Byte, bevor Du es an Shiftout übergibst auf dem seriellen Monitor ausgeben und vorher die 64 Bit binär, wenn Du in die Funktion rein kommst.
Wenn das richtig ist, dann hast Du ein Hardwareproblem. Leitung vom 4. zum 5. SR nicht ok? Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
03.02.2021, 11:41
(Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2021 11:43 von mega-hz.)
Beitrag #7
|
|||
|
|||
RE: 64Bit Variable?
Hier die Ausgaben mithilfe Deiner binOut Routine:
Code: Inputs :0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 0000 0000 0000 hier sieht man, daß z.B. in der BlinkOutput Variable 64Bit gespeichert sind. Nach jedem 2. Aufruf sieht man auch daß die Bits aus "BlinkOutputs" 1 und 0 werden, also blinken, genau wie es die LEDs auch anzeigen! Rufe ich die shiftOut64 Routine direkt mit dem festen Wert auf, leuchten die LEDs wie sie sollen! Code: shiftOut64(BlinkOutput); Hardwarefehler sind daher ausgeschlossen! Ich vermute einen Fehler in der Blink-Vergleich-Mühle, finde aber nix: Code: void loop() |
|||
03.02.2021, 11:57
Beitrag #8
|
|||
|
|||
RE: 64Bit Variable?
Ich weiß nicht, für was Outputs | Inputs gut sein soll aber lass Dir für die Zwischenschritte der Bearbeitung die Werte ausgeben, auch für diese Verknüpfung.
Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste