Adressen im Mikrocontroller (C Prog.)

Gast #1022929
Lesenswert?

Hallo!

Wie genau funktioniert das eigentlich mit den Adressen in den 
Mikrocontrollern? (Wir benutzen einen Atmega644).
Was zum Beispiel bedeutet genau 0x7C00?
Wenn mir ein PC Programm eine Anfangsadresse (die 2 Byte lang ist) auf 
den Mikrocontroller sendet und mir zusätzlich auch die Länge eines 
Datenpakets, welches auf den Mikrocontroller soll, in Bytes  sendet, wie 
kann ich dann bestimmen, was die letzte Adresse des Datenpakets sein 
wird?
Könnte ich einfach in C machen:
addresse + laenge ?

Oder ist das totaler Humbug?

Dankeschön
Gast #1023182
Lesenswert?

>Was zum Beispiel bedeutet genau 0x7C00?

Das ist eine Zahl in hexadezimaler Schreibweise.

>addresse + laenge ?

Ja, wobei das letzte Element der Liste bei adresse + länge - 1 steht.
Bei addresse + laenge steht schon das erste nach der Liste.
#1023204
Lesenswert?

urmel88 wrote:

> Wenn mir ein PC Programm eine Anfangsadresse (die 2 Byte lang ist) auf
> den Mikrocontroller sendet und mir zusätzlich auch die Länge eines
> Datenpakets, welches auf den Mikrocontroller soll, in Bytes  sendet, wie
> kann ich dann bestimmen, was die letzte Adresse des Datenpakets sein
> wird?

Du meinst wohl über die UART?
Dann muß der MC die Daten interpretieren, es sind alles nur Bytes.
Er wird in der Regel nicht die Daten an eine bestimmte Stelle schreiben 
und sich damit den Speicher zerschießen.
Außer es ist ein Bootloader.


Peter
Gast #1023761
Lesenswert?

hallo und dankeschön!

Ja, genau über den UART kommen die Daten.
Also das Programm sendet immer einen Byte der Daten.
Ich habe eine Funktion, die ein Wort (2 Bytes) braucht und dieses dann 
in den Speicher korrekt schreiben kann. Ich muss also 2 einzelne Bytes, 
die vom Programm gesendet werden, zusammenfügen. Wie mache ich das?
Und als Adressen kann ich dann auch einfach Integerzahlen verwenden, 
oder? Der rechnet das dann selbstständig in Hex um?
Gast #1023768
Lesenswert?

tut mir leid, ich habe noch was vergessen. Wie stelle ich eigentlich 
sicher, dass nun neue Daten im UDR0 sind, so dass ich nicht zweimal das 
gleiche aneinander hänge?
Ist es da klug den ersten Teil in einer Variable first abzuspeichern und 
dann:

while ( (first == UDR0) ) {}
?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren