Forum: Mikrocontroller und Digitale Elektronik Baudrate umstellen?


von Helge (Gast)


Lesenswert?

Hallo
Ist es irgendwie möglich bei laufendem Programm die Baudrate der UART zu 
wechseln? Hab ein Mega163 und programmiere in C.
Die Baudrate soll von 19200 auf 9600 und zurück wechseln.Oder muß ich 
evtl. auf ein Mega128 umsteigen?
Gruß Helge

von Martin (Gast)


Lesenswert?

Hallo Helge!

Natürlich geht das. Ich habe sowas vor Kurzem bei einem 2313 gemacht. Es 
handelte sich um ein Windows-Programm, welches den Kontroller über die 
Serielle ansteuerte. Bei dem Windows-Programm konnte man die Baudrate 
einstellen.
Ich realisierte das so:
Wenn man die Baudrate des Windows-Programms umstellte z.B. von 9600 auf 
19200, dann sendete das Windows-Programm einen Befehl (9600) an den 
Atmel-Kontroller. Dieser sendete ein OK (9600) zurück. Danach wechselte 
das Windows-Programm die Baudrate und der Kontroller gleichzeitig. Auf 
diese Weise funktionierte es.
Beim Windowsprogramm musste ich in diesem Fall einfach die Serielle 
schließen und wieder mit dem neuen Wert öffnen
und beim µC habe ich einfach das Baudratenregister UBRR, welches für das 
Timing der Baudrate verantwortlich ist neu beschrieben. Zusätlich wurde 
die Baudrate im EEPROM abgespeichert.

Martin

von Helge (Gast)


Lesenswert?

Hi Martin
Ich schalte die UART über ein 4066 vom Handy zum GPS empfänger um. Nur 
wichtig ist das ich die Baudrate bei laufendem Programm ändern kann und 
nicht resetten muß.
Hab schon den Gedanken gehabt den Takt zu halbieren aber das wird wohl 
auch nichts.

von Martin (Gast)


Lesenswert?

Es handelt sich beim 163 auch um das UBRR-Register, welches man 
umschreiben muss, damit die Baudrate geändert wird. Dies funktionert 
während des Betriebes. Also es ist kein Reset nötig. Doch du solltest 
während des Wechselns nicht gerade was über die Serielle hinausschicken.

Martin

von Helge (Gast)


Lesenswert?

Na dann danke ich Dir. Ich versuche mal heute Abend mein Glück.
Gruß Helge

von Gunter (Gast)


Lesenswert?

Hi Martin,

>... Es handelte sich um ein Windows-Programm, welches den Kontroller über die 
Serielle ansteuerte

derartiges würde ich unter NT/W2k auch gerne machen. Womit hast Du das 
realisiert - was braucht man dazu ?
Generell gefragt: wie finde ich einen Einstieg in sowas ?

Gunter

von Martin (Gast)


Lesenswert?

Hallo Gunter!
Ich verwende die Programmier-Tools von National-Instruments. In der 
Schule haben wir das gelernt.
Da gibt es das Programmiertool Labview und das Programmiertool CVI.

Labview ist eine Programmiersprache, wo man keine Zeile Programmieren 
muss, sondern man zeichnet das Programm. Jedes Symbol ist eine Funktion, 
welches auf der linken Seite Eingänge besitzt und auf der rechten 
Ausgänge. Die einzelnen Funktionen sind mit Linien verbunden, die den 
Datenfluss zwischen diesen Funktionen darstellen. Es ist eine etwas 
andere Denkweise als das normale Progrmamieren, da in diesem Schaltplan, 
den man zeichnet, quasi alles parallel abläuft und man hier etwas 
aufpassen muss. Es ist jedoch nicht schlecht, wenn man Vorkenntnisse in 
C mitbringt, da die Stringformatierung darauf aufbaut.
Labview hat den Vorteil, dass man sehr schnell ein kleines Programm 
zusammen hat. Z.B. Verbindung über die Serielle oder Datei lesen, Datei 
speichern. All dies geht sehr schnell und einfach. Zu Beginn war ich 
sehr skeptisch gegenüber einer Grafiksprache, jedoch hat sich das Blatt 
schnell geändert. Man findet auch Fehler sehr schnell.
Der Nachteil besteht jedoch darin, dass das Programm bei komplexeren 
Problemen sehr kompliziert wird. Man verbringt dann schon sehr viel Zeit 
damit, dass man irgendwelche Fenster vergrößert, da sich die darin 
enthaltenen Funktionen nicht mehr ausgehen. Das ist besonders dann der 
Fall, wenn man das Programm im Nachhinein erweitern will.

Aus diesem Grund arbeite ich auch gern mit CVI. Es handelt sich um ein 
Produkt von derselben Firma. Hier programmiert man jedoch unter C. Ich 
bin mit diesem Produkt sehr zufrieden. Mit diesem Tool gibt es für den 
Hobbyanwender fast keine Grenzen mehr und trotzem bleibt das Ganze recht 
übersichtlich.  Will man ein aufwendiges Programm erweitern, so drückt 
man einfach (wie gewohnt) die Enter-Taste und fügt den Text ein.
Nachteil: Die Fehlerfindung ist (im Gegensatz zu Labview) wieder etwas 
aufwendiger. Wenn man in ein File schreiben will oder über die Serielle 
was übertragen will, dann ist alles etwas aufwendiger.

Es gibt von dieser Firma eine Homepage: http://www.ni.com/
Ich glaube man kann sich sogar wo eine Testversion runterladen. 
Beispiele sind enthalten. Ich glaube Schüler dürfen die Version gratis 
nutzen. Aber man kann ja mal anrufen und fragen.
Achtung: Die Homepage ist die Unüberschaubarkeit in Person. Ich habe die 
Erahrung gemacht, dass selbst NI-Mitarbeiter Schwirigkeiten haben bei 
ihrer Produktvielfalt den Überblick zu behalten.

Martin

von Stefan_h (Gast)


Lesenswert?

Hi,

Find ich toll jemanden zu treffen der mit CVI arbeitet.

CVI is net schlecht, aber ich würd einem Anfänger in der 
PC-Programmierung zu Visual-Basic raten. Vorallem die Kommunikation mit 
der Seriellen Schnittstelle ist leicht und schnell aufgebaut und man 
kommt leichter an eine Vollversion ran als von CVI.

lg,

Stefan

von Martin (Gast)


Lesenswert?

Hallo Stefan_h
Ich kann da leider nicht mitreden, denn ich habe nie Visual-Basic 
gelernt. Mein erstes Programm schrieb ich übrigends auf einem C64. Es 
waren meine ersten Basic-Programme. Aber ich glaube das Basic von damals 
ist in keiner Weise mit dem Visual-Basic vergleichbar.
Martin

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.