www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommunikation PC-Atmega32 per UART


Autor: UART-Boy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Atmega32 möchte ich gerne per UART und einer GUI auf dem PC 
konfigurieren. Soweit funktioniert die Kommunikation auch. Einziges 
Problem was ich jetzt habe ist der Aufbau der Kommunikation. Es muss 
immer erst der "Config"-Button der GUI angeklicket werden. Jetzt wird in 
einer while-Schleife auf ein Zeichen des Atmels gewartet. Dieses wird 
gesendet, wenn ein Taster auf dem Atmel-Board betätigt wird. Dann werden 
die Daten jeweils ausgetauscht. Nun will ich aber erreichen, dass es 
egal ist, ob ich erst den Config-Button anklicke oder den Taster auf dem 
Board. Ein erster Versuch war, dass der Controller einmal in der Sekunde 
ein Zeichen sendet. Wenn ich jetzt den Config-Button klicke, wartet die 
GUI auf das Zeichen, empfängt es und macht ganz normal weiter. Das 
Problem was ich jetzt habe ist das die GUI abstürzt, wenn ich erst die 
Taste drücke und dann den Config-Button klicke. Umgekehrt funktioniert 
alles wie gehabt. Ich vermute, das Problem liegt nicht auf der 
Controller-Seite. Für die GUI nutze ich Qt mit der QextSerialPort 
Bibliothek.

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Dein GUI abstuerzt weil ein Zeichen ueber die serielle 
Schnittstelle empfangen wird, wuerde ich den Fehler erstmal nicht im 
Controller suchen... ;)

Volker

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
IMHO ist dieses ganze Vorgehen Mist.

Nichts gegen Autoconfig. Das ist super, wenn es in einem Einstelldialog 
angeboten wird (obwohl man das meistens sowieso nicht braucht. Ein 
halbwegs Nicht-DAU Benutzer kennt die Baudrate, die sein angeschlossenes 
Gerät benutzt).

Aber für den täglichen Hausgebrauch reicht es völlig aus, wenn das 
PC-Programm die Einstellung der Schnittstelle zb in der Registry 
speichert und sie von dort beim nächsten Programmstart wieder 
restauriert.

> Das Problem was ich jetzt habe ist das die GUI abstürzt, wenn
> ich erst die Taste drücke und dann den Config-Button klicke.

Programm unter Debugger Kontrolle laufen lassen und nachsehen, wo der 
Absturz passiert. Eventuell auf dem Stack die Aufrufhierarchie verfolgen 
um Nachszusehen wie es zum Absturz gekommen ist.

Aber in erster Linie würde ich dieses Zwangs-Autoconfig ausbauen.

Autor: UART-Boy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau ist mit Autoconfig gemeint? Falls es sich dabei um Baudrate, 
etc. handelt, so lege ich diese Konfigruation selber im Quellcode fest.
Wenn ich den Debugger beim Atmel mitlaufen lasse und hier und da 
Breakpoints setzte, habe ich das oben von mir beschriebende Problem 
komischer Weise nicht.

Autor: UART-Boy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist noch etwas aufgefallen. Wenn ich debugge, dann den 
Programmablauf stoppe, ist das Receive Interupt Flag aktiviert. Erst 
wenn ich es händisch lösche läuft die Kommunikation ganz normal weiter.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART-Boy schrieb:
> Was genau ist mit Autoconfig gemeint? Falls es sich dabei um Baudrate,
> etc. handelt, so lege ich diese Konfigruation selber im Quellcode fest.

Uups.
Dann hab ich wohl das hier

> Es muss
> immer erst der "Config"-Button der GUI angeklicket werden. Jetzt
> wird in einer while-Schleife auf ein Zeichen des Atmels gewartet.
> Dieses wird gesendet, wenn ein Taster auf dem Atmel-Board betätigt
> wird. Dann werden die Daten jeweils ausgetauscht.

misinterpretiert.
Mea culpa. Tut mir leid.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UART-Boy schrieb:

> Wenn ich den Debugger beim Atmel mitlaufen lasse und hier und da
> Breakpoints setzte, habe ich das oben von mir beschriebende Problem
> komischer Weise nicht.

Du musst auf PC Seite nach dem Problem suchen.
Das kann alles mögliche sein.

Autor: UART-Boy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was macht dich so sicher, dass ich das Problem auf dem PC suchen muss?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine GUI läuft auf dem PC.
Und es ist dein GUI Programm, das abstürzt.

Mag sein, dass dein µC dem PC irgendetwas sendet, was der nicht 
erwartet. Aber ein Programm, welches crasht, hat immer einen Bug. Egal 
was der µC zum PC sendet, das Programm auf dem PC MUSS damit klarkommen 
und darf auf keinen Fall abschmieren.

Wenn in deinem Auto das Wasser steht, ist der Fehler auch beim Auto zu 
suchen und nicht bei der Waschstrasse durch die du gefahren bist.

Autor: UART-Boy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt das Problem behoben, indem ich die Uart-Schnittstelle des 
Microcontroller einmal in der Sekunde neu initialisiere, solange bis die 
Kommunikation aufgebaut ist. Die GUI schneint damit Probleme zu haben, 
wenn ich von der Uart-Schnittstelle des Mic. etwas sende und dann erst 
die Uart-Schnittstelle auf dem PC initalisiere und dann etwas empfangen 
will.

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das macht zwar keinen Sinn, aber Hauptsache ist ja dass es funktioniert. 
;)

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.