www.mikrocontroller.net

Forum: Compiler & IDEs Probleme mit der seriellen Kommunikation


Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich sende Daten (Zahlen) als char array zuwischen PC und Atmega 16 hin
und her.
Die Zahlen werden als Bytes verpackt d.h. ich müsste Zahlen im Bereich
0-255 bzw -128-127 pro Byte senden können.
Leider kommen Zahlen größer als 127 nur als 63 an. also 0011_1111.
Ich finde den Fehler nicht. Leider ist das mit dem debug bei der
Seriellen Kommunikation ncith so leicht, aber bevor es an die UART im
MC geht lasse ich den Wert über die LEDs ausgeben und da stimmt der
Wert noch. Auf dem PC kommt leider im Empfangspuffer(ich nutze die C#
express beta, weil das die sereielle Schnittstelle recht einfach zu
beherrschen ist).

Hier mal meine Uart sendemethoden. Sind die üblichen halt nochn bissel
für mich angepasst.

void USART_transmit (unsigned char c) {
  while (!(UCSRA & (1<<UDRE))) {}
  UDR = c;
}

void USART_transmit_string (unsigned char *string,unsigned char lenght)
{
    while (!(UCSRA & (1<<UDRE))) {}
  for(int i=0;i<lenght;i++)//while ( *string!=0x00)//while ( *string)
    USART_transmit (*string++); //geht im string weiter und gibt zeichen
für zeichen aus
}

wen es wundert, dass ich die Läng mit angebe, das liegt daran, dass ich
den gesammten Wertebereich eines Bytes brauche ich kann also nicht auf
null oder enter oder ähnlich abfragen.

Ich wär Euch für schnelle Hilfe oder Denkanstöße dankbar

Gruß

Steffen

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt direkt in der UART:Transmit Methode eine 255 übertragen
also ohne Parameterübergabe. Resultat ist, dass auch eine 63 auf dem pc
erkannt wird. Eventuell liegt das Problem am C# :(
Ist als ob er Daten die ausserhalb des 7-bit ascii bereiches einfach 63
setzt.

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die Parität und Anzahl der Stopbits auf beiden Seiten gleich
eingestellt?

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es liegt nicth am MC die Daten kommen am PC einwandfrei an. das Problem
muss also in meinem C# Programm sein.
Die einstellungen für die serielle-Schnittstelle hab ich schon x mal
kontrolliert....:(

gruß

steffen

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs

es lag an dieser Zeile. Bwziehungsweise an deren nicht VOrhandeinsein.


sp.Encoding = System.Text.Encoding.GetEncoding("iso-8859-9");

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss, hat nichts mit dein Problem zu tun, aber kannst Du mal was
näheres über das "C# express beta" erzählen ?

mirki

Autor: Steffen Brüssel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willst du denn wissen?
Das ist sozusagen die c# auskopplung aus dem, hoffendlich dieses Jahr
erscheinendem, Visual Studio 2005.
Es nutzt das Framework 2.0 beta. Der Vorteil(für mich im moment
wichtig) zum aktuellen 1.1 Framework ist, dass es eine Klasse
SerialPort gibt. Hier kann ich sehr einfach alles Parametrieren. Es
gibt events die ausgelöst werden, wenn der PC etwas empfangen hat.
Auf dem framework 1.1 muss man sehr viel mehr 'drumherum'
programmieren. Ich fand das zu aufwändig. Zumal ich mich ja nicht
primär um die Entwicklung einscher Schnittstellenkommunikation kümmere
sondern diese nur nutzen will.

Die beta kannste bei MS herunterladen. Auch das komplette Visual Studio
2005 beta. Andernfalls kannst du es auch für 5 Euro auf DVD nach hause
geschickt bekommen.

Steffen

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.