Forum: Compiler & IDEs Ringbuffer aus FIFO-Artikel


von Jey B. (jeybee)


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:
1
data = BufferOut(0x01)  // 0x01 = Leseadresse

Was verstehe ich das falsch?



Greez Jey

von Gnome (Gast)


Lesenswert?

Dann schau Dir mal die Funktion BufferOut() genauer an.
1
unsigned char data;
2
unsigned char result;
3
4
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.

von NurEinGast (Gast)


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.

von NurEinGast (Gast)


Lesenswert?

ups Gnome war schneller :-)

von Jey B. (jeybee)


Lesenswert?

also wenn ich das richtig verstehe:
1
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

von NurEinGast (Gast)


Lesenswert?

Ja, so ist es

von Jey B. (jeybee)


Lesenswert?

Okay, demfall ist jetzt alles geklärt.

Vielen Dank!

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.