Hallo,
Ich habe ein Problem damit eine Variable du beschreiben.
Ich versuche einen String über die Serielle Schnittstelle über einen
Recieve Interrupt einzulesen, was soweit funktioniert. Danach versuche
ich den String mit hilfe der atoi() Funktion in einen Int Wert
umzuwandeln welcher dann auch gleich in eine Global deklarierte Variable
geschrieben werden soll. Doch wenn ich dann in der Main-Loop versuche
diesen Wert abzurufen hat die Variable immer noch ihren initialen Wert.
Woran könnte das liegen?
Mit Freundlichen Grüßen.
Lukas W.
Hier noch ein paar Infos was ich dazu verwende:
Mikrocontroller: Atmega328P
Programmierumgebung: Atmel Studio 7
Programmieradapter: AVR Dragon
Code für die Umwandlung in den String.
1 | ISR(USART0_RX_vect)
|
2 | {
|
3 |
|
4 | static int counter = 0;
|
5 | char income = UDR0;
|
6 |
|
7 | if(income != '\r')
|
8 | {
|
9 | if(((income >= '0') & (income <= '9')) || income == ',')
|
10 | {
|
11 | recv_string[counter] = income;
|
12 | counter++;
|
13 | }
|
14 | else
|
15 | {
|
16 | printf("Wrong character (only numbers and commas)");
|
17 | }
|
18 | }
|
19 | else
|
20 | {
|
21 | recv_string[counter] = '\r';
|
22 | conv_cmd_string();
|
23 | }
|
24 | }
|
Code für die Umwandlung des Strings und Speichern in die Globale
Variable.
cmd_value und val_value sind die global deklarierten Variablen.
1 | void conv_cmd_string(void)
|
2 | {
|
3 | int cmd_val = 0;
|
4 | int counter = 0;
|
5 | int cmd_counter = 0;
|
6 | int val_counter = 0;
|
7 | int x = 0;
|
8 | int y = 0;
|
9 |
|
10 | if(cmd_val == 0)
|
11 | {
|
12 | for(cmd_counter = 0;recv_string[counter] != ',';counter++)
|
13 | {
|
14 | cmd_buffer[cmd_counter] = recv_string[counter];
|
15 | cmd_counter++;
|
16 | }
|
17 | counter++;
|
18 | cmd_val = 1;
|
19 | }
|
20 |
|
21 | if(cmd_val == 1)
|
22 | {
|
23 | for(val_counter = 0;recv_string[counter] != '\r';counter++)
|
24 | {
|
25 | val_buffer[val_counter] = recv_string[counter];
|
26 | val_counter++;
|
27 | }
|
28 | }
|
29 | cmd_value = atoi(cmd_buffer);
|
30 | val_value = atoi(val_buffer);
|
31 | }
|