App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Float Variable auf 16Bit Microcontroller
- Ersteller iceman21
- Erstellt am
Ich bin momentan völlig verunsichert oder besser gesagt verwirrt.
In einem Projekt muss ich auf nem 16Bit Microcontroller mit floats arbeiten komme aber
auf keinen grünen Zweig, da ich mir nicht sicher bin was der MC mit Zahlen wie bspw.
1200000 anstellt.
Daher meine Frage, kann ein 16 Bit MC ohne größere Probleme mit Zahlen größer 2^16 umgehen?
Schon mal danke für hilfreiche Antworten
In einem Projekt muss ich auf nem 16Bit Microcontroller mit floats arbeiten komme aber
auf keinen grünen Zweig, da ich mir nicht sicher bin was der MC mit Zahlen wie bspw.
1200000 anstellt.
Daher meine Frage, kann ein 16 Bit MC ohne größere Probleme mit Zahlen größer 2^16 umgehen?
Schon mal danke für hilfreiche Antworten
Nachtschicht
Admiral Special
Wenn du nicht gerade in Assembler programmierst, dann sollte es auch einfach möglich sein. Einfach mal einen Blick in die Beschreibung des Compilers werfen (C?).Daher meine Frage, kann ein 16 Bit MC ohne größere Probleme mit Zahlen größer 2^16 umgehen?
Auch in Assembler ist das natürlich möglich. Hier sollte man dann aber irgendeine passende lib nachnutzen.
Cherry
Grand Admiral Special
- Mitglied seit
- 13.12.2001
- Beiträge
- 2.158
- Renomée
- 43
- Standort
- Ilmenau
- Mein Laptop
- Dell Latitude E6510 / 15,6" 1920*1080 / i5-560M / 8 Gig RAM
- Prozessor
- I5-4570
- Mainboard
- AsRock H87 Pro4
- Kühlung
- CPU: Noctua NH-U12P@650 rpm - Case-Front: 2x FractalDesign 120@750 rpm / Back: Noctua NF-P12@650 rpm
- Speicher
- 2*4 GB Crucial Ballistix Sport DDR3-1600 CL9 @ 800 MHz 9.0/9/9/24/1T
- Grafikprozessor
- Powercolor R9 290 PCS+
- Display
- 2x LG 24EB23PY-W 1920x1200
- SSD
- Crucial M550 512 GB
- HDD
- 4x Toshiba DT01ACA 3 TB @ Raid 5
- Optisches Laufwerk
- LG GH22NS50
- Soundkarte
- onboard (Realtek ALC892)
- Gehäuse
- Fractal Design Define R3
- Netzteil
- Cougar GX-S450
- Tastatur
- Logitech K750
- Maus
- Logitech MX Master
- Betriebssystem
- Windows Server 2008 R2 - EnterpriseEdition
- Internetanbindung
- ▼100MBit ▲40MBit
Wäre mal interessant, um welchen Controller es sich handelt.
Und die Frage, ob der Controller zahlen > 2^16 verarbeiten kann, ist für Float irrelevant, das interessiert nur bei Ganzzahlarithmetik.
Floating Point wird völlig anders abgespeichert.
Im übrigen läßt sich auch auf nem 8-Bitter (ich bastel da grade ein wenige mit Atmel AVRs rum) bei Ganzzahlarithmetik mit Zahlen > 2^8 arbeiten. Muß man dann halt die Zahlen auf mehrere Register verteilen und passend drauf zugreifen.
Cherry
Und die Frage, ob der Controller zahlen > 2^16 verarbeiten kann, ist für Float irrelevant, das interessiert nur bei Ganzzahlarithmetik.
Floating Point wird völlig anders abgespeichert.
Im übrigen läßt sich auch auf nem 8-Bitter (ich bastel da grade ein wenige mit Atmel AVRs rum) bei Ganzzahlarithmetik mit Zahlen > 2^8 arbeiten. Muß man dann halt die Zahlen auf mehrere Register verteilen und passend drauf zugreifen.
Cherry
Nachtschicht
Admiral Special
Wenn ich mal davon ausgehe, dass der Controller keine Floating Point Unit (FPU) hat, dann muss jede Float-Berechnung auf Ganzzahlarithmetik zurückgeführt werden. Da bei einer 32-Bit Float-Zahl die Mantisse typischerweise 23 Bit lang ist, ist die Frage nicht so abwegigUnd die Frage, ob der Controller zahlen > 2^16 verarbeiten kann, ist für Float irrelevant, das interessiert nur bei Ganzzahlarithmetik.
Floating Point wird völlig anders abgespeichert.
Ray
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 3.141
- Renomée
- 20
- Standort
- An der Spree
- Mein Laptop
- Kein Notbuch
- Prozessor
- Intel Core2Quad Q9650@3.8, AMD Ryzen 9 under test
- Mainboard
- DFI LANPARTY LT X48-T2R + MIPS DFI LANparty P35/X38/X48 Series Freezer Set Nickel
- Kühlung
- EK-Supreme
- Speicher
- 4 x 2 GB OCZ PC2 8500 C5 Reaper@500
- Grafikprozessor
- XFX 8800 GTS(G92) 512 + EK-FC8800 GT/GTS(g92)
- Display
- TFT HP w2408h, 1920x1200
- SSD
- Samsung 840 Pro 256 GB
- HDD
- 2 x WD Black 1TB
- Optisches Laufwerk
- Samsung SH-D163A, Samsung SH-S183A
- Soundkarte
- Creative X-FI Xtreme Gamer Fatality Pro
- Gehäuse
- Modified Lian Li PC201B
- Netzteil
- Seasonic S12 550W
- Betriebssystem
- Win7U-64
- Webbrowser
- FireFox
- Verschiedenes
- Thermochill PA120.3 Triple Radiator , Liang DDC , 11 years old mainboard, still running!
C Compiler vorausgesetzt, sollte es keine Probleme mit Floats bei einer 16 Bit MCU geben.
In zeitkritischen Bereichen und Interrupts sollte man aber auf Float-Berechnungen und vor allem auf Aufrufe von Funktionen einer Float-Bibliothek verzichten - je nach Anwendungsfall.
Wenn es also z.B. darum geht, per Interrupt vom A/D-Wandler gelesene Samples mit Floatingpoint-Arithmetik weiter zu bearbeiten, so sollte man dies ausserhalb der ISR tun.
BTW: Auch unter 16 Bit DOS wurde Floatingpoint-Arithmetik genutzt.
In zeitkritischen Bereichen und Interrupts sollte man aber auf Float-Berechnungen und vor allem auf Aufrufe von Funktionen einer Float-Bibliothek verzichten - je nach Anwendungsfall.
Wenn es also z.B. darum geht, per Interrupt vom A/D-Wandler gelesene Samples mit Floatingpoint-Arithmetik weiter zu bearbeiten, so sollte man dies ausserhalb der ISR tun.
BTW: Auch unter 16 Bit DOS wurde Floatingpoint-Arithmetik genutzt.
Cherry
Grand Admiral Special
- Mitglied seit
- 13.12.2001
- Beiträge
- 2.158
- Renomée
- 43
- Standort
- Ilmenau
- Mein Laptop
- Dell Latitude E6510 / 15,6" 1920*1080 / i5-560M / 8 Gig RAM
- Prozessor
- I5-4570
- Mainboard
- AsRock H87 Pro4
- Kühlung
- CPU: Noctua NH-U12P@650 rpm - Case-Front: 2x FractalDesign 120@750 rpm / Back: Noctua NF-P12@650 rpm
- Speicher
- 2*4 GB Crucial Ballistix Sport DDR3-1600 CL9 @ 800 MHz 9.0/9/9/24/1T
- Grafikprozessor
- Powercolor R9 290 PCS+
- Display
- 2x LG 24EB23PY-W 1920x1200
- SSD
- Crucial M550 512 GB
- HDD
- 4x Toshiba DT01ACA 3 TB @ Raid 5
- Optisches Laufwerk
- LG GH22NS50
- Soundkarte
- onboard (Realtek ALC892)
- Gehäuse
- Fractal Design Define R3
- Netzteil
- Cougar GX-S450
- Tastatur
- Logitech K750
- Maus
- Logitech MX Master
- Betriebssystem
- Windows Server 2008 R2 - EnterpriseEdition
- Internetanbindung
- ▼100MBit ▲40MBit
Deswegen die Frage nach dem konkreten Controller. Und wie erwähnt: man kann auch eine 32-Bit-Zahl in 2 16-Bit-Registen speichern. Dann wird aber halt das Handling entsprechend umständlich. Das dann noch in Assembler zu hacken ist nichtmehr lustig.Wenn ich mal davon ausgehe, dass der Controller keine Floating Point Unit (FPU) hat, dann muss jede Float-Berechnung auf Ganzzahlarithmetik zurückgeführt werden. Da bei einer 32-Bit Float-Zahl die Mantisse typischerweise 23 Bit lang ist, ist die Frage nicht so abwegig
Wobei mich bei genauerem Nachdenken nebem dem verwendeten Controller doch mal interessieren würde, was das für ein Projekt ist, bei dem man auf nem µC unbedingt FP braucht.
Cherry
Zuletzt bearbeitet:
Erstmal danke für die bisherigen Antworten.
Bei dem Controller handelt es sich um den weltbekannten C167, allerdings in einer Industriesteuerung verbaut. Als Compiler wird der aktuelle Tasking Ede eingesetzt.
Aus gewissen Gründen, darf ich nicht mehr sagen, außer das es sich bei dem Projekt um Software für ne Industriesteuerung handelt.
edit: Hin und wieder sollte man doch Handbücher zur Hilfe nehmen und sich nicht auf Aussagen anderer verlassen. Es gibt in meinem Fall keine FPU...
Also alles auf andere Art lösen und die alte Software umschreiben...
Bei dem Controller handelt es sich um den weltbekannten C167, allerdings in einer Industriesteuerung verbaut. Als Compiler wird der aktuelle Tasking Ede eingesetzt.
Aus gewissen Gründen, darf ich nicht mehr sagen, außer das es sich bei dem Projekt um Software für ne Industriesteuerung handelt.
edit: Hin und wieder sollte man doch Handbücher zur Hilfe nehmen und sich nicht auf Aussagen anderer verlassen. Es gibt in meinem Fall keine FPU...
Also alles auf andere Art lösen und die alte Software umschreiben...
Zuletzt bearbeitet:
Ray
Grand Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 3.141
- Renomée
- 20
- Standort
- An der Spree
- Mein Laptop
- Kein Notbuch
- Prozessor
- Intel Core2Quad Q9650@3.8, AMD Ryzen 9 under test
- Mainboard
- DFI LANPARTY LT X48-T2R + MIPS DFI LANparty P35/X38/X48 Series Freezer Set Nickel
- Kühlung
- EK-Supreme
- Speicher
- 4 x 2 GB OCZ PC2 8500 C5 Reaper@500
- Grafikprozessor
- XFX 8800 GTS(G92) 512 + EK-FC8800 GT/GTS(g92)
- Display
- TFT HP w2408h, 1920x1200
- SSD
- Samsung 840 Pro 256 GB
- HDD
- 2 x WD Black 1TB
- Optisches Laufwerk
- Samsung SH-D163A, Samsung SH-S183A
- Soundkarte
- Creative X-FI Xtreme Gamer Fatality Pro
- Gehäuse
- Modified Lian Li PC201B
- Netzteil
- Seasonic S12 550W
- Betriebssystem
- Win7U-64
- Webbrowser
- FireFox
- Verschiedenes
- Thermochill PA120.3 Triple Radiator , Liang DDC , 11 years old mainboard, still running!
C167 Derivate und die Tasking Tool Chain habe ich hier seit fast 10 Jahren im Einsatz.Erstmal danke für die bisherigen Antworten.
Bei dem Controller handelt es sich um den weltbekannten C167, allerdings in einer Industriesteuerung verbaut. Als Compiler wird der aktuelle Tasking Ede eingesetzt.
Bei Fragen einfach fragen.
Klar doch. Musst halt bei Problemfragen nur richtig formulieren, ohne was zum konkreten Projekt zu verraten. Unsere C167 cores sitzen z.B. in Chips, welche ich hier auch nicht näher nennen kann/darf.Aus gewissen Gründen, darf ich nicht mehr sagen, außer das es sich bei dem Projekt um Software für ne Industriesteuerung handelt.
Wie, bestehende SW läuft auf einem Controller mit FPU und das Ganze ist auf einen C167 zu portieren?edit: Hin und wieder sollte man doch Handbücher zur Hilfe nehmen und sich nicht auf Aussagen anderer verlassen. Es gibt in meinem Fall keine FPU...
Also alles auf andere Art lösen und die alte Software umschreiben...
Ok, danke für das ANgebot. Werde sichelrich noch darauf zurückkommenC167 Derivate und die Tasking Tool Chain habe ich hier seit fast 10 Jahren im Einsatz.
Bei Fragen einfach fragen.
Nein, die bestehende Software läuft bereits seit längerem mit float-Variablen auf einem C167. Allerdings ist vermutlich durch unheimlich viel Glück bisher nichts passiert und der Fehler eben erst vor paar Tagen aufgetreten...Wie, bestehende SW läuft auf einem Controller mit FPU und das Ganze ist auf einen C167 zu portieren?
andr_gin
Grand Admiral Special
- Mitglied seit
- 12.06.2003
- Beiträge
- 3.052
- Renomée
- 24
- Standort
- St. Pölten (60km westlich von Wien)
- Prozessor
- Core 2 Quad Q6600 @2,7GHz
- Mainboard
- ASUS P5B Deluxe
- Kühlung
- Zalman CNPS 9700 LED
- Speicher
- 2x1GB DDR2 800
- Grafikprozessor
- Connect3D X1800XT 256MB
- Display
- Hanns.G 27,5"
- HDD
- Samsung 200GB SATA System, 8x Samsung 500GB RAID 50 (RAID5 über den Controller, RAID0 über Windows
- Optisches Laufwerk
- Samsung DVD-Brenner
- Soundkarte
- onboard
- Gehäuse
- A+ XClio2
- Netzteil
- Xilence 550Watt
- Betriebssystem
- Vista x64 SP1
- Webbrowser
- Mozilla Firefox 3
1.) Wie große Zahlen bzw. ob ein Mikrocontroller Fließkommazahlen verarbeiten kann, hängt nur vom Compiler ab. Eine 32 Bit CPU kann genauso gut 64 Bit Zahlen verarbeiten. Unter C gibt es hier die Variablen char, short, int, long, long long und je nach Compiler sind die jedes Mal unterschiedlich breit, wobei ein Integer immer der Maschine entspricht (z.B. 32 Bit Maschine->32 Bit Integer). Auf einem 32 Bit System sind es meistens 8/16/32/32/64 Bit.
Wenn ein Mikrocontroller keine Fließkommazahlen unterstützt, dann muss das der Compiler eben emulieren. Das ist zwar extrem langsam, aber es läuft, sonst darf sich der Compiler nicht C Compiler nennen.
Wenn ein Mikrocontroller keine Fließkommazahlen unterstützt, dann muss das der Compiler eben emulieren. Das ist zwar extrem langsam, aber es läuft, sonst darf sich der Compiler nicht C Compiler nennen.
Ähnliche Themen
- Antworten
- 80
- Aufrufe
- 15K
- Antworten
- 0
- Aufrufe
- 52K