Rechteck zwischen 900kHz.1,1Mhz mit 1khz Schrittweite

Gast #2401256
Lesenswert?

Hallo,

ich sitze jetzt schon seit Stunden dran, komme aber nicht viel weiter.

Für Messzwecke brauche ich einen Frequenzgenerator für Frequenzen 
zwischen 900khz und 1,1mhz (ideal), mit einer Schrittweite von 1khz oder 
weniger (auch ideal).

Abweichungen wären Möglich (aber nicht schön...) bis +80khz in der 
unteren (980khz) und -50khz (1,05mhz) in der oberen Frequenz, nur die 
Schrittweite sollte bei 1khz oder weniger bleiben.

Controller ist mega644@20mhz.

Leider kam ich jetzt nicht allzuweit, hier mal mein Code bisher:
1
DDRD |= (1<<PD5);
2
TCCR1A |=(1<<COM1A0);// OC1A toggle on compare match
3
TCCR1B |=(1<<WGM12); // CTC mode 4
4
TCCR1B |=(1<<CS10);

Mit OCR1A =>
0x07 komm ich auf 1,24977Mhz (laut Oszi),
0x08 = 1,11091Mhz,
0x09 = 999,815Khz,
0x0a = 908,922Khz.

Für mich zwar schonmal toll zum Ausprobieren, aber bringt mich nicht 
sehr viel weiter, da viel zu Große Schritte.

Auf einen DDS-Chip solls nicht rauslaufen, da die Hardware schon fertig 
ist, und das jetzt nachträglich in Software dazu soll. Der Quarz am 
Controller könnte noch getauscht werden.

Vielleicht hab ich da ja auch einen ganz falschen Ansatz. Auf jeden Fall 
hoffe ich dass ich hier Hilfe finde!
Gast #2401272
Lesenswert?

>Auf einen DDS-Chip solls nicht rauslaufen, da die Hardware schon fertig
>ist, und das jetzt nachträglich in Software dazu soll. Der Quarz am
>Controller könnte noch getauscht werden.

Super voraussblickendes Design! Zuerst die HW hinwursteln und erst 
nachher überlegen, was man braucht!

>Auf einen DDS-Chip solls nicht rauslaufen,
Ich würde aber trotzem so einen nehmen...
Gast #2401285
Lesenswert?

>Super voraussblickendes Design! Zuerst die HW hinwursteln und erst
>nachher überlegen, was man braucht!


FULL ACK!

Ich hab hier noch eine kleine Platine, da ist nur ein uC drauf, der eine 
blaue LED blinken lässt. Ich wollte jetzt das Blinkrogramm so anpassen, 
dass ich damit auch Wäschewaschen kann. Kann mir jemand helfen?

Achja, die Hardware sollte so bleiben, höchstens die Farbe der LED kann 
noch getauscht werden..
Gast #2401289
Lesenswert?

crash schrieb:
> Für Messzwecke brauche ich einen Frequenzgenerator für Frequenzen
> zwischen 900khz und 1,1mhz (ideal), mit einer Schrittweite von 1khz oder
> weniger (auch ideal).

Falls du MHz (Mega-) und nicht mHz (Milli) meinst, rechne doch einfach 
mal aus, wieviele Prozessortakte dein Ausgangssignal z.B. bei 1000 kHz 
lang ist und wieviele bei 1001 kHz. Noch Fragen?
Gast #2401358
Lesenswert?

Peter schrieb:
> Super voraussblickendes Design! Zuerst die HW hinwursteln und erst
> nachher überlegen, was man braucht!

Na toll, immer erstmal ein blödes Kommentar. Ich will dein blödes 
Gesicht sehen, wenn du deine Blinke-LED in die Hand gedrückt bekommst 
und es heisst, "mach ne Waschmaschine draus, nachm Feiertag muss es 
laufen!".

>Falls du MHz (Mega-) und nicht mHz (Milli) meinst, rechne doch einfach
>mal aus, wieviele Prozessortakte dein Ausgangssignal z.B. bei 1000 kHz
>lang ist und wieviele bei 1001 kHz. Noch Fragen?

Na dann werd ich mal schauen, dass wie ich das so noch irgendwie in den 
Controller bekomme.

Anna Log schrieb:
> willi will DDS

Wollen ja, machen geht nicht.
Gast #2401547
Lesenswert?

>Na toll, immer erstmal ein blödes Kommentar. Ich will dein blödes
>Gesicht sehen, wenn du deine Blinke-LED in die Hand gedrückt bekommst
>und es heisst, "mach ne Waschmaschine draus, nachm Feiertag muss es
>laufen!".

Da würde ich kein blödes Gesicht zu machen, ich würde sagen:
- mach ich nicht...
- kann ich nicht...
- mach doch selber...
- geht so nicht...
- mach ich, mit neuer HW...
Gast #2401604
Lesenswert?

Matthias Lipinsky schrieb:
> Achja, die Hardware sollte so bleiben, höchstens die Farbe der LED kann
> noch getauscht werden..

Nun hat schon mal jemand ne interessante Aufgabe jenseits von 
"meinPortToggeltNicht" oder welcher "Spannungsregler für 5V", dann ist 
es  auch wieder nicht recht.

Ist doch mal ne Herausforderung so jenseits von allem was in Software 
möglich ist.

Kenne die AVR Schiene nicht aber bei Pic würde ich auf internen 
Schwinger umschalten und das ganze mit einer Kombination aus Vorteiler 
OSCTUNE und nem NOP Feld mit variablen Einsprungadressen probieren. 
Kalibrieren mit irgendwas das von draussen kommt (einmal mit Quartz, 
einmal ohne)

So ne Trickschaltung wird doch für AVR Kenner auch möglich sein, Oder?
#2401643
Lesenswert?

Hallo,

der Threadersteller hat es doch im ersten Post schon festgestellt, dass 
ein NOP mehr die Frequenz direkt um ~100 khz ändert.
T/2(f = 1.1 Mhz) = 454 ns (Zeit zwischen zwei Umschaltungen toggle )
T/2(f = 0.9 Mhz) = 555 ns
dT ~= 100 ns
ein Befehl wird in 1/ 20 mhz = 50 ns abgearbeitet, da hilft keine NOP 
Liste.

Also etwas wie ein PLL per 1-wire/I2C / SPI steuerbar wie 
Beitrag "Re: Rechteck zwischen 900kHz.1,1Mhz mit 1khz Schrittweite" schrieb ist wohl ein 
gangbarer Weg.
Gast #2401708
Lesenswert?

>der Threadersteller hat es doch im ersten Post schon festgestellt, dass ..
> da hilft keine NOP Liste.

Doch, das geht.
Bachfolgener Code könnte jede Frequenz von 1Hz bis 999999Hz in 1Hz 
Schritten erzeugen.
1
const int frequenz = 999999;
2
int i;
3

4

5
while() {
6
  i+ = frequenz;
7

8
  if ( i >= 2000000)
9
    i-= 2000000;
10

11
  PORTx= (i>1000000);
12

13
  while (! timerTick_500ns() );
14

15
}
Das Problem ist eher, dass die 20MHz Systemtakt noch zu nahe am 1MHz 
Signal liegen und obiges Programm wahrscheinlich eine zu lange 
Durchlaufzeit auf einem AVR hat.

Ein DDS Chip kann auch feinere Frequenzschritte als im Systemtakt 
ausgeben.
Lediglich das Phasenrauschen durch die Abtastung hat man immer.
Gast #2401965
Lesenswert?

Wenn man es extrem trimmt könnte man noch per Sotware DDS zu dem 
Frequenzen Kommen - man braucht dann aber noch extern einen guten Filter 
und Komperator um dann ein Rechtecksignal zu bekommen. Da es nur um den 
Rechteck geht darf die Grenzfrequenz des Filters auch relativ niedrig 
sein - ggf. geht auch ein Bandpass.

Eine andere Softwarelösung, aber auch recht aufwendig, wäre es den µC 
mit dem internen RC Takt laufen zu lassen und den in Laufzeit zu ziehen 
um in dann an einen externen Quarztakt (z.B. 32 kHZ) per Software PLL 
anzubinden.  Das könnte gehen, ist aber aufwendig und erzeugt relativ 
viel Jitter.
Gast #2402058
Lesenswert?

Horst Hahn schrieb:
> Hallo,
>
> der Threadersteller hat es doch im ersten Post schon festgestellt, dass
> ein NOP mehr die Frequenz direkt um ~100 khz ändert.

Moin Horst, das ist wohl "nicht so ganz falsch"

Dann soll er halt den Quarz durch einen Resonator ersetzen (wg. in 
diesem Fall "besserem" TK), selbigen per Kupferblech mit dem µC 
verbinden und durch an/abschalten von diversen internen Modulen die 
Verlustleistung beeinflussen welche durch Wärmeentwicklung den Resonator 
verstimmt. Wo ein Wille da ein Holzweg ;-).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren