2 krumme UART Baudraten in einem µC ?

Gast #143104
Moin!

ich muss mir ein kleines MIDI / Seriell Tool bauen, d.h. ich brauche
einen Controller mit 2 UARTS (z.B. MEGA128). Soweit kein Problem,
allerdings hat die Midischnittstelle 31250 Baud und die serielle soll
eben eine Standardbaudrate verwenden. Wie soll ich das nun mit den
Quarzen lösen, es gibt keinen Quarz mit dem ich für beide Ports an
Baudratenabweichungen um die 0% hinkomme ?!
Kann man vielleicht einen 2. Quarz(oszillator) noch irgendwie anhängen
? Im Datenblatt ist das bei "synchronous mode" angedeutet, bin mit
aber nicht sicher ob's das ist...

MfG
Stefan
Gast #143105
Geht denn das nicht über einen externen Timer, der einen Port-In füttert
und durchgeschleift wird? Das einzige, was dort dann jittert wäre die
Reaktion des Prozzis auf den Port, was bei dem 128er von der
Geschwindigkeit kein Thema sein sosllte, oder?
Die MIDI-Uart wäre dann halt in Software ...
Gast #143106
Hi,

bei 8,0000 MHz kriegt man die 31250 glatt hin und zum Beispiel 38400
mit einem Fehler von 0,17%. Das funktioniert schon noch :)

Viele Grüße


PS: Kein Gewähr und so...
Gast #143107
Danke Thomas,

jo, darauf wirds wohl hinauslaufen müssen... Ist nur die Frage ob ein
Fehler von 0,17% wahnsinnig schlimm oder wahnsinnig Banane ist. Naja,
bleibt nur testen. Vom Gefühl her sollts aber noch ok sein...

Danke,

Stefan
Gast #143108
Ein Fehler <3% funktioniert zwar, für die Endlösung sollte der Fehler
aber <1% liegen, dann hat man eigentlich nie Fehler bei der
Übertragung.
Gast #143109
Soll denn dieses Adapter nichts anderes machen, als nur PC-Signale auf
Midi umsetzen? Dann wäre auch eine Software-UART möglich. Das heißt: Du
kannst einen kleineren Controller benutzen, nimmst die eingebaute UART
für das MIDI und die Software-UART für den PC.
Gast #143110
Uäha, Software UART, genau das wollte ich vermeiden. Von sowas hab ich
eine Phobie seit ich auf einem ATTiny26 einen I2C Slave programmieren
musste ;-)

Und wie gut ist die Ganggenauigkeiten von Software UARTs ?

Stefan
Gast #143113
Hmm, aber wenn man das so "gut" machen will wie die Hardware UART
(siehe Datenblatt, da wird jedes bit 3x gesampelt und so Störspitzen
unterdrückt) isses doch ziemliches gewurstel. Werd mir warscheinlich
dann einen Mega162 greifen, 8MHz dran, dann stimmt die Midibaudrate
haargenau, und die 38k4 gehen um 0,17% daneben. Viel lieber wäre mir
57k6, aber da ist dann der Fehler zu groß, aber 38k4 ist auch ok...

Stefan
Gast #143114
noch ne Möglichkeit: die SPI-UART von Maxim. Leider etwas teuer, hat mir
aber mal ein Design gerettet (Zusatzplatine auf den ISP-Stecker des
MC-Boards :-)), nachdem nachträglich weitere Anforderungen kamen. 400
Platinen waren schon komplett bestückt, Kunde war froh, dass die
Platinen mit erträglichem Aufwand nutzbar blieben.
Gast #143116
Grummel, Rechnen sollte man können, hatte in meinem Excel Datasheet
viele Quarze getestet, aber kurz vor 12 MHz ist was dazwischengekommen
;-)

Danke Peter, so isses dann optimal für mich !

Stefan

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.