mikrocontroller.net

Forum: Compiler & IDEs Ringbuffer aus FIFO-Artikel


Autor: Jey Bee (jeybee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Ich habe nur eine kleine Frage:
Ich versuche gerade, das Codebeispiel des ringbuffers aus diesem 
artikel:

http://www.mikrocontroller.net/articles/FIFO

zum Laufen zu bekommen. Das schreiben in den Ringbuffer läuft soweit 
gut, ich kann auch auslesen, ob der Buffer voll ist oder nicht.

Jedoch kriege ich die Daten nicht mehr aus dem Buffer raus.
Sehe ich das Falsch, oder ist die Funktion BufferOut nicht dafür 
ausgelegt?!

kann ich in meiner main nicht einfach schreiben:
data = BufferOut(0x01)  // 0x01 = Leseadresse

Was verstehe ich das falsch?



Greez Jey

Autor: Gnome (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schau Dir mal die Funktion BufferOut() genauer an.
unsigned char data;
unsigned char result;

result = BufferOut(&data)

Der Rückgabewert der Funktion sind nicht die Daten, sondern ob Dein 
Zugriff geklappt hat. Im Übergabeargument steht die Zieladresse, wohin 
Deine zu lesenden Daten hin sollen.

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das richtig sehe müsstest Du

status = BufferOut(&data);

aufrufen. Das Datum liegt dann in "data" und status liefert Dir zurueck, 
ob das Lesen geklappt hat.

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups Gnome war schneller :-)

Autor: Jey Bee (jeybee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also wenn ich das richtig verstehe:
status = BufferOut(&data);

liegt in der Variable status nacher die information, ob das geklapt hat 
oder nicht, und in data liegt dann der Wert?

Ich habe das falsch verstanden, da ich vom EEprom gewohnt war, dass man 
eine "Speicheradresse" angeben kann. Hier wird einfach immer nur der 
hinterste Wert ausgelesen, richtig?


Mfg Jey

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, so ist es

Autor: Jey Bee (jeybee)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, demfall ist jetzt alles geklärt.

Vielen Dank!

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.