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...
Nur wie stelle ich das mit der Multiplikation anCode:#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; }![]()
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 ....







Zitieren

Lesezeichen