mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variablenzuweisung durch Register


Autor: Großes Fragezeichen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gemein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht sicherlich noch wesentlich komplizierter.
Wie das geht steht in einem C-Buch.

Autor: Großes Fragezeichen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also könnte man auch einfach schreiben:

uint8_t lange = TST_RX_LENGTH ; ???

Autor: Ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut das es weltweit nur einen einzigen µP gibt!!!

Autor: Großes Fragezeichen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der verwendete uP spielt doch für die Beantwortung dieser Frage keine 
Rolle

Autor: Gemein (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ahnungsloser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Großes Fragezeichen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gemein (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.