Guten Tag! Ich arbeite mit dem STM32F107VC, uVision von KEIL. Ich möchte das Nachladeregister des Timer 1 berechnen (PWM). Ich arbeite mit IST und Soll Wert. Es geht um Geschwindigkeit und Distance. Die Distance und Geschwindigkeit gebe ich in dezimalen Zahlensystem an. Der Ist Wert des Countregisters des Timers ist im Hex Format. Kann dies iergendwie umstellen, dass der Countwert in dezimaler Form daherkommt. Die Geschwindigkeit ist eben im m/S bereich, bzw. z.B. 7.5 m/s. Diese ist als Konstante Festgelegt und es ist nicht sinnvoll in Hex umzuwandeln. Vielen Dank und Gruss! M.B.
Wo hast du Hex- und Dezimalwerte? Im C-Quelltext? Da kannst du die bunt vermischen.
Hallo! Dann ist dies nicht das Problem! Ok, muss ich die dez Werte spez markieren? hex: 0x000F dez: 15 die kann ich so zusammen zählen?? Ich habe aber einen Dez Wert von 0.000000125 Das schanllt der Prozessor auch?? Danke und Gruss!
Es wird vielleicht Zeit für ein gutes C-Buch, falls du auch von C redest. Ja, man kann z.B. schreiben: i = 0x000F + 15; Auch i = 0x000F + 15 + 0.000000125 geht, wobei dir aber klar sein muß, was mit welchem Typ zusammengefasst wird. In diesem Beispiel wird in int 0x000F zu 15 addiert, dann das Ergebnis in eine double gewandelt und 0.000000125 addiert; Ergebnis ist erstmal eine double. Falls i eine int ist, wird diese double dann in eine int gewandelt (wobei die Nachkommastellen unter den Tisch fallen) und die int dann an i zugewiesen.
Gast
#2297087
M. B. schrieb: > Ich habe aber einen Dez Wert von 0.000000125 Nein. Du hast einen Fließkommawert von 0.000000125. Das ist was anderes.
Ja, das wusste ich schon, war aber nicht mehr sicher, weil beim debuggen die definierten Konstanten einen anderen Wert anzeigen, als ihre definierte Grösse. Aber dies bedeutet wahrscheinlich die Datentyp Grösse der Konstante und nicht den Zugewiesenen Wert!? danke und Gruss! M.B.
Konkret:
1 | |
Im System Viewer wird ein Wert von 3.786695316942e-270 angezeigt! Dieser Wert ist bei jeder Konstante gleich!? Wie kann ich mir den Effektiven Wert der Konstante ansehen???? Danke und Gruss M.B.
Gast
#2297125
Klaus Wachtler schrieb: > Es wird vielleicht Zeit für ein gutes C-Buch Das ist gar nicht nötig. Irgendeins, in dem die elementarsten Dinge über Zahlensysteme, Darstellung und Repräsentation im Computer behandelt werden, würde schon reichen.
M. B. schrieb: > Ich arbeite mit dem STM32F107VC, uVision von KEIL. Und für den Anfang ein paar Nummern kleiner. Statt 'arbeiten' erstmal 'basteln'.
M. B. schrieb: > Dieser Wert ist bei jeder Konstante gleich!? Vielleicht hat der Compiler ja die Konstante einfach rausoptimiert (sie ist ja schließlich per definitionem konstant, also kann er deren Wert bereits zur Compilezeit überall einsetzen), und der Debugger ist nur so blöd, dass er dir dafür trotzdem einen Wert anzuzeigen versucht? C besitzt kein Konzept echter Konstanten, sondern nur eine Art "unveränderliche Variable". Andererseits ist es natürlich dem Compiler im Rahmen seiner Optimierung freigestellt, nicht benötigte Variablen wegzuoptimieren. C++ hingegen besitzt echte Konstanten. Je nach den Fähigkeiten der Debug-Informationen und des Debuggers kann der Debugger dir diese dann entweder gar nicht mehr anzeigen (sind ja keine Variablen), oder er sollte auch tatsächlich die korrekten Informationen über die Konstanten vom Compiler weitergereicht bekommen haben. (Jaja, ich weiß, bereits Pascal kannte richtige Konstanten. ;-)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.