Seite 1 von 1

FrequencySynth v1.1

Verfasst: Fr 16. Mär 2018, 19:17
von PIC18F2550
http://obex.parallax.com/object/783

Weiß jemand in welchen Raster die Frequenz einstellbar ist?
Ich vermute in 1Hz Schritten.

Kann das Raster noch unter 1Hz verkleinert werden?
Meine Idee ist ein nachgeschalteter Teiler. Lieber währe es mir wenn es im Propeller geschied.

Re: FrequencySynth v1.1

Verfasst: Sa 17. Mär 2018, 01:34
von yeti
----------8<-----{20180317-0034-GMT}----->8----------
PIC18F2550 hat geschrieben:Weiß jemand in welchen Raster die Frequenz einstellbar ist?
Ich vermute in 1Hz Schritten.
Die Frequenz wird in einem Integer an den Generator in `synth.spin` übergeben und dort, soweit ich sehe, nicht weiter geteilt. 1Hz ist also der kleinste darstellbare Unterschied.
PIC18F2550 hat geschrieben:Kann das Raster noch unter 1Hz verkleinert werden?
Man müsste die Werte, die in den propellerinternen Frequenzgeneratoren landen, nachverfolgen und wenn deren Differenzen groß genug sind, könnten kleinere Schrittweiten möglich werden. Aber mit diesen FRQ(A|B)-Dingern hab ich mich noch nicht intensiv genug beschäftigt.

***ein_paar_Minuten_Fahrstuhlmusik***

Statt Setzen der FRQA/B- und CTRA/B-Werte hab ich nur deren Ausgabe reingehackt:

Code: Alles auswählen

$ /opt/parallax/bin/spinsim FakeSynth.binary -b
Freq    FRQ     CNT
0       0       268435456
1       53      268435456
2       107     268435456
3       161     268435456
4       214     268435456
5       268     268435456
6       322     268435456
7       375     268435456
8       429     268435456
9       483     268435456
10      536     268435456
Es ist also Luft zwischen den Werten. Kleinere Schritte sind also denkbar, aber wie genau die dann die gewünschte Frequenz treffen ist ein anders Thema...

----------8<-----{20180317-0755-GMT}----->8----------

Ich hab nochmal Werte um 500kHz herum und gegen Ende des Bereiches beäugt...

Code: Alles auswählen

499990  26843008        268435456
499991  26843062        268435456
499992  26843116        268435456
499993  26843169        268435456
499994  26843223        268435456
499995  26843277        268435456
499996  26843330        268435456
499997  26843384        268435456
499998  26843438        268435456
499999  26843491        268435456

500000  214748364       134217728
500001  214748794       134217728
500002  214749223       134217728
500003  214749653       134217728
500004  214750082       134217728
500005  214750512       134217728
500006  214750941       134217728
500007  214751371       134217728
500008  214751800       134217728
500009  214752230       134217728

127999991       429496699       192937984
127999992       429496702       192937984
127999993       429496706       192937984
127999994       429496709       192937984
127999995       429496712       192937984
127999996       429496716       192937984
127999997       429496719       192937984
127999998       429496722       192937984
127999999       429496726       192937984
128000000       429496729       192937984
...bei den großen Werten wird die Luft zwischen ihnen schon etwas dünne.

Vergleich doch mal (z.B. per I2C) steuerbare Frequenzgeneratoren bezüglich Preis, Frequenzbereich und Auflösung mit dem Propeller. Vielleicht sind die externen Chips für solche Aufgaben sogar attraktiver...

In Beau's Code ist auch keine Frequenzkorrektur mit ab und zu mal kurzen oder längeren Pulsweiten, um im längeren Mittelwert die angestrebte Frequenz besser zu treffen. Sowas hab ich mal irgendwo als FPGA-Code gesehn, aber mir fällt die URL grad nimmer ein.

----------8<-----{Nieder mit der Sommerzeit!}----->8----------

Re: FrequencySynth v1.1

Verfasst: Sa 17. Mär 2018, 16:37
von PIC18F2550
Ich kenne keinen I2C Chip der von 1Hz bis 100Mhz durchstimmbar ist.
Was Fehlt ist ein Sinusformer. Das müsste Frequenzselektiv gesteuert werden. Was für den Prop kein Problem darstellt.

Aufbau:

FrequencySynth
LCD 2x16
Key4x4
256k Serieller EEPROM

Was mir fehlt ist ein 80Mhz Oszilator.

Re: FrequencySynth v1.1

Verfasst: So 18. Mär 2018, 12:42
von PIC18F2550
yeti Du hast recht das Raster ist kaum zu gebrauchen.

Weist Du zufällig an welcher stelle die 80Mhz vom Propeller in das Programm zur Frequenzerzeugung einfließen?
Mein Problem ist das ich einen Externen 20Mhz Generator als Taktquelle nutzen will.

http://www.cadt.de/dieter/dcf/dcfqu.htm

Re: FrequencySynth v1.1

Verfasst: So 18. Mär 2018, 13:01
von yeti
PIC18F2550 hat geschrieben:Weist Du zufällig an welcher stelle die 80Mhz vom Propeller in das Programm zur Frequenzerzeugung einfließen?
Ich denke nur bei...

Code: Alles auswählen

con
  _clkmode = xtal1+pll16x
  _clkfreq = 80_000_000
...das Verhalten von FRQA/B und CTRA/B müsst man nochmal draufhin abklopfen, womit das gespiesen wird. Die Berechnung in FrequencySynth-v1.1 bezieht sich nur auf CLKFREQ, was also nach "Quarz (oder Takteingang) mal PLL" als deren Input riecht.

Das Bild in AN001-P8X32ACounters-v2.0.pdf schaut auch nach CLKFREQ aus.

Re: FrequencySynth v1.1

Verfasst: So 13. Sep 2020, 14:02
von PIC18F2550
Mal ein paar Bilder z.B. von 10Mhz.

Hier erkennt man auch das die Betriebsspannung auf das Ausgangssignal wirkt.
Das ist besonderst in der Audiowelt zu beachten. :SCHREIEN