floatwinkel=(2*atan(sens_wert/(2*objektiv)))/(2*M_PI/360);//Blickwinkel berechnen und von Rad auf Grad umrechnen
14
floatcalc=360/winkel+1;//Bilderanzahl berechnen und um eins erhöhen
15
//--------
16
if(calc-(int)(calc)>=0.01)//Bilderanzahl ab 0,01 Aufrunden sonst Abrunden
17
calc=(int)(calc+1);
18
else
19
calc=(int)(calc);
20
floatgrad_ts=400/calc;//Anzahl der Tatsächlich benötigten Bilder, Da eine Umdrehung 400 Schritte anstelle von 360 hat
21
zgrad=(int)(grad_ts);
22
if(grad_ts-(int)(grad_ts)>=0.01)// ab 0,1 Aufrunden sonst Abrunden
23
bilder=(int)(grad_ts+1);
24
else
25
bilder=(int)(grad_ts);
26
return;
27
}
Der Wert für zgrad und bilder passen von forn bis hinten nicht :-(
Die Werte die er momentan einlesen sollte von den Arrays sind:
atan_wert=50
sens_wert=36
Wäre super wenn einer eine Idee hat :-)
Da stimme ich meinem Vorredner zu! Solche Anfragen sollten schon
vernünftig gestellt werden.
-Ziel möglichst genau beschreiben(Soll)
-Ist Situation beschreiben(Code gepostet, na immerhin)
-Probleme/Abweichungen vom Soll möglichst genau beschreiben.
Wenn du dir die Mühe gemacht hast, mache ich mir die Mühe, dir zu
erklären, in welchen Zeilen es hakt.
Also: Ich Schreibe mit dem Atmel Studio V7.0, und verwende den Combiler,
der dabei ist. der Code sollte auf einem ATMEGA 32 laufen. Das
Combilieren funktioniert. Beim Ausführen jedoch kommen offensichtlich
falsche Werte raus. Ich habe aber keine Idee woran es liegen könnte.
Vieleicht sieht ja einer mit einem geübten Auge etwas Problematisches an
dem Cood.
Schon die ersten paar Zeilen, die Initialisierungen der Pointer mit 0,
sind Bockmist. Entweder ist das nicht der Code den du wirklich
verwendest, oder es fehlen Grundkenntnisse.
>Beim Ausführen jedoch kommen offensichtlich>falsche Werte raus. Ich habe aber keine Idee woran es liegen könnte.
Du solltest Dich gründlich mit einem C-Buch beschäftigen, bevor Du hier
wieder aufschlägst.
Hi,
Erstens, fehlen sicher Grundkenntnisse, sonst würde ich nicht um Hilfe
Bitten.
Zweitens, sind die anderen Rückgabewerte derweil noch nicht
ausprogrammiert,
Aber danke für ein paar Nutzlose Zeilen
Wünsche allen noch ein schönes Leben
Du lernst nur was wenn du selber in deinen Code rein siehst, nicht wenn
du uns als Hilfskodierer rekrutierst, die dir den Karren aus dem Dreck
ziehen.
Du hast schon einen klaren Hinweis bekommen wo du gucken musst. Dein
Problem wenn du nicht gucken willst.
Wenn die 4 übergeben Zeiger zuerst auf NULL gesetzt werden, dann sind
sie unbrauchbar.
C-Tutorial/Buch lesen:
"Was macht ein '*' vor einer Variablen?"
Auf einem AVR zeigt (int*)0 übrigens auf R0:R1. Da gibt es kein
C0000005-Fehler/SegmentViolantion, denn 0 ist eine gültige RAM-Adresse.
Nur was so ein Programm macht, das ist eher Zufall.
Harald U. schrieb:> Erstens, fehlen sicher Grundkenntnisse,Hannes J. schrieb:> Du hast schon einen klaren Hinweis bekommen wo du gucken musst.Hannes J. schrieb:> Schon die ersten paar Zeilen, die Initialisierungen der Pointer mit 0,> sind Bockmist.
@Harald
Dann schau mal in dein C-Buch (Pointer-Kapitel). Was passiert hier?:
1
xgrad=0;
2
ygrad=0;
3
zgrad=0;
4
bilder=0;
Was passiert hier?:
1
if(grad_ts-(int)(grad_ts)>=0.01)// ab 0,1 Aufrunden sonst Abrunden
Erstmal danke für die Hinweise.
Nachdem ich mich wieder beruhigt habe, Ich habe keine Ahnung was der *
davor bedeutet. Ich "programmiere" seit 4 Monaten C. Bei den 1330
restlichen Zeilen meiner zwei Miniprogramme (wahrscheinlich für 99% von
euch nur Lachhaft) habe ich das nicht gebraucht. Ein C Buch besitze ich
nicht. Bis jetzt hab ich mir bis auf eine andere Frage hier im Forum
alles selbst beigebracht und er recherchiert. Ich finde es schade wenn
in Foren gleich solche Kommentare kommen, wobei auch sicher meiner Seits
etwas überreagiert wurde. Ich bin auch keine 16 mehr.
Nach einer gewissen Zeit vorm Computer sieht man einfache Sachen, sofern
man sie überhaupt kennt, nicht mehr.
Dennoch Danke fürs darauf schauen.
Paplick Fjuer schrieb im Beitrag #4634819:
> Bei Dir scheint's wohl eher an der weichen Birne zu liegen. Wenn ich> irgendwas von Dir lese, dann ist immer die Schnauze weit auf.
Hannes hat als Erster den Hinweis auf das Nullsetzen der Zeiger
geliefert,
das ist 100x nützlicher als dein Beitrag.
Warum gibst DU dem TO keine Hilfe?
Harald U. schrieb:> Wäre super wenn einer eine Idee hat :-)
Du könnest selber die C-Tags um deinen Code machen, dann muss ich
das nicht tun...
Über jeder Eingabebox steht das hier:
1
Antwort schreiben
2
Wichtige Regeln - erst lesen, dann posten!
3
...
4
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
Harald U. schrieb:> Kann mir einer sagen was daran falsch ist ?Harald U. schrieb:> Beim Ausführen jedoch kommen offensichtlich> falsche Werte raus. Ich habe aber keine Idee woran es liegen könnte.
Der µC wird richtig rechnen - ist doch kein Pentium.
Vermutlich ist deine Erwartungshaltung an die Funktion des von dir in
den Compiler gefütterten Codes und an das Ergebnis falsch.