Gast
#179324
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