Hallo zusammen,

ich habe mir ein VB.Net Programm geschrieben wo ich an einen Ic (Atmega16) warte Zeiten ändern. Die Übertragung von VB zum Ic soll in Ascii code passieren. Die Umwandlung in VB funktioniert
super, lasse es mir in einer Textbox anzeigen.
Wenn ich im Ic die Variable x (als Char oder uint8_t) umwandle und damit z.B. eine warte Zeit einstellen möchte geht das nicht.
Ich habe mir auch schon die Variable x als Ascii wider an den Pc geschickt da kommen immer unterschiedliche Werte an. Selbst wenn ich direkt ein Ascii Variable schicke.
[CODE]
#include <avr/io.h>
#include <stdlib.h>
#include <inttypes.h>
#include <util/delay.h>

#define F_CPU 1000000 /* evtl. bereits via Compilerparameter definiert */
#define BAUD 9600UL // Baudrate

// Berechnungen
#define UBRR_VAL ((F_CPU+BAUD*/(BAUD*16)-1) // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.


static void Rot (void)
{
PORTB = (~(1<<PIN0) & ~(0<<PIN1) & ~(0<<PIN2) & ~(0<<PIN2) & ~(1<<PIN3) & ~(0<<PIN4) & ~(0<<PIN5) & ~(0<<PIN5) & ~(1<<PIN6) & ~(0<<PIN7));
}

//----------------------------------------------------------------------------------------------------

// UART konfig

void uart_init (void)
{
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;

UCSRB |= (1<<TXEN) | (1<<RXEN); //UART TX und RX einschalten
UCSRC = (1<<URSEL) |(1<<UCSZ1) | (1<<UCSZ0); //Asynchron 8N1
}

//----------------------------------------------------------------------------------------------------

//Senden
int uart_putc(uint8_t z)
{
while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
{
}
UDR = z; /* sende Zeichen */
return 0;
}

//----------------------------------------------------------------------------------------------------

//Empfanen
uint8_t uart_getc(void)
{
while (!(UCSRA & (1<<RXC)))
;
return UDR;
}

//----------------------------------------------------------------------------------------------------

int main (void)
{


uint8_t x;

uint8_t c; //Ascii kommen

uint8_t z; //Ascii gehen

uint8_t t; //Variable für Zeitwert

//Ausgangs Port Festgelegt
DDRB = 0xFF;
PORTB = 0xFF;

uart_init(); //UART deklarit

while (1)
{

c = uart_getc(); //Variable c mpfange
x = atoi (c); //Ascii variable c in variable x umwandeln

itoa (65, z, 10); //65 in Ascii umwandeln entspricht A zum Testen

uart_putc(z); //variable z (65, A) an Pc senden

t = x * 100; //Auf sekungen umwandeln

PORTB = Rot; //Port B schalten
_delay_ms(t); //WarteZeit t
PORTB =0xFF; //Port B ausschalten
_delay_ms(t); //WarteZeit t
PORTB = Rot; //Port B schalten
_delay_ms(t); //WarteZeit t
PORTB =0xFF; //Port B ausschalten
}

return 0; // never reached

}
[/CO