ich habe ein kleines Problem, beziehungsweise ich weiß nicht recht weiter und finde leider auch nirgendwo passende Antworten zu meinem Problem.
Ich will die Zeit ab einem gewissen Datum hochzählen im Sekundentakt und zwar in Binärer Form. Beginnend bei 0 bis 604799sec (0000 0000 0000 0000 0000 - 1001 0011 1010 0111 1111).
Das Problem ist Arduino kann binär bloß max. 8Bit. Allerdings brauche ich um bis 604799sec hochzuzählen 20bit. Weiß irgendjemand ob das überhaupt mit Arduino funktioniert ?
Es gäbe zwar die Möglichkeit die Sekunden auch Dezimal hochzuzählen allerdings muss ich die Dezimalzahlen dann alle wieder in Binäre Form umwandeln und da bin ich mit meinem Latein am Ende weil ich wenig Erfahrung bisher habe.
Die Codes die ich bisher zur Umwandlung von Dezimal in Binär gefunden hab helfen mir bei dem Problem auch wenig weiter. Entweder sie spucken gar nix aus oder Hieroglyphen aber keine Binärzahl.
Vielleicht hat jemand hier, eine Lösung für das Problem.
sihu:
Es gäbe zwar die Möglichkeit die Sekunden auch Dezimal hochzuzählen allerdings muss ich die Dezimalzahlen dann alle wieder in Binäre Form umwandeln und da bin ich mit meinem Latein am Ende weil ich wenig Erfahrung bisher habe.
Danke für die Antworten haben mich aufjedenfall schon ein bisschen weitergebracht
@Tommy56 noch eine Frage zu deinem Code. Die Binärzahlen werden in 4-bit,8-bit,16-bit,32-bit und 64-bit ausgegeben. Ist es auch möglich dass ich sie in 20-bit ausgeben lassen kann ?
print(..., BIN) gibt keine führenden Nullen aus. Wenn du das willst, also in jedem Fall 20 bit anzeigen, musst du entweder
die richtige Anzahl '0' - Zeichen davorschreiben oder
statt print(..., BIN) etwas anderes machen. Dann könntest du auch gleich das Ganze lesbarer ausgeben (zwanzigstellige Zahlen sind (für mich) nicht lesbar)
Habe ich den Sinn dieses Thread überlesen?
Klar: Zahl binär mit 20 Bit - bekämen wir schon hin denk
Aber: WOFÜR??
Die Aufteilung in 4er-Gruppen riecht förmlich nach BCD - wobei Da selten Nibbles über 9 vorkommen.
Auch hätten wir dann nur 5 Ziffern.
Irgend etwas muß Da mit den 20 Bit zusammen hängen, was ich noch nicht gefressen habe.
Wenn's nur der Zahlenbereich ist, Der mindestens gebraucht wird - Das geht genau so gut mit 32 Bit - und Die kann der Arduino 'von Haus aus' - dann sind eben vorne ein paar unnötige Nullen, Die wir einfach ignorieren - fertig.
postmaster-ino:
Die Aufteilung in 4er-Gruppen riecht förmlich nach BCD
Nö, das ist einfach besser lesbar, als 32/64 Bit hintereinander. Man könnte meine Lib dahingehend anpassen, dass bei 32 Bit die vorderen Bit einfach nicht ausgegeben werden, wenn es denn unbedingt 20 sein sollen.
postmaster-ino:
Wenn's nur der Zahlenbereich ist, Der mindestens gebraucht wird - Das geht genau so gut mit 32 Bit - und Die kann der Arduino 'von Haus aus' - dann sind eben vorne ein paar unnötige Nullen, Die wir einfach ignorieren - fertig.
"Von Haus aus" gibt print keine führenden Nullen aus.
Führende Nullen macht print (zumindest bei mir) eh nicht - dafür habe ich eigene Funktionen.
Mir ging Es ‘nur’ darum, daß auf den 20 Bit gepocht wird, wo’s dermaßen wurscht ist, wie viele Bits ‘links von den 20’ einfach nicht benutzt werden - eben ignoriert.
Ich muß ja auf Nichts über 0x7FF 0xFFFFF reagieren - und wenn ich die Bits oberhalb nicht bespaße, steht Da auch nie was Anderes, als die zuvor initialisierte Null.
Wenn doch - ein wert & 0x7FF 0xFFFFF löscht die Bits über 20 zuverlässug.
MfG
Edit
Wir in #12 richtig bemerkt wurde - besteht jede vollständige HEX-Ziffer nur auf 4 Bit (FF = 255 = 8Bit).
Somit sind meine 7FF keine 20, sondern 4+4+3=11 Bit … passiert mir irgendwie öfter, daß ich das Nibble auf 8 Bit bringe …
Danke für die Korrektur!