Hallo.
Vorne weg: Ich nutze einen ATmega32 und AVRStudio 4.18
Ich habe folgendes Problem:
Mit einer Matrizenrechnung berechne ich Sensorwerte. Dazu verwende ich
ein mehrdimensionales Array
Wenn ich matrix[4][3] bereits mit Werten vorbelege und compiliere
funktioniert auch alles einwandfrei.
Nun möchte ich aber über HTerm mittels RS-232 die einzelnen matrix-Werte
an matrix[4][3] übergeben.Diese sollen im EEPROM abgelegt werden.
Der Ablauf ist dabei folgender:
1 | double eeprom_array[12] EEMEM; // ist mein Eeprom-Array
|
- alle 12 Werte werden über UART RX Interrupt empfangen und in
abgelegt.
- sind alle übermittelt wurden, dann
1 | eeprom_write_block(©_array[i++],&eeprom_array[i++],sizeof(copy_array));
|
Dann hole ich mir die Werte mittels
1 | eeprom_read_block(&matrix[s][t],&eeprom_array[i++],sizeof(matrix));
|
(s,t,i werden natürlich entsprechend hochgezählt)
In matrix[4][3] stehen dann auch die Werte genauso drin, wie ich sie
über HTerm übergeben habe.Das Problem ist nur, wenn ich nun meine
Berechnungen mit der Matrix durchführe, kommen total irrsinnige Werte
bzw. auch -1.#QNAN raus.
Ich muss dazu aber noch erwähnen, dass es sich bei den Matrixwerten um
Gleitkommawerte mit teilweise Potenz 1E-7 handelt.
Eine Berechnung sieht dann z.B. so aus:
1 | sensorX = x * matrix[0][0] + y * matrix[0][1] + z * matrix[0][2];
|
Muss ich etwa den Datentyp der arrays auf float ändern??Wäre jetzt eine
Vermutung von mir.
Vielen Dank schonmal,Sven