Forum: Mikrocontroller und Digitale Elektronik Mehrere uCs an einem Quartz synchron


von Hagbard C. (cptrick)


Lesenswert?

Hiho,

ich möchte 5 ATmega16-16PU als Spaltentreiber und einen ATmega32-16PU 
als Zeilentreiber für eine RGB LED Matrix verwenden.

Dazu ist es, soweit ich es verstanden habe, nötig die uCs synchron zu 
betreiben.

Ich wollte die Controller dazu gemeinsam mit einem Quartz betreiben.
Leider konnte ich dazu noch keine Schaltungen finden.

Gruß cptrick

von Michael H. (Gast)


Lesenswert?

Hagbard Celine schrieb:
> ich möchte 5 ATmega16-16PU als Spaltentreiber und einen ATmega32-16PU
> als Zeilentreiber für eine RGB LED Matrix verwenden.

Aua.

> Ich wollte die Controller dazu gemeinsam mit einem Quartz betreiben.
> Leider konnte ich dazu noch keine Schaltungen finden.

Da wirst Du wohl auch keine finden, das ist zu einfach. Externen 
Taktgenerator einstellen und externen Quarzgenerator benutzen.
Evtl. kann man auch einen der Controller als Master benutzen und mit 
einem oder mehreren Gattern den Takt verteilen.

Michael

von Hagbard C. (cptrick)


Lesenswert?

Michael H. schrieb:
> Da wirst Du wohl auch keine finden, das ist zu einfach. Externen
> Taktgenerator einstellen und externen Quarzgenerator benutzen.
> Evtl. kann man auch einen der Controller als Master benutzen und mit
> einem oder mehreren Gattern den Takt verteilen.

Also einen Master wird es geben, einen Arduino. Die uCs wollte ich über 
I2C kommunizieren lassen, bzw. die 6 controller als Slave und den 
Arduino als Master.

Das ganze ist so aufgebläht, weil es auch möglich sein soll die LEDs 
umzupolen und als Photodioden zu betreiben, Stichwort Touch Interface.

von Eduard S. (schneehase)


Lesenswert?

Es git das zur Zeit ein Projekt 
http://www.mikrocontroller.net/articles/Word_Clock. Sollte dir 
weiterhelfen.

von yalu (Gast)


Lesenswert?

Du kannst den Oszillator eines Controllers mit externem Quarz im
Full-Swing-Modus (CKOPT=0) betreiben und an den XTAL2-Ausgang weitere
Controller anschließen, die für external Clock konfiguriert sein müssen.
Wieviele davon der XTAL2-Ausgang treiben kann, weiß ich nicht.
Möglicherweise musst du noch einen Treiber in Form eines Logikgatters
o.ä. dazwischenschalten.

von Hagbard C. (cptrick)


Lesenswert?

Eduard Scheske schrieb:
> Es git das zur Zeit ein Projekt
> http://www.mikrocontroller.net/articles/Word_Clock. Sollte dir
> weiterhelfen.

Hmm nicht wirklich das, was ich vorhabe.

yalu schrieb:
> Du kannst den Oszillator eines Controllers mit externem Quarz im
> Full-Swing-Modus (CKOPT=0) betreiben und an den XTAL2-Ausgang weitere
> Controller anschließen, die für external Clock konfiguriert sein müssen.

Das klingt interessant. Würde sich auch mit der Master/Slave 
Konstellation decken.

von Falk B. (falk)


Lesenswert?

@  Hagbard Celine (cptrick)

>ich möchte 5 ATmega16-16PU als Spaltentreiber und einen ATmega32-16PU
>als Zeilentreiber für eine RGB LED Matrix verwenden.

Ist unsinnig. Nicht nur dass einfache Schieberegister vollkommen 
ausreichen und billiger sind, nein, deine AVRs laufen nicht so synchron 
wie du denkst.

>Dazu ist es, soweit ich es verstanden habe, nötig die uCs synchron zu
>betreiben.

Jain. Aber dein Ansatz ist untauglich.

>Ich wollte die Controller dazu gemeinsam mit einem Quartz betreiben.
>Leider konnte ich dazu noch keine Schaltungen finden.

Nimm einen QuarzOSZILLATOR, dort hängst du einen Treiber ala 74HC04 dran 
und schon kannst du Dutzende AVR mit dem sleben Takt betreiben.

MfG
Falk

von Hagbard C. (cptrick)


Lesenswert?

Falk Brunner schrieb:
>>Dazu ist es, soweit ich es verstanden habe, nötig die uCs synchron zu
>>betreiben.
>
> Jain. Aber dein Ansatz ist untauglich.
>
>>Ich wollte die Controller dazu gemeinsam mit einem Quartz betreiben.
>>Leider konnte ich dazu noch keine Schaltungen finden.
>
> Nimm einen QuarzOSZILLATOR, dort hängst du einen Treiber ala 74HC04 dran
> und schon kannst du Dutzende AVR mit dem sleben Takt betreiben.

Schieberegister kosten zuviel Zeit zum Schalten, wenn ich auf 30 pins 
SoftPWM mache.

Ok, man könnte die Controller über I2C synchronisieren, also ein 
KillByte senden, bei dem die Spalten ausgeschaltet und eine Zeile weiter 
gesprungen wird.

von Falk B. (falk)


Lesenswert?

@Hagbard Celine (cptrick)

>Schieberegister kosten zuviel Zeit zum Schalten, wenn ich auf 30 pins
>SoftPWM mache.

Nöö, ausserdem gibt es Soft-PWM

Mfg
Falk

von Simon K. (simon) Benutzerseite


Lesenswert?

Warum nimmst du nicht einfach einen AVR mit genügend Pins? Mein Gott, 
ist das immer ein Umstand hier mit euch ;)

von Hagbard C. (cptrick)


Lesenswert?

Falk Brunner schrieb:
>>Schieberegister kosten zuviel Zeit zum Schalten, wenn ich auf 30 pins
>>SoftPWM mache.
>
> Nöö, ausserdem gibt es Soft-PWM

Können Schiebergister denn bidirektional betrieben werden?
Und mir ist nicht klar, wie ich 150 (50xRGB) PWM Channel ohne PWM in 
Software sonst realisieren kann.
Deshalb 5 uCs für die Spalten und 1 uC für die Zeilen. In diesem Setup 
sehe ich kein Problem die LEDs bidirektional anzusteuern und wenn bei 30 
PWM Kanälen auf einem ATmega16 noch Rechenleistung übrig ist, könnte man 
noch etwas Berechnung für die Animation auslagern.

von Hagbard C. (cptrick)


Lesenswert?

Simon K. schrieb:
> Warum nimmst du nicht einfach einen AVR mit genügend Pins? Mein Gott,
> ist das immer ein Umstand hier mit euch ;)

Welcher AVR hat denn 160 GPIO pins und kann 150 PWM Kanäle verwalten?

Edith: Und kein SMD;)

von Falk B. (falk)


Lesenswert?

@  Hagbard Celine (cptrick)

>Können Schiebergister denn bidirektional betrieben werden?

Wozu?

>Und mir ist nicht klar, wie ich 150 (50xRGB) PWM Channel ohne PWM in
>Software sonst realisieren kann.

Naja, das ist schon "etwas" viel für einen AVR. Nimm 30 PWM-Kanläe in 
Soft-PWM, dann hast du bei einem AVR MEGA16 noch zwei Pins frei. 
Dort kannst du per I2C oder UART Daten reinschicken. Mit 5 AVRs bist du 
dabei, ein sechster schickt dann Daten an die fünf Arbeitstiere.

>Deshalb 5 uCs für die Spalten und 1 uC für die Zeilen.

Ist trotzdem nicht sehr sinnvoll.

> In diesem Setup
>sehe ich kein Problem die LEDs bidirektional anzusteuern und wenn bei 30
>PWM Kanälen auf einem ATmega16 noch Rechenleistung übrig ist, könnte man
>noch etwas Berechnung für die Animation auslagern.

Kann man.

MFG
Falk

von Hagbard C. (cptrick)


Lesenswert?

Falk Brunner schrieb:
> Naja, das ist schon "etwas" viel für einen AVR. Nimm 30 PWM-Kanläe in
> Soft-PWM, dann hast du bei einem AVR MEGA16 noch zwei Pins frei.
> Dort kannst du per I2C oder UART Daten reinschicken. Mit 5 AVRs bist du
> dabei, ein sechster schickt dann Daten an die fünf Arbeitstiere.

Das ist genau das, was ich beschrieben habe (bzw. noch einen für die 
Spalten, wobei das auch der Master sein kann, der hat ja nicht so viel 
zutun). Und warum soll das nicht sinnvoll sein?

Falk Brunner schrieb:
>>Können Schiebergister denn bidirektional betrieben werden?
>
> Wozu?

Schrieb ich bereits: LEDs umpolen und als Photodioden nutzen.

von Falk B. (falk)


Lesenswert?

@  Hagbard Celine (cptrick)

>Das ist genau das, was ich beschrieben habe. Und warum soll das nicht
>sinnvoll sein?

Nein, das hast du nicht. Du hast ein LED-Matrix beschrieben, da du 
von zeilen und Spalten redest. Ich schrieb eas über das direkte 
Ansteuern von 30 LEDs/AVR.

>Schrieb ich bereits: LEDs umpolen und als Photodioden nutzen.

Geht mit den meisten Schieberegistern nicht. Aber wenn man 30/AVR hat, 
kann man das leicht machen, indem man die Masse der LED über einen 
dicken MOSFET-Treiber schaltet.

MFG
Falk

von Hagbard C. (cptrick)


Lesenswert?

Falk Brunner schrieb:
>>Das ist genau das, was ich beschrieben habe. Und warum soll das nicht
>>sinnvoll sein?
>
> Nein, das hast du nicht. Du hast ein LED-Matrix beschrieben, da du
> von zeilen und Spalten redest. Ich schrieb eas über das direkte
> Ansteuern von 30 LEDs/AVR.

Achso, das hatte ich überlesen. Aber das Umschalten zwischen den PWM 
Zyklen betrifft ja auch nicht die Zeilentreiber, diese "denken" sie 
steuern die ganze Zeit eine Reihe von 50 RGB LEDs.

>>Schrieb ich bereits: LEDs umpolen und als Photodioden nutzen.
>
> Geht mit den meisten Schieberegistern nicht. Aber wenn man 30/AVR hat,
> kann man das leicht machen, indem man die Masse der LED über einen
> dicken MOSFET-Treiber schaltet.

Also das Schalten ginge nicht über die 5 AVRs, dort sind mit 30xPWM und 
I2C bereits alle GPIO pins belegt und dann könnte man die Masse auch 
gleich an den Master anlegen, das erleichtert auch das Messen (Nur noch 
ein ADC und Operationsverstärker dazwischen).

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Nun laßt ihn doch die 6 AVRs nehmen, ATMEL wird´s freuen ;-)

von Hagbard C. (cptrick)


Lesenswert?

Travel Rec. schrieb:
> Nun laßt ihn doch die 6 AVRs nehmen, ATMEL wird´s freuen ;-)

Bin auch neu bei der ganzen Sache und versuche daher die Hardware 
möglichst felxibel zu konzipieren um dann viel über software 
umzufunktionieren.

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
Noch kein Account? Hier anmelden.