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.
Michael R. schrieb: > ich würde gerne zwei unabhängig voneinander einstellbare Frequenzen > (Rechteck) mit einem Tiny45 erzeugen. Und um was für Frequenzen geht es? Wie hoch darf der Jitter sein?
>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?
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
Michael R. schrieb: > ich würde gerne zwei unabhängig voneinander einstellbare Frequenzen > (Rechteck) mit einem Tiny45 erzeugen. Dann spezifizier erstmal die Anforderungen (max, min, Auflösung, Genauigkeit), sonst wird das nix. Zum Lösen einer Aufgabe gehört zu allererst die Spezifikation. Peter
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.
Michael R. schrieb: > Die Lookup-Tabelle lässt sich bei Rechteck ja recht gut "komprimieren" Stimmt, da sollte eine Vergleichsoperation ausreichen ;-)
http://www.myplace.nu/avr/minidds/index.htm Das ganze in der Software doppelt, verringert zwar die Abtastrate um Faktor zwei, für 40 kHz Sinus reicht es aber noch locker.
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.
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.