PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Das Gegenteil von makeint



teslanikola
02.04.2005, 00:00
Hallo,
hab eine Frage also ich möcht ein Word in ein I²C EEprom schreiben, muss ich dazu das word in 2 Bytes zerlegen, wenn ja wie , giebt es einen Befehl der ein Word in 2 Bytes zerlegt ( also das gegenstück zu makeint ). Oder kann ich einfach das Word über den I²C jagen, zerlegt das EEprom das Word automatisch in 2 Bytes ( wird das dann so gespeichert: 1.Byte eine Addresse , 2. Byte noch einen Addresse oder 1.Byte und 2.Byte in eine Addresse ).

Marco78
02.04.2005, 00:53
Im internen EEPROM kannst du das Word z.B. in 10 schreiben und dann belegt es 10 und 11.
Wenn du ein Byte von Adresse 10 liest, hast du den einen Wert. In 1 den anderen. Einfacher ist es aber, ein Word aus 10 zu lesen. Dann hast du den vollen Wert.

Dim a as Word
a=20123
writeeeprom a,10
a=0
readeeprom a,10
print a 'ergibt 20123

Ob's an BASCOM liegt oder Atmel, weiss ich nicht.

Ich würd sagen, riskier es doch einfach mal so über IIC. Kaputt gehen kann der EEPROM ja nicht dadurch (denke ich jedenfalls).

Sollte das nicht gehen, such mal in der Hilfe nach Overlay. Damit werden größere Werte auch in Bytes zerlegt und an der Stelle angelegt, was du angegeben hast.
Genutzt habe ich das noch nicht, weil es bis jetzt mit der ersten Methode ging.

Wie Overlay genau funktioniert und es das auch über TWI geht kann ich dir leider nicht sagen.

Und ich denke mal, der Umweg, erst ins interne EEPROM schreiben, die Bytes auslesen und dann über IIC verschicken entfällt. Sonst bräuchtest du ja kein externen. Außerdem sind die Schreibzyklen ja auch begrenzter als bei externen.

PicNick
02.04.2005, 10:40
die sache mit makeint

intzahl = makeint(lsb, msb)

lsb = low(intzahl)
msb = high(intzahl)

teslanikola
02.04.2005, 12:10
danke, haus mal über den I²C mein EEPROM geht dabei hoffentlich nicht flöten. Danke für eure Hilfe, aber was mich wundert mit I²C EEPROMS wird häufiger gearbeitet, wieso speichert keiner Words???

Marco78
02.04.2005, 12:29
Ich brauchte bis jetzt noch keinen externen EEPROM. Und wenn ich Words speichern wollen würde, würd ich es so machen wie beschrieben.

Aber das von PikNick habe ich noch nicht verstanden. Das ist doch das zusammenführen von 2 Bytes zum Word, oder nicht? Das Problem war aber doch, das aufteilen in 2 Bytes :?:

PicNick
02.04.2005, 14:40
Ich wollt den Zusammenhang mit makeint darstellen.
Egal, noch mal:

Ich hab'n Word (2 Bytes)

Willst du das erste Byte davon, sagst du
Byte_1 = LOW(word)
und das andere
Byte_2 = HIGH(word)

Marco78
02.04.2005, 15:22
Achso, dann habe ich dich falsch verstanden. Ich dachte, damit kann man das Word auch aufteilen und nicht nur zusammenführen.
Weil teslanikola ja wusste, das makeint das bewirkt. Hat michnur etwas verwirrt.

teslanikola
02.04.2005, 23:01
hab ein Word übern I²C geschickt und dann ausgelesen, alles was ich sagen kann, das Word wurde entweder aufgeteilt oder nicht gespeichert auf jeden Fall kamm nicht das raus was reinging , genaueres muss ich aber noch feststellen!

Marco78
02.04.2005, 23:08
Sind denn Daten rein gegangen? Ich warte malab, was deine Nachforschungen bringen. Aufgeteilt wäre ja logisch bzw das einzigst mögliche. Ein Byte kann ja kein Word aufnehmen. (Ich weiss, das ist dir auch klar. Sonst hättest du die Frage nicht gestellt)
Oder du musst Overlay anwenden. Damit sollte es gehen.

PicNick
03.04.2005, 08:15
Um mehrere Daten, womöglich unterschiedlicher Länge, zu transferieren, ist auf jeden die "overlay" variante zu empfehlen. Sonst hast du bei jedem Datentyp eine andere Methode rein-/raus. Bei Singles (4 Byte) wird das außerdem eh pervers.
Dies "EEPROM" restriktion mit int's heißt ja im Grunde nix, als daß du nur eine gerade Zahl von Bytes speichern und lesen kannst (mit aufrunden).

teslanikola
03.04.2005, 10:22
Äh, das mir jetzt schon en bissele Peinlich **schäm**, wie geht das mit der Overlay Variante??? Kenne mich in Bascom en bissele aus aber von Overlay hab ich keine Ahnung

teslanikola
03.04.2005, 10:36
Aus dem Forschungsbericht:
" Das EEProm speichert nur das 2. Byte, das erste verschwindet ins Nirvana.Fazit erst teilen, dann speichern, dann lesen, dann zusammensetzten."