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?
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
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
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 ...)
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?
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.
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...
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.
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.
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 ;)