Forum: Mikrocontroller und Digitale Elektronik Variablenzuweisung durch Register


von Großes Fragezeichen (Gast)


Lesenswert?

Hallo allerseits,

es geht um eine Datenübertragung. Nachdem ein Frame empfangen wurde, 
steht laut Datenblatt die Länge des Frames im Register TST_RX_LENGTH.

Nun müsste eine Funktion her, die einer Variablen den dezimalen Wert des 
Registerinhaltes überträgt.

Angenommen der Frame ist 9 Byte lang, das Register TST_RX_LENGTH müsste 
mMn. also wie folgt aussehen: 00001001

Wenn ich nun in einer C Funktion nacheinander die Bytes auslesen möchte, 
so muss ich wohl eine for-Schleife implementieren.
Diese soll also von "0" bis "Ende" laufen.

Kann ich die Variable "Ende" durch folgende Funktion auf den dezimalen 
Wert 9 setzen?

uint8_t Read_TST_Frame_Lenght_Register()
{
uint8_t Framelange = 0;
Framelange = TST_RX_LENGTH;
return Framelange;
}

Aufruf dann über:
Ende=READ_TST_Frame_Length();

funktioniert das???

mfg

von Gemein (Gast)


Lesenswert?

Es geht sicherlich noch wesentlich komplizierter.
Wie das geht steht in einem C-Buch.

von Großes Fragezeichen (Gast)


Lesenswert?

also könnte man auch einfach schreiben:

uint8_t lange = TST_RX_LENGTH ; ???

von Ahnungsloser (Gast)


Lesenswert?

Gut das es weltweit nur einen einzigen µP gibt!!!

von Großes Fragezeichen (Gast)


Lesenswert?

Der verwendete uP spielt doch für die Beantwortung dieser Frage keine 
Rolle

von Gemein (Gast)


Lesenswert?

Ganz ehrlich: Das ist mir zu blöd. Lerne erstmal die Grundlagen. 
Darunter ist auch Deine Frage. Oder probiere es einfach aus. Da machst 
Du wenigstens "etwas" selbst.
Erkenntniskonsum ist eine Utopie, die seit dem Nürnberger Trichter den 
Ruch des lächerlichen behalten hat.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Großes Fragezeichen schrieb:
> Angenommen der Frame ist 9 Byte lang, das Register TST_RX_LENGTH müsste
> mMn. also wie folgt aussehen: 00001001
Das ist für deine Aufgabe vollkommen uninteressant.
Wenn du dir solche Knoten ins Hirn machst, solltest du dir unbedingt die 
Grundlagen der Zahlendarstellungen nochmal ansehen. Logisch ist einem 
"üblichen" Rechner die Binärdarstellung geläufig, und er hat ein 
Bitmuster 00001001 im Register stehen. Für Menschen ist aber die Zahl 9, 
die genau den selben Wert darstellt wesentlich flüssiger zu lesen.

Großes Fragezeichen schrieb:
> also könnte man auch einfach schreiben:
> uint8_t lange = TST_RX_LENGTH ; ???
Ja, ganz ohne Funktionsaufruf...

Großes Fragezeichen schrieb:
> Der verwendete uP spielt doch für die Beantwortung dieser Frage keine
> Rolle
Oh doch, denn evtl ist TST_RX_LENGTH ein Zeiger auf ein Register und 
nicht die Adresse des Registers...

von Ahnungsloser (Gast)


Lesenswert?

Großes Fragezeichen schrieb:
> Der verwendete uP spielt doch für die Beantwortung dieser Frage keine
> Rolle

OK, dann halte ich es wie Gemein (Gast). Hättest du den Käfer genannt 
oder gleich das Datenblatt verknüpft gäbe es jetzt wohlmöglich ein 
brauchbares "piece of code" in den Antworten.

von Ahnungsloser (Gast)


Lesenswert?

> Großes Fragezeichen schrieb:
>> Der verwendete uP spielt doch für die Beantwortung dieser Frage keine
>> Rolle
> Oh doch, denn evtl ist TST_RX_LENGTH ein Zeiger auf ein Register und
> nicht die Adresse des Registers...
Oder etwas ganz anderes. Auf den ersten Blick hätte ich ja 
Präprozessoranweisung gesagt, für mich ist TST die Abkürzung für Test.

von Großes Fragezeichen (Gast)


Lesenswert?

also danke denjenigen die doch noch geantwortet haben.

mitlerweile hab ich mir die Frage selber beantwortet.

Und ja, es handelt sich um Grundlagen in C, und ja, deshalb habe ich 
meinen Code eben selber entwickelt, damit diejenigen, die mehr Routine 
im Programmieren haben ihre Antwort auf ein schlichtes [Ja] oder [Nein, 
weil] hätten reduzieren können.

von Gemein (Gast)


Lesenswert?

>Und ja, es handelt sich um Grundlagen in C, und ja, deshalb habe ich
>meinen Code eben selber entwickelt, damit diejenigen, die mehr Routine
>im Programmieren haben ihre Antwort auf ein schlichtes [Ja] oder [Nein,
>weil] hätten reduzieren können.

Gut zu wissen. Ich dachte schon es hätte am Wetter gelegen.

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.