Mehrere uCs an einem Quartz synchron

OP #1544006
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
Gast #1544014
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
OP #1544019
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.
Gast #1544024
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.
OP #1544031
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.
#1544039
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
OP #1544053
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.
OP #1544066
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.
#1544089
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
OP #1544099
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.
#1544103
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
OP #1544129
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).

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