ringpuffer in assembler mit pic18f2550

(Firma: JDCC) #2514531
Der Entwickler schrieb:
> Ringspeicher hat Grösse x
>
> Schreiben (sz ist der Schreibzeiger)
>
> ringspeicher[sz]=wert
> sz = sz + 1
> if sz > x sz = 0
>
> Lesen (lz ist der Lesezeiger):
>
> wert=ringspeicher[lz]
> lz = lz + 1
> if lz > x lz = 0

"ringspeicher" muß die Größe x+1 haben bzw die Bedingung um lz wieder
auf 0 zu setzen: if lz >= x.

Welche Sprache wird das ?
Gast #2514553
ich brauche den puffer für eine messung bei der ich impulse zähle. die 
gezählten impulse sollen in den ringpuffer geschrieben werden, damit ich 
einen mittelwert aus meinen impulsen bekomme. reicht das?

jan
#2514609
Joachim Drechsel schrieb:
> Der Entwickler schrieb:
>> Ringspeicher hat Grösse x
>>
>> Schreiben (sz ist der Schreibzeiger)
>>
>> ringspeicher[sz]=wert
>> sz = sz + 1
>> if sz > x sz = 0
>>
>> Lesen (lz ist der Lesezeiger):
>>
>> wert=ringspeicher[lz]
>> lz = lz + 1
>> if lz > x lz = 0
>
> "ringspeicher" muß die Größe x+1 haben bzw die Bedingung um lz wieder
> auf 0 zu setzen: if lz >= x.

Stimmt, sorry.

>
> Welche Sprache wird das ?

Eine PseudoSprache, an C angelehnt ;-)
Gast #2514646
Ich verstehe es nicht, in einigen Foren lese ich etwas von LPM und LDI 
oder auch von ZH und ZL die die Register R30/31 sein sollten aber dies 
klappt nicht. Kurz gesagt bräuchte ich nur mal ein Beispiel wie ich ein 
Ringpuffer beschreibe.

Dankeschön
#2514652
Z-Pointer Register auf r30 und r31 hört sich nach avr an... du kannst 
natürlich nicht erwarten, daß fertiger Code für avr auf dem pic läuft.
Heißt: der pic wird auch Pointer Register haben und einen leicht anderen 
Assempler Syntax. Das musst du anpassen - die Funktionsweise des avr 
Beispiels hat aber zum Glück weiterhin Gültigkeit.

P.S. Oder haben die Pics inzwischen auch so viele Register und zufällig 
auch auf r30/31 den Z-Pointer? Ist über 10 Jahtre her daß ich mal einen 
pic ausprobiert habe.
#2514658
jan schrieb:
> Ich verstehe es nicht

Dann versuche mal, den Ablauf in Worten aufzuschreiben.

jan schrieb:
> in einigen Foren lese ich etwas von LPM und LDI

Das ist der Nachteil von Assembler, er ist immer nur für eine bestimmte 
CPU, in diesem Fall AVR.
In Assembler ist es auch erstmal nötig zu wissen, wieviel Elemente und 
wie groß ist ein Element.


Peter
Gast #2514706
Hallo,

Document DS39508 von Microchip ist das Family Referenzmanual für die 
PIC18F Familie. Da sind unter memory organisation die möglichkeiten 
indirekt auf den Speicher zuzugreifen recht ausfühlich erklährt.

mfG
Michael
Gast #2529975
danke konnte mein projekt mit dem ringpuffer beschreiben. muss jetzt nur 
noch die ausgabe über eine 7segment anzeige hin bekommen dann habe ich 
es geschafft.

mfg

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.