Hallo,

Ich glaube, ich bin doch zu blöd dafür

Habe seit Gestern folgendes Programm stehen ( Heute mal aus Spaß ohne ISR) womit ich mir einen schönen Sinus mit knapp 900Hz erzeuge...
Code:
#include<avr/io.h>




int8_t sinwerte[]= {64,76,88,99,109,117,123,126,
		    128,126,123,117,109,99,88,76,
		    64,51,39,28,19,11,5,1,
		    0,1,5,11,19,28,39,51
};


int main(void) {
  uint8_t wert,x=0;
  
  TCCR2 = (1<<WGM20)|(1<<COM21)|(1<<CS20);
  OCR2 = 0;
  /*Timer 0 im Overflowinterrupt*/
  //  TIMSK = (1<<TOIE2);
  DDRB = (1<<PB3);
  PORTB = 0;
  
    while (1) {
      wert = sinwerte[x];
      while(!(TIFR & 1<<TOV2));
      OCR2 = wert;
      TIFR |=(1<<TOV2); 
      x++;
      if (x == 33)
	x = 0;
    }
  return 0;
}
Nur wie stelle ich das mit der Multiplikation an
Soll man z.B wie der Sprinter schon sagte 2 Zeiger durch die Tabelle durcheiern lassen und bei jedem Überlauf von Timer 2 dann auslesen multiplizieren, schieben und OCR2 damit füttern ?
dazu bräuchte ich wieder einen weiteren Takt, der dann die Zeiger bewegt oder besser gesagt 2 verschiede Takte, weil sie ja unterschiedlich laufen müssen.
Das heißt dann wieder den gemeinsamen Nenner suchen, 2. Timer damit laufen lassen usw. usw.
Ist das so gedacht ?
Ich versuche es jetzt so, vielleicht bin ich wieder auf dem Holzweg...
Gruß Sebastian

EDIT:
Naja, ich glabe ich brauche doch keinen 2. Takt, ich könnte den Timer 2 benutzen ....