Hallo zusammen! Ich möchte mit meinem ATtiny13 mittels PWM Töne/Sinus erzeugen. Damit ich das Rad nicht komplett neu erfinde habe ich gegoogelt und das hier: http://www.avr-asm-download.de/praesentation/Teil_8_Beispiel_11.pdf ausprobiert. Funktioniert, Sinus mit 1,7kHz. Nun habe ich das Ganze versucht in C zu portieren. Im Prinzip funktioniert es, aber der Sinus hat dann 1,1kHz. Wie kann man sich das erklären? Hab ich nen Denkfehler begangen? CLKPR = (1<<CLKPCE); CLKPR = 0x00; CLKPR = 0; OCR0A = 171; OCR0B = (st[p]); // in "st" steht der Sinuswert, p ist der Index p = 1; TCCR0A = (1<<COM0B1)|(1<<WGM01)|(1<<WGM00); TCCR0B = (1<<CS00); TIMSK0 = (1<<TOIE0); sei(); Die zweite Schwierigkeit, schreibe ich mein Sinus nicht is RAM sondern ins Flash, dann ist es kein Sinus mehr. Ist der Lesezugriff aus dem Flash zu langsam? const char st[32] PROGMEM = {94 ... }; OCR0B = pgm_read_byte (st[p]); Und weil das noch nicht genug Probleme sind, macht mir der eigentliche Ablauf zu schaffen. Aus dem pdf oben folgt daß OCR0A = CPU-Frequenz/Abtastrate/Zielfrequenz ist. Wenn ich nun 2 verschiedene Frequenzen (nacheinander) ausgeben möchte, dann müßte ich auch 2 verschiedene Wertearrays haben. Zumindest sehr aufwendig, wie stelle ich es an, wenn ich z.B. den Sinus zwischen 1kHz und 2kHz in 100er Schritten ändern will? Danke.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.