mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ringbufferproblem bei PIC18F2620


Autor: Monika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich benötige in einem Programm für einen PIC18F2620 einen Ringbuffer,
in den mehrere Daten eingelesen und dann nacheinander
über die serielle Schnittstelle ausgegeben werden sollen. Mit dem
Timing und dem Ansprechen der USART habe ich an sich keine Probleme.
ich komme nur irgendwie nicht so ganz mit dem Ringbuffer zurecht, da
ich ja über Zeiger arbeiten muss und mich dabei nicht besonders gut
auskenne.

hat vielleicht jemand von euch schon mal einen ähnlichen Programmteil
geschrieben?

Danke für eure Hilfe
mfg

Autor: Rainer Spitzhirn (rainersp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Zeiger ist für einen Ringpuffer overkill. Es reicht bereits ein Feld
F mit einer festen Größe, die am besten 2^n ist, und zwei Zähler für die
Lese- (RP) und Schreibposition (WP).

Wenn der Puffer leer ist gilt: RP = WP.
Wenn der Puffer Inhalt hat gilt: RP!=WP.

Vorbedingung Lesen: RP!=WP
Vorgang beim Lesen: DATA = F[RP]; RP = (RP+1) & (2^n - 1)

Vorbedingung Schreiben: RP != (WP+1)&(2^n -1)
Vorgang beim Schreiben: F[WP] = DATA; WP = (WP+1) & (2^n - 1)

Das wars.

Gruß,Rainer

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.