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.
Gast
#4357232
Stichwort: Interpolation
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".
Gast
#4357260
In der Computergraphik läuft das unter Bresenham-Algorithmus
W.A. schrieb: > In der Computergraphik läuft das unter /Bresenham-Algorithmus/ Hihi, das war auch mein erster Gedanke :-)
Siehe DDS.
Je nach Implementation kannst du auch einfach öfter aus der tabelle lesen (den timer schneller stellen z.B.)....
aus DDS: NCO (numerically controlled Oscillator) Siehe auch Beitrag von Georg G.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.