Forum: Mikrocontroller und Digitale Elektronik 16 Bit Adresse für EEProm


von Andreas R. (blackpuma)


Lesenswert?

Guten Abend!

Meine Schaltung funktioniert soweit. Jetzt habe ich das Problem das ich 
ein EEProm habe bei dem ich eine High und eine Low Adresse benötige. Ich 
nehme ein unsigned int und addiere bei jedem Durchlauf 1.

1
wert++;

Wie spalte ich nun diesen Wert in 2 8 Bit Adressen auf?

Ach fast vergessen: C18 und PIC18F


Danke schon mal für eure Hilfe!
Andreas

von holger (Gast)


Lesenswert?

>Wie spalte ich nun diesen Wert in 2 8 Bit Adressen auf?

Du spaltest die 16Bit Adresse in zwei
unsigned char Werte auf.
Das geht z.B. mit schieben (>>8) usw. Einfach mal ins Handbuch
deines C Compilers schauen.

von crazy horse (Gast)


Lesenswert?

oder mit einer union, bester und schnellster Weg.

von Jochen M. (taschenbuch)


Lesenswert?

Ohne den Compiler zu kennen (scheint ein Geheimnis zu sein) ist schieben 
aber so ziemlich die schlechteste Lösung, jedenfalls von Timing her.

Wenn der Compiler Befehle dafür hat sind bessere Ansätze:
- oberes byte weg-ANDEN, danach byte-swap (mit einer Kopie) und nochmal.
- Befehle nutzen, die direkt das lobyte/hibyte zurückgeben.

Jochen Müller

von morph (Gast)


Lesenswert?

C18 ist der compiler

also ich nenn das kein geheimnis.

da dir der name nicht ins auge gesprungen ist, nehm ich an du kennst ihn 
nicht. der C18 basiert am gcc, verhält sich also brav nach ansi.

von Jochen M. (taschenbuch)


Lesenswert?

>>C18 ist der compiler

Stimmt, kannte ich nicht.
Also, wenn er ANSI Standard hat, dann ist ganz klar die Lösung über eine 
UNION das Beste, wurde bereits gesagt. Die kostet keinerlei Rechenzeit 
für eine Trennung der Bytes.

Jochen Müller

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.