Ein Versuch in C
Verfasst: Do Jun 04, 2009 5:50 pm
Hallo,
erstmal ein Dankeschön an diese Plattform, hat mir zu den ersten Gehversuchen in C sehr geholfen.
Ich programmiere ansich meine Microcontroller in Assembler auf dem AVR-Studio, was jetzt aber nicht möglich ist.
Muss für mein Hobbyprojekt (Modell-U-Boot) einige complexe Rechenfunktionen durchführen und zwar mit den Funktionen
double cos(x) und atan(x) um damit meinen Kurs zu berechnen. Wenn es irgendwo dafür Codeschnipsel in Assembler gibt hab ich mein Problem gelöst.
Die Anfänge von meinem Programm sehen so aus:
Dieser Anfang vom Programm lässt sich fehlerfrei übersetzen, sagt wohl noch nicht viel.
Jetzt Habe ich mit dem Tracen mal versucht meine errechneten Werte im RAM-Bereich zu finden, was nicht gelang.
Nun meine Fragen:
Wie finde ich meine Werte z.B. im RAM wieder?
Rechnet mir das Programm überhaupt die Werte aus, müsste für BU 3,637 sein ....finde den Wert bloss nicht?
Wäre nett, wenn jemand mal einen Blick aufs "Progrämmchen" werfen könnte.
Achja bin schon im Rentenalter und habe sowas wie hier nie gelernt!
Gruss aus Bayern
Gerd
/* edit by Xin: Codeflags eingefügt */
erstmal ein Dankeschön an diese Plattform, hat mir zu den ersten Gehversuchen in C sehr geholfen.
Ich programmiere ansich meine Microcontroller in Assembler auf dem AVR-Studio, was jetzt aber nicht möglich ist.
Muss für mein Hobbyprojekt (Modell-U-Boot) einige complexe Rechenfunktionen durchführen und zwar mit den Funktionen
double cos(x) und atan(x) um damit meinen Kurs zu berechnen. Wenn es irgendwo dafür Codeschnipsel in Assembler gibt hab ich mein Problem gelöst.
Die Anfänge von meinem Programm sehen so aus:
Code: Alles auswählen
#include <avr/io.h>
#include <math.h>
double BA = 5936.841; // Startposition Breitengrad N
double LA = 515.258; // Startposition Längengrad E
double BZ = 5933.204; // Zielposition Breitengrad N
double LZ = 512.688; // Zielposition Längengrad E
double BU = 0; // Breigengradunterschied
double MB = 0; // Mittelbreite
double LU = 0; // Längengradunterschied
double AW = 0; // Abweitung
double WA = 0; // Winkel alpha
double WI = 360; // verwendeter Winkelbreich
double ZR = 0; // Zielrichtung
double Dummy = 0;
int main ()
{
BU = BA - BZ; // Unterschied Breitengrad berechnen
return BU;
MB = BA - BU/2; // Mittelbreite berechnen
return MB;
}
Jetzt Habe ich mit dem Tracen mal versucht meine errechneten Werte im RAM-Bereich zu finden, was nicht gelang.
Nun meine Fragen:
Wie finde ich meine Werte z.B. im RAM wieder?
Rechnet mir das Programm überhaupt die Werte aus, müsste für BU 3,637 sein ....finde den Wert bloss nicht?
Wäre nett, wenn jemand mal einen Blick aufs "Progrämmchen" werfen könnte.
Achja bin schon im Rentenalter und habe sowas wie hier nie gelernt!
Gruss aus Bayern
Gerd
/* edit by Xin: Codeflags eingefügt */