Forum: Mikrocontroller und Digitale Elektronik EEPROM Auszug verstehen


von Unitled (Gast)


Lesenswert?

1
:100000008602D901FFFFFFFFFFFFFFFFFFFFFFFF9A
2
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
3
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
4
:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
5
:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
6
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
7
:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
8
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
9
:10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
10
:10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
11
:1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
12
:1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
13
:1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
14
:1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
15
:1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
16
:1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
17
:10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
18
:10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
19
:10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
20
:10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
21
:10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
22
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
23
:10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
24
:10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
25
:10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
26
:10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
27
:1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
28
:1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
29
:1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
30
:1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
31
:1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
32
:1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
33
:00000001FF

Das ist der EEPROM Auszug eines MEGA16 in dem 2 16bit Variablen stehen. 
Aber wie interpretiere ich diese Werte?
Was heißt:

8602D901

auf Dezimal?

Vielen Dank
Unitled

von Maschinenbauer (Gast)


Lesenswert?

34306

55553

von Stefan E. (sternst)


Lesenswert?

Maschinenbauer schrieb:
> 34306
>
> 55553

Nein, es sind 646 und 473.
(Little Endian!)

von Maschinenbauer (Gast)


Lesenswert?

Hä?

13*16^3+9*16^2+1*16^0

Ich weiss ja nicht, was da noch für ein Zahlenformat hintersteckt, aber 
so rechne isch hex in dez um.

Irgendwas was ich wissen müsste (bin ja Maschinenbauer, kein 
Elektroniker)

von Tubie (Gast)


Lesenswert?

Dazu müßte man jetzt wissen, wie das EEProm beschrieben wurde. Hierbei 
gibt es 2 Schreibweisen:

1. Wert
in Hex:
$8602 oder $0286

in Dezimal:
34306 oder 646

2. Wert
in Hex:
$D901 oder $01D9

in Dezimal:
55553 oder 473

Gruß,
Tubie

von Maschinenbauer (Gast)


Lesenswert?

Ah, wieder was gelernt!

von Stefan E. (sternst)


Lesenswert?

Die Werte sind "Little-Endian" gespeichert. (*)
Die beiden Hex-Werte sind daher 0x0286 und 0x01D9.

(*) Nicht zwangsläufig, aber zumindest aller Wahrscheinlichkeit nach.

von Unitled (Gast)


Lesenswert?

Ok ihr konntet es nicht riechen, aber das sind ADC-Werte. Und da das ja 
ein 10Bit ADC ist, kann das doch gar nicht was höheres als 1024 sein 
oder?

von Tubie (Gast)


Lesenswert?

Wenn diese Werte wirklich nur 10 Bit haben, dann ja. Wenn sie wegen 
irgendwas auch immer vorher noch umgerechnet wurden, ggf. sogar negative 
Zahlen darstellen, dann nein.

Gruß,
Tubie

von Unitled (Gast)


Lesenswert?

1
ADCSRA |= (1<<ADSC);                           //ADC-Messung starten
2
_delay_ms(5);
3
Messwert=ADCW;                                 
4
eeprom_write_word(&Eiswasserwert, Messwert);  //Messwert in EEPROM schreiben

Die beiden Variablen sind die Fixpunkte eines Thermometers. Oben steht 
wie ich den ADC-Wert in das EEPROM schreibe.

Vielen Dank
Unitled

von Lukas R. (Gast)


Lesenswert?

Hab damit schon gearbeitet. Die letzten zwei Ziffern sind die 
Checksumme. Allses was FF ist ist unbeschrieben und die ersten Acht 
beschreiben einfach nur die Stelle des EEPROM's also ist das einzige was 
dich interesiert

86 02 D9 01

Und bitte da hast du deinen Wert

Lukas

von Unitled (Gast)


Lesenswert?

Danke euch allen! Klappt nun alles.

von Lukas R. (Gast)


Lesenswert?

sry vergessen moment
wurde bei mir so gerechnet

86: 134
02: 2
D9: 217
01: 1

Kann mich nicht mehr genau erinner aber ich glaub addieren und du hast 
dein Wert gegenüber deinem Vreff.

Somit: 354 von 1024

Lukas

von Tubie (Gast)


Lesenswert?

irgendwie Sinnlos das ganze. Ich bin kein Basic Programmierer aber die 
Routine:

eeprom_write_word(&Eiswasserwert, Messwert)

sagt doch nichts anderes als an Adresse von "Eiswasserwert" den 16Bit 
Wert(Word) der Variablen "Messwert" zu schreiben. Warum sollte die 
Routine nun 4 Bytes für ein Word verwenden, die dann zusammen zu 
addieren sind??? Das muß hier mal einer erklären.


Gruß,
Tubie

von spess53 (Gast)


Lesenswert?

Hi

>Das muß hier mal einer erklären.

Braucht keiner erklären, weil es Unsinn ist.

>sagt doch nichts anderes als an Adresse von "Eiswasserwert" den 16Bit

Richtig.

MfG Spess

von Unitled (Gast)


Lesenswert?

achja das ist übrigens kein basic, sondern c. ;)

von Tubie (Gast)


Lesenswert?

ok, ich komme aus der ASM Ecke und dachte bei dieser Write Routine an 
ein fertiges Basic Paket. ;) - Sorry

Gruß,
Tubie

von spess53 (Gast)


Lesenswert?

Hi

>ok, ich komme aus der ASM Ecke...

Ich auch.

>und dachte bei dieser Write Routine an ein fertiges Basic Paket. ;) - Sorry

Das würde auch nichts anderes machen, als einen Wert an einer bestimmten 
Adresse speichern. Vergiss die Aussage von Lucas.

von Lukas R. (Gast)


Lesenswert?

Hab mich vertan das war was anderes da gings um Definitionen sryvergiss 
meine Aussage

Lukas

von spess53 (Gast)


Lesenswert?

Hi

>Hab mich vertan das war was anderes da gings um Definitionen sryvergiss
>meine Aussage

No Problem.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.