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
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.
UART + UND Gatter sollte gehen, auf den Speed achten es gibt noch die Möglichkeit einer Soft-UART
Da der Ruhepegel am µC-TxD-Ausgang „high“ ist, solltest Du mit einem Oder-Gatter multiplexen. Sonst empfängt der lahmgelegte Zweig Breaks.
@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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.