Verschiedene Frequenzen mit nur einem Timer

OP #2728549
Hi Forum,

ich würde gerne zwei unabhängig voneinander einstellbare Frequenzen 
(Rechteck) mit einem Tiny45 erzeugen.
Ich möchte dafür aber nur Timer0 verwenden.
Erste Versuche im Toggle/ctc Mode waren nicht so erfolgreich 
(Verschiedene  ocra/B Werte (dachte ich im jugendlichen Leichtsinn...)
Der Counter wird ja stets von Overflow on A zurückgesetzt :-(

Frage:
Gibt's noch einen WGM Mode, den ich übersehen habe

- oder bleibt nur der Weg über Timerinterupt einen/zwei/drei Phasenakkus 
als Zeiger in eine DDS Tabelle weiterzuzählen und die Pins  dann selbst 
(PORTB=) zu toggeln.
DDS hätte noch den netten Nebeneffekt, dass ich auch noch ein 
vorausberechnetes ein-Bit codiertes Rauschen auf einem dritten Pin mit 
ausgeben kann.
Gast
>DDS hätte noch den netten Nebeneffekt, dass ich auch noch ein
>vorausberechnetes ein-Bit codiertes Rauschen auf einem dritten Pin mit
>ausgeben kann.

Dann machs doch. Oder was hält Dich ab?
Persönliche Seite
Michael R. schrieb:
> - oder bleibt nur der Weg über Timerinterupt einen/zwei/drei Phasenakkus > als 
Zeiger in eine DDS Tabelle weiterzuzählen und die Pins  dann selbst
> (PORTB=) zu toggeln.

Rischtisch. Ein Timer kann immer nur eine einzige Frequenz gleichzeitig 
erzeugen. Aus dieser Frequenz musst Du dir dann (z.B. mittels DDS) deine 
anderen Frequenzen ableiten. Um welche Frequenzen geht es denn?


Gruß
Jonathan
OP
Die Anforderungen sind m.E. nicht besonders hoch
fmin= 4 kHz, fMax 40 kHz, Auflösung ca. 100Hz
Phasenjitter ist weitgehend egal. 10° ist sicher drin.

Genauigkeit: interner Rc Oszillator ist ausreichend.
Mit dem 8-Bit Teiler hätte ich bei 40kHz auch kaum mehr als 1kHz Steps 
hinbekommen und das wäre auch noch ok gewesen.

Werd's wohl mal mit einer 16-Bit dds probieren (meine erste :-).
Die Lookup-Tabelle lässt sich bei Rechteck ja recht gut "komprimieren" 
und bei 40 KHz bleiben reichlich cpu-Takte die man in einer ISR 
verbraten darf.
OP
yep, so ungefahr...

mal sehen ob der gcc-code schnell genug dafür ist oder ob es Handarbeit 
braucht.

Btw: wie bekomme ich das 1-Bit Rauschen hin? (alle Ausgänge digital, 
kein r/2r Netzwerk)
Längere Lookup-Tabele, klar. 256 Stützstellen sind nicht so wirklich 
berauschend.
Das Rauschen sollte natürlich auch  > 4kHz HP gefiltert sein. Also 
weisses Rauschen im Audacity an passender Grenzfrequenz HP filtern und 
das ganze dann mit Sigma/delta auf ein Bit encoden?

Das hier könnte evtl nützlich sein. 
http://www.romanblack.com/BTc_alg.htm
Hat das schon jemand versucht oder bin ich auf dem Holzweg.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.