Forum: Mikrocontroller und Digitale Elektronik 2 krumme UART Baudraten in einem µC ?


von Stefan Seegel (Gast)


Lesenswert?

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

von Jürgen Schuhmacher (Gast)


Lesenswert?

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 ...

von Thomas Burkhardt (Gast)


Lesenswert?

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...

von Stefan Seegel (Gast)


Lesenswert?

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

von Benedikt (Gast)


Lesenswert?

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.

von thkais (Gast)


Lesenswert?

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.

von Stefan Seegel (Gast)


Lesenswert?

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

von peter dannegger (Gast)


Lesenswert?

Also alles unter 1% ist voll O.K.

Brauchst also keine Soft-UART.

Ein ATMega162 tuts.


Peter

von thkais (Gast)


Lesenswert?

Ein Software-UART ist doch überhaupt nicht tragisch. Wenn man das Ganze
Timer-basiert macht, ist er genauso genau wie das Quarz.

von Stefan Seegel (Gast)


Lesenswert?

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

von crazy horse (Gast)


Lesenswert?

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.

von peter dannegger (Gast)


Lesenswert?

Nimm doch ein 12MHz Quarz, dann ist der Fehler bei 57600 Baud 0,16%.


Peter

von Stefan Seegel (Gast)


Lesenswert?

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

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.