Hallo
Gleich vorweg: Ich kenne weder das c-control noch dessen spezielle C-Variante. Deshalb kann ich mit der Funktion Timer_T0PWM() nichts anfangen. Aber das Thema reizt mich zu einer kleinen Überlegung:
Wenn der Ton mit 1kHz klingen soll und deine Tabelle für eine Periode 256 Werte besitzt, dann mußt du alle 1/1000/256 Sekunde oder nach 0,00000390625 Sekunden einen neuen Wert aus der Tabelle ausgeben. Mal angenommen, du verwendest einen 16MHz-Takt, dann wären das 62,5 Takte pro Wert. Wie soll der Timer in 62 Takten auf 254 zählen? Wenn du nur jeden zweiten Wert verwendest kommst du auf 124 Takte und das gilt jetzt ja nur für 1kHz. (Was wird eigentlich bei Tabellenwert 0 ausgegeben?)
Besser wäre wohl dieser Ansatz: http://www.google.de/search?q=R-2R-Widerstandsleiter
Top: http://www.avr-asm-tutorial.net/avr_de/avr_dac.html
Gruß
mic
Lesezeichen