Gast
#1321466
Ich verwende ein ATMEGA32 für die ansteuerung einiger Schrittmotoren... Hier ist es natürlich zweckmäßig... für größere Verfahrwege die aktuelle Position sowie die "Fahraufträge" mit dem Typ LONG zu speichern... Bei der konvertierung der über die UART Schnittstelle reinkommenden Zahlen gibt es allerdings probleme: anscheinend funktioniert die "atol" funktion nicht richtig. mit "atoi" wie im Beispiel angegeben funktioniert alles (natürlich nur bis die Anzahl der schritte größer als der int wird)... sobald ich das mit "atol" ersetze wird xdestination immer =0... für größere Zahlen ergibt sich allerdings ein wert: z.B. eingabe:1000000 -> xdestination=15... hat jemand eine Idee?? Vielen Dank im Voraus Christian P.S.: Sorry für den grausamen code :-D Code: <-schnipp unsigned char in_data[110]; unsigned char out_data[110]; int verbose; long x_actual=0; long x_destination=0; long temp_long; if (strncmp(in_data,"xsteptorel=",11) == 0) { // x_destination = x_actual + (2 * atoi((&in_data[11]))); x_destination = x_actual + (2 * atol((&in_data[11]))); if (verbose == 1) { temp_long = atol((&in_data[11])); UARTWrite("Fahre jetzt "); sprintf(out_data, "%d", temp_long); UARTWrite(out_data); UARTWrite(" Schritte!!!\n\r"); } <-schnapp