ringpuffer in assembler mit pic18f2550

(Firma: JDCC) #2514531
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren