Forum: Mikrocontroller und Digitale Elektronik 3 USART auf einmal in einem Chip?


von Jens (Gast)


Lesenswert?

Ich bekomme 3 unabhängige Datenströme per USART, also 3 mal TxD.

Nun bräuchte ich einen Atmel, der 3 mal RxD kann, also 3 USART hat -- 
das gibt es glaube ich nicht.
Gibt es einen USART-Chip, der das kann -- ähnlich eines MIDI-Mergers?

von Sebastian M. (sebastian_m)


Lesenswert?

xmega, zb

ATxmega128A1 hat 8 usarts

seb

von me (Gast)


Lesenswert?

ATmega640, 1280, 2560
je nach Datenrate könnte auch ein Softwareuart bzw. 2x Hardwar, 1x 
Software reichen... das musst du dir aber selber ausrechnen.

http://www.atmel.com/dyn/products/param_table.asp?category_id=163&family_id=607&subfamily_id=760

von Jens (Gast)


Lesenswert?

Danke ...

das hatte ich mir schon gedacht, dass es keine Lösung im lötbaren PDIP 
Gehäuse gibt.

von XMEGA (Gast)


Lesenswert?

Hallo,

> dass es keine Lösung im lötbaren PDIP
> Gehäuse gibt

besorg dir einen Atxmega32a4, der ist noch gut lötbar (TQFP44 Package) !
Hat 3 Usarts.


Gruß XMEGA

von Peter D. (peda)


Lesenswert?

Jens schrieb:
> das hatte ich mir schon gedacht, dass es keine Lösung im lötbaren PDIP
> Gehäuse gibt.

Was für Baudrate denn?
Z.B. 19200 Baud sind für ne SW-UART kein Thema.
Dann reicht ein ATmega164 (2* HW-UART + 1* SW-UART).


Peter

von Jens (Gast)


Lesenswert?

Ja, danke.

Das schaue ich mir mal an - gibt es dann auch wirklich 3 verschiedene 
RxD-Pins?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jens schrieb:
> Nun bräuchte ich einen Atmel

"Einen Atmel" wirst du nicht bekommen, denn das ist eine Firma. ;-)

(Daran, "ein Atmel" zu bekommen, indem man hinreichend viele Aktien
kauft, hat sich vor einigen Jahren schon mal "ein Microchip" die
Zähne ausgebissen ...)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jens schrieb:

> Das schaue ich mir mal an - gibt es dann auch wirklich 3 verschiedene
> RxD-Pins?

Wenn drei UARTs drin sind, gibt's auch 3 RxD-Pins, wie sollte es sonst
gehen?

von Jens (Gast)


Lesenswert?

Sicher - sehe ich jetzt auch --

2 bei PortD, 2 bei PortC und einen bei PortE ...

von sergey (Gast)


Lesenswert?

MAXIM hat externe SPI-UARTs und SPI kannst du gefahrlos auch per 
Software implementieren.

von Stephan (Gast)


Lesenswert?

Jens schrieb:
> Danke ...
>
> das hatte ich mir schon gedacht, dass es keine Lösung im lötbaren PDIP

Mega640 gibts im 40er DIP. Habe ich da.

von spess53 (Gast)


Lesenswert?

Hi

>Mega640 gibts im 40er DIP. Habe ich da.

Halte ich für ein Gerücht.

MfG Spess

von Thomas K (Gast)


Lesenswert?

Das glaube ich nicht.. der Mega640 ist ein 100-Pinner (TQFP oder CBGA). 
Was du haben wirst ist ein Mega644.

von Jens (Gast)


Lesenswert?

Noch was ist zu bedenken.

Es kann sein, dass alle drei RxD gleichzeitig mit Daten bedient werden, 
da die "Sender" unabhängig voneinander arbeiten und Messdaten ausgeben.
Deshalb die drei uC - ich kann über Interrupt die Daten in ein Buffer 
schreiben und danach in den Hauptroutinen gemütlich hintereinander über 
einen anderen Bus ausgeben. Also uC2 und uC3 geben ihre Daten an uC1 
(wenn sie von uC1 aufgefordert werden) - der macht dann die Hauptarbeit 
und gibt letztendlich alles weiter über TxD.

Der 644 hat nur eine USART. ???

Ich muss das Projekt jetzt auch zu Ende bekommen. Aber in Zukunft werde 
ich mich mal mit den ATxMega32a4 usw. beschäftigen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

OT:
Jörg Wunsch schrieb:
> "Einen Atmel" wirst du nicht bekommen, denn das ist eine Firma. ;-)
Ich habe aber einen Renault, mein Nachbar einen Audi, ich kenne sogar 
einen, der einen Mercedes hat, heute morgen hat mich einer mit seinem 
Mitsubishi überholt und ich weiß von einem, der will sich sogar einen VW 
kaufen...

von spess53 (Gast)


Lesenswert?

Hi

>Der 644 hat nur eine USART. ???

Der ATMega644 ja. Die ATMega644A/644PA haben 2.

MfG Spess

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jens schrieb:

> Deshalb die drei uC - ich kann über Interrupt die Daten in ein Buffer
> schreiben und danach in den Hauptroutinen gemütlich hintereinander über
> einen anderen Bus ausgeben. Also uC2 und uC3 geben ihre Daten an uC1
> (wenn sie von uC1 aufgefordert werden) - der macht dann die Hauptarbeit
> und gibt letztendlich alles weiter über TxD.

Das funktioniert auch mit 4 USARTs und deren Rx-Interrupt problemlos.
Die ISR schreibt einfach das aktuelle Byte in einen Ringpuffer, und
der main thread überprüft regelmäßig alle Puffer.  Bei deiner Mehr-
Controller-Lösung verschiebst du das Problem doch nur, da du dann
wieder eine master-slave-Kommunikation zwischen den Controllern
brauchst, und die ist deutlich teurer als das Abholen der Bytes aus
dem Ringpuffer.

von Jens (Gast)


Lesenswert?

Ja - das ist richtig.

Ich muss nur abwägen was aufwendiger für mich ist. Lötarbeit mit 
SMD-Gehäuse und dafür die bessere Variante oder auf Lochraster und 
mehrere uC usw..

Die Kommunikation unter den 3 uC gestaltet sich in meinem Projekt 
einfach, da nach "außen" nur Fehl- und Vergleichswerte getragen werden. 
Jeder der uC sammelt seine Daten und gibt nach außen nur dann etwas 
weiter, wenn entsprechende Fehler oder Schlüsseldaten auftauchen. Es 
kommen sozusagen viele Messdaten an und es werden nur wenige 
verarbeitet.

von me (Gast)


Lesenswert?

Die größeren Atmels bekommt man bei diversen Anbietern auf 
Breakoutboards mit 0,1" Rastermaß. z.B. Atmega1280 16€ tigal.com

Auch ein Arduino Mega2560 könntest du in Betracht ziehen. Preislich zwar 
etwas teurer (ca. 45€-50€ je nach Distri), dafür hängt der µC auch schon 
an einem USB/UART inkl. Stromversorgung.
Wenn du die Zeit für die Verkabelung auf Lochraster mitkalkulierst, bist 
du mit günstigen Evaluationboards i.d.R. besser bedient. Die 
Erweiterungskarten kannst du immer noch auf Lochraster bauen ;)

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.