Assembler Frequenz Teiler (Custom)

TommyB

Team Bitschubse
17. Mai 2010
2.151
80
48
41
127.0.0.1 ;)
Sprachen
  1. C#
  2. VB.Net
  3. LunaAVR
  4. Assembler
  5. Python
Hiho,

hier mal ein Teil eines Projektes von mir.
Es soll ein Frequenzteiler werden, aber nicht im ^2 Sinne (da könnte ich ja jeden Addierer aus der 74er Serie nehmen).

Gegeben:
Eingangsfrequenz: 18MHz
Ausgangsfrequenzen:
900hz, 9kHz, 90kHz, 900kHz, 18MHz
1.8kHz, 18kHz, 180kHz, 8MHz

18MHz kann ich direkt vom Oszillator abgreifen (da Teiler /1), der Rest lässt sich alles grade teilen, bis auf 8MHz (Teiler 2.25, blöd), da nehm ich denn n 2. Oszi für.
upload_2017-8-28_18-53-39.png

Die berechneten Werte sind die Taktzyklen.

Edit: 9MHz wären auch noch ok. Wäre denn /2.

Frage:
Wie am Besten umsetzen? Ich brauche alle Frequenzen gleichzeitig.
Also ich würde einen AVR mit mehreren Pins nehmen (einen großen Tiny oder kleinen Mega). Und dann 2 Quartz Oszillatoren, wie diesen hier.
Dann NOPs? Counter? Hmmm...
 
Moment mal...
sollen das immer feste Frequenzen sein, oder willst Du irgendeine eingehende Frequenz auf deren Teilfrequenzen ... teilen?
 
Korrekt. Fast wie mit einem 74HC4040 den ich früher genutzt hatte. Quartz Oszi dran, dann von den einzelnen Pins weg. Aber mit ^2 Rechnung passt das hier nicht wirklich weil /10 benötigt wird. Daher eine Softwarelösung.
 
Mit den 18MHz bist Du schon recht flott, da bleibt quasi nix zu rechnen/vergleichen/springen...
Hmm...
ok, den ein oder anderen Trick hätt ich noch auf Lager... bist Du auf irgend'n Controller festgelegt?
 
Nö, nicht wirklich. Einzige Limitierung: Muss vom AVR Dragon unterstützt werden. Oder irgendeiner programmiert mir die Chips und schickt sie mir zu (10 stk.) ^^
Oder Alabel hat n passenden 74er im Hinterkopf :D

Edit: Die 18MHz kann ich ja direkt vom Oszi abziehen, der ist ja auch CMOS/TTL. Beim Rest der oberen Frequenzen, da wirds haarig.
 
Zuletzt bearbeitet:
Oops, hab ich erst jetzt gesehen. Nein, die Eingangsfrequenz ist fest und gleichzeitig die für den AVR. Ich brauch nur die Ausgangswerte. Klar, jetzt kann man an der Schaltung noch was ändern, aber wenn fertig ändert sich am Eingang nix.

Also ein Frequenzteiler basierend auf der CPU Clock, nicht durch irgendein variables Eingangssignal.
 
Also folgende (teils absurde) Ideen, die mir so durch den Kopf gingen:
  1. Du willst fünf Frequenzpaare, wo ein Partner je die Hälfte des anderen ist, und die die Paare je ein zehntel des vorherigen sind
  2. Die ersten 18MHz sind so dicht am Maximum des Controllertaktes, daß es keinen Sinn macht, den Controller mit 20MHz zu treiben
  3. Die 18Mhz können aus dem Oszillator verwendet werden (trivial)
  4. Wenn man die 18MHz auch auf den AC legt, könnte dieser mit 9MHz Triggern - bei ACs mit ACOutput-Pin (Tn441) könnte man den Ausgang zwar nutzen, aber da lägen die 18MHz an (außerdem kann der nur 16MHz)
  5. Man kann einen Timer so laufen lassen, daß er bei jedem Takt überläuft, und via OC-Match einen Pin toggelt (wären 9MHz)
  6. Man kann mit einem Timer mit zwei OC-Units auch ein zusammengehörendes Paar erledigen (außer dem 18 & 9-MHz), indem man ein Unit den Überlauf festlegt, und der zugehörige Pin da toggelt, und das andere Unit PWM fährt. Wenn man noch mehr solche Timer hat...
  7. Kleinere Frequenzen kannst Du in Software erschlagen, indem Du die Überlaufinterrupts eines schnelleren Taktes zählst, und dann Beine toggelst.
  8. Für die 9MHz 'n ganzen Timer mit zwei OC-Units zu verbraten ist mir irgendwie 'n Dorn im Auge - da muß sich doch irgendwelche Hardware zweckentfremden lassen... mir schwebt irgendwas mit USART oder SPI-Clock vor... mit UBRR=0 sollte die USCK mit habem CPU-Takt zappeln. Die Frage ist, ob man da schnell genug Bytes (9bit Betrieb?) ins UDR stopfen kann (insbes. bezüglich #7), und obs zwischen den Bytes Aussetzer gibt)
 
Absurd ist da doch nichts :)
Hauptsache es führt zum Ziel. Wie genau ist ja egal, funktioniert es einmal muss ja auch nichts mehr geändert werden.
 
Naja, die Sache mit dem Ausgang des Komperators oder dessen Interrupt(flag) war ein Holzweg. Ob sich die Clock von USART und/oder SPI jitterfrei und im Dauerbetrieb nutzen läßt, wäre auch nicht sicher. Grundsätzlich wäre der Mega48/88/... dann ein geeignetter Kandidat (den Du möglicherweise rumliegen hast): drei Timer mit je zwei OC-Units, USART, SPI, und nichts kommt sich in die Quere.
Oder Alabel hat n passenden 74er im Hinterkopf
Daß es für diesen konkreten Fall einen passenden IC gibt, halte ich für seeeeehr unwahrscheinlich.
Aber es wird mehrere Wege geben, das aus diskreten Gattern (JK-FlipFlops ? ) diskret aufzubauen.
Oder mehrere ICs mit entsprechenden Gattern zu koppeln.
(*Kaffekoch, Bleistift&Papier such*)
 
Mir schwebte da auch ein Mega48/88/168 vor (ich glaube ich habe nur noch letzteren @home, lässt sich ja aber fix ändern). Allein weil der dann im Hintergrund auch die Spannung des Akkus überwachen kann, zwecks Tiefentladungsschutz. Vielleicht auch ein Tiny2313. Zusammen mit dem Tiny13 (hierfür unbrauchbar) sind das ja meine lieblings-Chips ;)

Diskret... Das wär mal 'ne Aufgabe ^^ Aber ich habe nur begrenzten Platz. Der Akku muss noch mit rein und auch noch zig Mosfets und Linearregler für Spannung und Strom. Frequenz ist ja nur ein Teil des Gerätes.

Prost Kaffee :)
 
Im 74hc390 hättest Du schon mal zwei unabhängige Decade Counter.
 
  • Like
Reaktionen: TommyB
Ich hätte jetzt versucht, das mit Schieberegistern anzugehen (ohne Latch, also zB HC164)...

Der HC390 würde auf einem Ausgang halbieren, und auf einem anderen durch Zehn teilen, und das ganze zweimal.
Allerdings hätte der zehner nicht mehr 1:2, sondern 1:4 Taktverhältnis.

Ansonsten könntest Du mit zweien davon (4 Gates) einen Großteil Deiner Schaltung realisieren. lediglich für die letzten 900Hz bräuchtest Du noch einen halbierer. Oder einen dritten HC390, der dann auch noch 180Hz, 90Hz und 18Hz liefert.
(Abgesehen davon hättest Du auch noch viertel und achtel der Eingangsfrequenzen (18, 1.8, 0.18, ...MHz verfügbar)
 
Zuletzt bearbeitet:
Hatte Tastverhältnis gelesen.

Um das noch mal zu entwirren:

Das Teilerverhältnis ist 1:2 und 1:5, macht zusammen 1:10.

Das Tastverhältnis ist bei normaler Verschaltung 1:4, bei bi-quinary 1:1.
 
  • Like
Reaktionen: TommyB
Ahh...
ok hatte ich falsch verstanden...
der 390 besitz vier unabhängige Teiler. Zweie halbieren (Qa), zweie teilen je durch zwei (Qb), vier (Qc) und fünf (Qd).
Das Signal an Qd ist 1:5
Jeder Teiler mit eigenem Takteingang.

Soweit korrekt?

18MHz an ClockB1 liefert 9Mhz an Qb1 und 3.6MHz an Qd1 (1:5)
Qd1 an ClockA1 liefert 1.8MHz an Qa1 (1:2)
die lege ich an die nächste B-Clock usw, und komme mit zwei ICs bis 1.8kHz.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: TommyB
Darf man fragen was es wird, wenn es fertig ist?
 
Zuletzt bearbeitet:
reichen vier 390er.
drei...
wie gesagt, von 18MHz bis 1k8Hz kommste mit zweien - für die 900Hz brauchste dann'n dritten (oder was anderes).
Der Dritte würde dann nebenbei auch noch 180, 90 18Hz abwerfen

Hatte hier auf Seite 5 das "QA Connected to Clock B" überlesen...
 
Zuletzt bearbeitet:
  • Like
Reaktionen: TommyB
Schafft der denn noch 18MHz? Hatte da mal mit einem LS geringfügige Probleme ^^' 3 davon könnt ich unterbringen.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)