Suche möglichst kleine Schaltung (SMD) für ľC-Takt: 4MHz ->

W

Wolfgang Draxinger

Guest
Also wie schon im Subject erwähnt suche ich nach einer Schaltung (am besten
in SMD Bauteilen), mit der ich entweder:

4MHz nach 16MHz

oder

16MHz nach 4MHz wandeln kann.

Der Hintergrund: Für die MG100 Gyroskope der Fa. Gyration werden spezielle
A/D Wandler mitgeliefert, denen ein Takt von 4MHz zugeführt werden muss.
Als ľC will ich einen Atmel AT Mega161 verwenden, der sich mit bis zu 16MHz
takten lässt. 4MHz würden zwar auch gehen, aber ich will die höchste
Taktung. Gleichzeitig werte ich nämlich das DutyCycle Signal von ADXL202
Accelerometern aus in einer Zählschleife aus. Das ganze läuft in einer
Zeitscheibe, sodass ein hoher Takt notwendig ist, um den DutyCycle präzise
zu messen.

Gleichzeitig geht es in meinem Gerät sehr eng zu, so dass ich keine größeren
Bauteile einbauen kann. Daher will ich das Taktsignal von einem
Quarzoszillator für die beiden A/Ds und den ľC verwenden. Gleichzeitig
wär's auch vom Programmiertechnischen einfacher zu lösen: Wenn Takt von ľC
und A/D synchronisiert wären, könnte ich die Stücke der Zeitscheibe für die
DutyCycle Zähler der A/D Wandler auf die Länge von 2^13 (8192) Takte
setzen, die die A/D Wandler zum integrieren des Signals benötigen. So
könnte ich mir einen Timer sparen.

Irgendwelche Ideen?

Wolfgang
 
Irgendwelche Ideen?
Vielleicht blashpemisch, bin ja auch keine Fachmann, aber: Hast Du einen
Timer im AVR frei? Wenn ja, dann verwende den doch direkt, damit ist
alles andere 100% synchron zum AVR. Andere Moeglichkeit: Keinen Quarz,
sondern integrierten Quarzoszillator verwenden. Der kann dann auch
mehrere Komponenten ansteuern. Ausserdem sollten XTAL2 IMHO auch als
Taktausgang verwendbar sein.

Gruss,
Dirk

--
Dirk Wiebel
SFB 441 Linguistische Datenstrukturen
Nauklerstr. 35 fon: +49 7071 29-77153
D-72074 Tuebingen fax: +49 7071 29-5830
Email: -- hidden in Usenet --
GNUpg public key: http://www.sfb441.uni-tuebingen.de/~dirk/key.txt
 
Dirk Wiebel wrote:
Irgendwelche Ideen?


Vielleicht blashpemisch, bin ja auch keine Fachmann, aber: Hast Du einen
Timer im AVR frei? Wenn ja, dann verwende den doch direkt, damit ist
alles andere 100% synchron zum AVR. Andere Moeglichkeit: Keinen Quarz,
sondern integrierten Quarzoszillator verwenden. Der kann dann auch
mehrere Komponenten ansteuern. Ausserdem sollten XTAL2 IMHO auch als
Taktausgang verwendbar sein.
Vergiss den zweiten Teil -- mal wieder zu spaet geschaltet...

Gruss,
Dirk

--
Dirk Wiebel
SFB 441 Linguistische Datenstrukturen
Nauklerstr. 35 fon: +49 7071 29-77153
D-72074 Tuebingen fax: +49 7071 29-5830
Email: -- hidden in Usenet --
GNUpg public key: http://www.sfb441.uni-tuebingen.de/~dirk/key.txt
 
Wolfgang Draxinger schrieb:
Also wie schon im Subject erwähnt suche ich nach einer Schaltung (am besten
in SMD Bauteilen), mit der ich entweder:

16MHz nach 4MHz wandeln kann.
SN74HC74 in SO-14 oder TSSOP-14.


Gruß Dieter
 
Wolfgang Draxinger schrieb:
Also wie schon im Subject erwähnt suche ich nach einer Schaltung (am besten
in SMD Bauteilen), mit der ich entweder:

4MHz nach 16MHz

oder

16MHz nach 4MHz wandeln kann.
Hallo,

wenn es möglichst einfach und klein werden soll, dann bleibt nur der
Teiler 4:1, dafür reicht ein 2 Bit Binärzähler der 16 MHz kann. Wenn es
keinen 2 Bit Zähler gibt, ein 4 Bit Zähler tut es auch, es muss nur der
Ausgang des zweiten Fliflops zugänglich sein.
Z.B. der 74xx164 in SMD hat nur 14 Pins, der 74xx163 ginge auch, hat
aber 16 Pins. Eigentlich würden ja schon 5 bis 6 Pins reichen, bei 4 Bit
7 bis 8.

Bye
 
Dieter Wiedmann wrote:

SN74HC74 in SO-14 oder TSSOP-14.
Wieder mal ein Bauteil, dass in den EAGLE Standardbibliotheken fehlt...
Hat da jemand vielleicht ne fertige Bibliothek?

Wolfgang
 
Wolfgang Draxinger schrieb:

SN74HC74 in SO-14 oder TSSOP-14.

Wieder mal ein Bauteil, dass in den EAGLE Standardbibliotheken fehlt...
a) such doch erst mal. Im SO14 ist der garantiert vorhanden, und
auch ein TSSOP14 sollte sich irgendwo finden lassen.

Hat da jemand vielleicht ne fertige Bibliothek?
b) selbst erstellen dauert höchstens 5 Minuten. Schneller als
auf eine Antwort zu warten.

Kopfschüttelnd,

--
Dipl.-Ing. Tilmann Reh
Autometer GmbH Siegen - Elektronik nach Maß.
http://www.autometer.de
 
Tilmann Reh wrote:

a) such doch erst mal. Im SO14 ist der garantiert vorhanden, und
auch ein TSSOP14 sollte sich irgendwo finden lassen.

Hat da jemand vielleicht ne fertige Bibliothek?

b) selbst erstellen dauert höchstens 5 Minuten. Schneller als
auf eine Antwort zu warten.
Das Package ist schon vorhanden, klar.
Es fehlt halt nur ein korrekter Pinout, naja, hab mittlerweile eh die
Library erstellt...

Nur, wieso das Rad zwei mal erfinden?

Wolfgang
 
Joerg Wunsch wrote:

Timer im CTC-Modus ohne Vorteiler betreiben, compare match toggles OC
output, OCR-Register auf 1 stellen. Das sollte am OC-Ausgang 4 MHz
ergeben.
Klingt interessant, muss ich ausprobieren. Gibt's dabei irgendwelche Klippen
die zu umschiffen sind?

Wolfgang
 
Wolfgang Draxinger <wdraxinger@darkstargames.de> schrieb:

16MHz nach 4MHz wandeln kann.

Der Hintergrund: Für die MG100 Gyroskope der Fa. Gyration werden
spezielle A/D Wandler mitgeliefert, denen ein Takt von 4MHz
zugeführt werden muss. Als ľC will ich einen Atmel AT Mega161
verwenden, der sich mit bis zu 16MHz takten lässt.
Timer im CTC-Modus ohne Vorteiler betreiben, compare match toggles OC
output, OCR-Register auf 1 stellen. Das sollte am OC-Ausgang 4 MHz
ergeben.

--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
Kristian Köhntopp, de.comp.os.unix.misc
 
Arne Rossius schrieb:
Bist du sicher, dass du den 164 (8 Bit Schieberegister) vorschlagen
wolltest? Wie soll man damit durch 4 teilen?

Hallo,

Du hast völlig recht, der 197 oder 293 wären Binärzähler mit nur 14 Pins.

Bye
 
Joerg Wunsch wrote:

herausführen können, ohne daß man sonst irgendwelche Interruptlast
oder so erzeugt (die wäre ja weiß Gott tödlich bei dieser Frequenz :).
Ich dachte vor allem an Interrupts, die vielleicht Probleme machen könnten,
aber wenn keine erzeugt werden ist es auch kein Problem ;-)

Bin eh grade dabei das alles auf eine winzige Platine (27mm x 17mm) zu
frickeln (AVR, C-MAC IQXO-57, MAX232ECWE, ADXL202E und ein paar
RC-Glieder...) Scheint alles gerade eben zu passen.

Wolfgang
 
Uwe Hercksen wrote:
Z.B. der 74xx164 in SMD hat nur 14 Pins, der 74xx163 ginge auch, hat
Bist du sicher, dass du den 164 (8 Bit Schieberegister) vorschlagen
wolltest? Wie soll man damit durch 4 teilen?


Gruß,
Arne
 
Joerg Wunsch wrote:

Ich habe selbst den output toggle mode noch nicht mit so hohen
Frequenzen konfiguriert, aber laut der Formel im Datenblatt sollte das
kein Problem sein, man müßte maximal den halben Takt auf diese Weise
herausführen können, ohne daß man sonst irgendwelche Interruptlast
oder so erzeugt (die wäre ja weiß Gott tödlich bei dieser Frequenz :).
Des kommt davon, wenn man Vergleichstabellen in zu kleiner Schrift liest:
Der ATMega 161 geht ja bloß bis 8MHz, direkt drunter war der Mega32, aber
der ist einfach zu groß... Aber deine Idee ist die beste Lösung für mein
Problem und sollte auch bei einem Taktverhältnis von 1:2 funktionieren.

Wolfgang
 
Wolfgang Draxinger <wdraxinger@darkstargames.de> schrieb:

Timer im CTC-Modus ohne Vorteiler betreiben, compare match toggles
OC output, OCR-Register auf 1 stellen. Das sollte am OC-Ausgang 4
MHz ergeben.

Klingt interessant, muss ich ausprobieren. Gibt's dabei irgendwelche
Klippen die zu umschiffen sind?
Nicht daß ich wüßte. Das Übliche: damit OC ein Ausgang ist, muß man
auch das passende DDRx-Bit setzen. ;-) Das trifft beim AVR eigentlich
auf alle Sonderfunktionen von Ports zu mit Ausnahme der UART, die
beim Einschalten des Senders den entsprechenden Pin selbst auf Ausgang
konfiguriert.

Ich habe selbst den output toggle mode noch nicht mit so hohen
Frequenzen konfiguriert, aber laut der Formel im Datenblatt sollte das
kein Problem sein, man müßte maximal den halben Takt auf diese Weise
herausführen können, ohne daß man sonst irgendwelche Interruptlast
oder so erzeugt (die wäre ja weiß Gott tödlich bei dieser Frequenz :).
--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
Kristian Köhntopp, de.comp.os.unix.misc
 
Nur, wieso das Rad zwei mal erfinden?
wie wäre es mit 74LS74 oder 7474 oder 74XY74 einfach nach 74HC74
kopieren?

Ich glaubs kaum, dass keiner der 7474 derivate in der Lib stehen.
Ansonsten werf den Adler weg.

Martin
 
Martin Schönegg schrieb:

Nur, wieso das Rad zwei mal erfinden?

wie wäre es mit 74LS74 oder 7474 oder 74XY74 einfach nach 74HC74
kopieren?
Nein, *irgendeinen* 74xx74 nehmen und neuen VALUE geben. Fertich.

Ich glaubs kaum, dass keiner der 7474 derivate in der Lib stehen.
Ansonsten werf den Adler weg.
[ ] Du kennst EAGLE.

--
Dipl.-Ing. Tilmann Reh
Autometer GmbH Siegen - Elektronik nach Maß.
http://www.autometer.de
 
Am Thu, 22 Apr 2004 18:43:27 +0200 hat Wolfgang Draxinger
<wdraxinger@darkstargames.de> geschrieben:

Joerg Wunsch wrote:

Ich habe selbst den output toggle mode noch nicht mit so hohen
Frequenzen konfiguriert, aber laut der Formel im Datenblatt sollte das
kein Problem sein, man müßte maximal den halben Takt auf diese Weise
herausführen können, ohne daß man sonst irgendwelche Interruptlast
oder so erzeugt (die wäre ja weiß Gott tödlich bei dieser Frequenz :).

Des kommt davon, wenn man Vergleichstabellen in zu kleiner Schrift liest:
Der ATMega 161 geht ja bloß bis 8MHz, direkt drunter war der Mega32, aber
der ist einfach zu groß... Aber deine Idee ist die beste Lösung für mein
Problem und sollte auch bei einem Taktverhältnis von 1:2 funktionieren.
Wenn du wirklich 16MHz brauchst, dann nimm den Mega16 (Nachfolger von
Mega161/Mega163), der kann das bei 5V.
--
Martin
 
Martin Lenz wrote:

Wenn du wirklich 16MHz brauchst, dann nimm den Mega16 (Nachfolger von
Mega161/Mega163), der kann das bei 5V.
Leider hat der ATMega16 A/D Wandler Ports die ich beim aktuellen Projekt
aber nicht brauchen kann (zu wenig Auflösung und nicht Differential). Die
dezidierten A/D Wandler sind genau auf die Gyroskope abgestimmt.
Demgegenüber braucht ich aber eine genze Menge Digitalports. (Auslesen der
Gyroskop A/D)

8MHz sind ausreichend, 4MHz wären aber zu wenig. Der DutyCycle der ADXL202
ist so eingestellt, dass ich einen 1MHz Zähler brauche um die 10Bit
Auflösung rauszuholen die die angeblich liefern.

Ich muss den Wert vom Port einlesen (2 Takte), vergleichen (2 Takte) und
einen Zähler setzen (nochmal 2 Takte). Macht summa summarum 6 Takte. Wenn
man dann noch von Phasenabweichungen ausgeht (der ADXL202 hat seinen
eigenen Oszillator) und die unausweichlichen Latenzzeiten berücksichtigt
bräuchte ich ca 6,5MHz Takt. Aber nachdem ich die 4MHz für die A/D Wandler
der Gyroskope möglichst unkompliziert aus dem ľC Takt erzeugen will, sind
8MHz das nächsthöhere und reichen dafür aus. 16MHz wären zwar auch nett
gewesen, sind aber nicht so wichtig.

Wolfgang
 
Wolfgang Draxinger schrieb:

Ich muss den Wert vom Port einlesen (2 Takte), vergleichen (2 Takte) und
einen Zähler setzen (nochmal 2 Takte). Macht summa summarum 6 Takte.
Ist wahrscheinlich nicht so wichtig, aber das sollte auch mit 5 clks gehen:

loop:
adiw r25:r24,1 ; 2 clks
sbis PortA,0 ; 1 clk, wenn Bit 0 noch nicht gesetzt
rjmp loop ; 2 clks
...


Jens
(selber gerade beim programmieren)
 

Welcome to EDABoard.com

Sponsor

Back
Top