Forum: Mikrocontroller und Digitale Elektronik gebrochene Schrittweite in einer Lookuptable


von Marius D. (lonestarr102)


Lesenswert?

Huhu,


ich habe eine Programm für einen Attiny44A geschrieben. Dort nutze ich 
eine 256 Byte look-up-table um eine Kurve auszugeben.

Also ich laufe die Tabelle von vorne bis hinten durch und geben die 
einzelnen Werte aus.

Nun möchte ich dies in einer andernen Geschwindigikeit tun. Erste Idee 
war es die Schritte zu erhöhen. Dies funktioniert auch sehr gut. Ich 
lese nur jeden zweiten oder dritten Wert ein. Ergo schneller.

Meine Frage ist, ob es vieleicht ein Verfahren gibt mit der ich z.B. 
jeden 1,5 oder 1,8 Wert einlesen kann.  Möchte die Schrittweite 
flexiebler einstellen können.
Bei einer Schrittweite von 1,5 stelle ich mir vor, dass er dann z.B. 
folgende Werte einließt. 1,3,4,6,7,9,10    (nur ein Beispiel weiß gerade 
nicht genau ob der Mittelwert stimmt)

In meinem Fall spielt die Verkleinerung der Schrittweite keine Rolle.

von Klaus (Gast)


Lesenswert?

Stichwort: Interpolation

von Georg G. (df2au)


Lesenswert?

Definiere dir eine Variable "Schritte-hochaufgelöst", in der du zB die 
Schritte mit Faktor 16 zählst. Ein Schritt wäre dann +16, 1.5 Schritte 
wären +24 usw. Zum Zugriff auf die Tabelle nimmst du dann diese Variable 
/ 16.
Etwas Erläuterungen zu solch einem Vorgehen findest du unter "DDS 
Phasenakkumulator".

von W.A. (Gast)


Lesenswert?

In der Computergraphik läuft das unter Bresenham-Algorithmus

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

W.A. schrieb:
> In der Computergraphik läuft das unter /Bresenham-Algorithmus/

Hihi, das war auch mein erster Gedanke :-)

von Falk B. (falk)


Lesenswert?

Siehe DDS.

von Max D. (max_d)


Lesenswert?

Je nach Implementation kannst du auch einfach öfter aus der tabelle 
lesen (den timer schneller stellen z.B.)....

von Felix A. (madifaxle)


Lesenswert?

aus DDS: NCO (numerically controlled Oscillator)

Siehe auch Beitrag von Georg G.

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.