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
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.
Ist die Parität und Anzahl der Stopbits auf beiden Seiten gleich eingestellt?
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
Ich habs es lag an dieser Zeile. Bwziehungsweise an deren nicht VOrhandeinsein. sp.Encoding = System.Text.Encoding.GetEncoding("iso-8859-9");
Ich weiss, hat nichts mit dein Problem zu tun, aber kannst Du mal was näheres über das "C# express beta" erzählen ? mirki
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.