Go Down

Topic: Konvertieren Integer in zwei Byte und umgekehrt... (Read 1 time) previous topic - next topic

Kalli

Hallo, bin noch neu hier, hab mal ein kleines Temperaturprogramm nachempfunden. Nun wollte ich die gelesenen Werte (INT) in (BYTE) umwandeln, um die Daten im EEPROM abzulegen. Dann auch wieder auslesen und in (INT) umwandeln. Ich hatte mal beim blättern im Forum irgendwas gelesen von Highbyte und Lowbyte.
Geht aber alles nicht. Bestimmt kann mir jemand helfen.

Arduino Duemilanova Atmega328
Version 0018
WIN7 64 BIT

Danke
Kalli

Mirko

#1
Jul 11, 2010, 04:55 pm Last Edit: Jul 11, 2010, 07:18 pm by x2mirko Reason: 1
Schau dir mal Bitshifting an (In der Referenz unter Bitwise Operatorss). Damit gehts eigentlich relativ einfach.

An das höherwertige Byte kommst du, indem du deinen integer um 8 Stellen nach rechts shiftest und das Ergebnis in den Typ Byte konvertierst. Das niedrigerwertige Byte bekommst du, indem du den integer mit 0x00FF bitweise verundest (damit werden praktisch die acht höherwertigen Bits auf Null gesetzt). Das Ergebnis kannst du dann wieder in Byte konvertieren und direkt in deine zweite Bytevariable reinschreiben. Um das ganze zurückzukonvertieren schnappst du dir das höherwertige Byte, shiftest es wieder um 8 Stellen nach links und addierst es zu dem niedrigerwertigen Byte.

Also etwa so:

// Unser Integerwert
int toConvert = 12521;

// firstByte = höherwertig, secondByte = niedrigerwertig
byte firstByte = byte(toConvert >> 8);
byte secondByte = byte(toConvert & 0x00FF);

// und wieder zurück:
int converted = int(firstByte << 8) + int(secondByte);

Udo Klein

Die Arduin EEProm Library ist ziemlich schwach. Sie basiert auf der AVR-libc. Die libc kann sehr viel mehr als die Arduino Library --> besser gleich die richtige Library nehmen und dann geht alles plötzlich viel besser. Insbesondere werden 16bit Werte direkt unterstützt :)

http://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html

Gruß, Udo
Check out my experiments http://blog.blinkenlight.net

Kalli

Hallo Mirco, Hallo Udo,
recht herzlichen Dank für die schnelle Hilfe. Der Syntax von Mirco hat sicher funktioniert. Die Hinweise von Udo werde ich mir beim nächsten Fall ansehen. Ansonsten bin ich mit dem kleinen Spielzeug ganz zufrieden.

Grüße von Kalli

Go Up