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 ....
Lesezeichen