mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR: UART Routen


Autor: Paul C (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich habe folgendes Problem: Ich möchte mit zwei ATmegas einen 
MIDI-Controller mit 16 controllern (jeweils 8 Schiebe- und 8 Drehpotis) 
aufbauen. Der erste µC arbeitet dabei sozusagen als Host, sammelt die 
Potistellungen und sendet entsprechende Daten per MIDI raus. µC 2 liest 
lediglich die Werte von 8 der Potis aus und sendet diese nach Anfrage 
des ersten µCs per UART an den ersten. Dabei soll die Anfrage vom ersten 
aus möglichst auch per UART heraus gehen, allerdings benötige ich den 
UART auch zum senden meines MIDI-Krams. Jetzt meine Konkrete Frage: 
Ginge es, wenn ich den UART verzweige und dann einfach mit bestimmten 
PINs verunde (mithilfe von ICs), die ich dann zum codieren des Routings 
verwende? Wenn Pin 1 gesetzt ist, gehen die Daten an den anderen µC 
raus, wenn Pin 2 gesetzt ist, dann an die MIDI Devices?
Geht das so überhaupt, oder bekomme ich mit den UND-Gattern irgendwelche 
Probleme, die ich so nicht absehen kann? Wäre ein weicher UART oder eine 
Anfrage über parallele Datenleitungen vielleicht die bessere Lösung?

Ich würde mich freuen, wenn jemand eine kompetente Antwort darauf hätte 
und auch bereit wäre, diese mit mir zu teilen :)

Cheers,
Paul

Autor: Testfall (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grundsatzfrage:
Warum zwei Controller? Mindestens einer langweilt sich zu Tode.

Idee:
Nimm doch SPI zum Daten übertragen zwischen den beiden Controllern. Oder 
I²C.
Natürlich nur, wenn die Software-UART so zuwider ist, dass du es nicht 
verwenden kannst.

Alternative:
Mik mit zwei UARTs. Gibt's.

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART + UND Gatter sollte gehen, auf den Speed achten

es gibt noch die Möglichkeit einer Soft-UART

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da der Ruhepegel am µC-TxD-Ausgang „high“ ist, solltest Du mit einem 
Oder-Gatter multiplexen.  Sonst empfängt der lahmgelegte Zweig Breaks.

Autor: Paul C (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@docean:
Das ist doch mal ein Wort :) Kann man denn davon ausgehen, dass ein 
Standard-IC mit den Raten, mit denen man normalerweise so sendet 
(wahrscheinlich 31250 Baud, damit ich die BR nicht dauern umschalten 
muss) dafür fix genug ist?

@mizsch:
D.h. ich sollte dann, solange auf dem Port nichts kommt, den UART mit 1 
verodern und dann, wenn was kommt mit 0!? Klingt gut soweit.

Vielen Dank für eure Hilfe, das hat mir sehr weitergeholfen :)

Cheers

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geschwindigkeit des Gatters:  Ja natürlich, das reicht.

Worauf Du aber achten solltest:  Du darfst den Sender erst von einer 
Leitung wegschalten (und ggfs. auf die nächste drauf), wenn das letzte 
Zeichen komplett gesendet ist.  Das ist nicht der gleiche Zeitpunkt wie 
der, zu dem der UART meldet, dass er bereit fürs nächste Zeichen ist. 
Letzteres wäre beim AVR beispielsweise das Bit UDRE.  Das Bit, das 
anzeigt, dass komplett gesendet wurde, ist ein anderes und heißt dort 
aber TXC.

Edit: Und, ja, wenn Du über ein Oder-Gatter multiplexst, wird mit 0 
durchgeschaltet.

Autor: Paul C (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, vielen Dank für den Hinweis. Unterschied hatte ich schonmal 
gelesen, ich weiß aber nicht, ob mir das so präsent gewesen wäre ;) 
Hätte mir ganz schön Kopfschmerzen bereiten können :)

Ja, hatt ich mir gedacht, dass die Geschwindigkeit des Gatters reichen 
würde, ich wollte aber sicher gehen.

Vielen Dank nochmal

Autor: Artur H. (hohoho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich frage mich aber echt, warum du 2 Controller verwenden willst ...

Ich habe vorgestern erst einen MIDI-Controller auf Basis eines ATmega128 
( kleiner geht auch noch ;) ) fertiggestellt ... 32 Taster und 16 Potis 
( 16x Oversampling ), trotzdem langweilt sich der Mega128 noch.
Die AD-Kanäle kann man wunderbar multiplexen ( habe dafür 4052er 
verwendet ), sodass man dafür keinen extra uC braucht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.