Hallo Leute, hab heute aus Interesse und Langeweile ein kleines, aber rechenintensives Programm für meinen Arduino Mega 2560 geschrieben und war erstaunt - Das Teil ist wirklich verteufelt schnell, ca. 30000 mal in der Sekunde konnte er die Quadratwurzel aus dem Produkt zweier 32 Bit langen Zahlen ziehen. Hab mich dann im Datenblatt ein wenig umgesehen und bemerkt, dass ja fast alle Standartoperationen in einem Rechenzyklus erledigt werden. Warum kaufen sich Menschen dann noch eine I2C FPU für den Arduino? Selbst Gleitkommaarithmetik läuft verdammt schnell ab, warum muss der Mikroprozessor denn noch mehr schaffen? Ich verstehe diese ganze Sache nicht, wie ich z.B schon oft in Foren lesen musste dass FloatingPoint Operationen um 'jeden Preis vermieden werden müssten' und 'wertvolle Rechenzeit draufgeht'. Kann mir jemand sagen wo Rechenzeit und Ressourcenausnutzung denn bei einem Arduino so kritisch ist? Gast
Fließkomma-Operationen brauchen natürlich neben Zeit auch Speicher im FlashROM. 256 kByte Nutzbarer Flashspeicher ist nicht die übliche Dimension eines Microcontrollers.
Nur so am Rande: Arduino ist nur ne Platine, ein Bootloader und eine Software IDE. Der verwendete Mikrocontroller ist ein Atmel ATMEGA AVR aus Norwegen, das hat mit der Arduino Motadella aus Italien nicht viel zu tun ;-) Der Compiler ist der avr-gcc. Warum die Leute eine FPU per I2C (=Langsam) anbinden, tja das liegt dann wohl daran das sie keine Ahnung haben was sie da eigentlich tun. > warum muss der Mikroprozessor denn noch mehr schaffen? Warum braucht Dein Rechner eine 2GHz CPU mit mehreren Kernen und 128 Bit Vektor FPUs?
AG schrieb: > Warum braucht Dein Rechner eine 2GHz CPU mit mehreren Kernen und 128 Bit > Vektor FPUs? Darf ich Antworten ? Weil es Windows 7 gibt.
Stimmt, das mit dem FlashSpeicher-"Verbrauch" hatte ich ganz vergessen ;) Was wird denn so an Programmspeicher üblich sein? 4-10kB? Gästchen
Gästchen schrieb: > Stimmt, das mit dem FlashSpeicher-"Verbrauch" hatte ich ganz vergessen > ;) > Was wird denn so an Programmspeicher üblich sein? > 4-10kB? > > Gästchen Das ist eine Frage des Preises. Bei Reichelt geschaut: ATMEGA 2561-16AU 12,95 € 256 kByte und der sehr beliebte ATMEGA 88-20 PU 3,25 € 8 kByte Wenn man auf Fließkomma verzichten kann durch Festkomma-Berechnungen oder gar reines Integer-Rechnen sollte man es machen.
Ok, ich denke für die allermeisten Anwendungen reichen Int-Berechnungen völlig aus ;) Dass der ATMega SO teuer ist, schockt mich jetzt schon ein wenig, ich dachte der Preis vewegt sich so zwischen 5-8 Euro. Gästchen
Gästchen schrieb: > Ok, ich denke für die allermeisten Anwendungen reichen Int-Berechnungen > völlig aus ;) > Dass der ATMega SO teuer ist, schockt mich jetzt schon ein wenig, ich > dachte der Preis vewegt sich so zwischen 5-8 Euro. > > Gästchen Das auch dann wieder ne Frage der Menge natürlich. Mit größeren Mengen macht sich dann aber die Flashgröße am Ende im Preis des Produktes auch bemerkbar. Da die Fließkomma-Emulation zeitlich beiweiten nicht mit einer FPU vergleichbar ist, ist auch die Frage obs dann wirklich Fließkomma sein muß und wenn ja, greift man dann nicht zu einer mächtigeren CPU, wenn die Emulation nicht schnell genug ist.
@Gästchen: Wenn Du größere Stückzahlen abnimmst so >1000 oder in China kaufst kann das hinkommen. Einzelne Bauteile != Großserie. Versuch mal einen einzelnen DDR3 DRAM Chip zu bestellen. Z.B. http://www.digikey.com/product-detail/en/MT41J128M8JP-15E:G%20TR/557-1494-1-ND/2747319 8 Stück --> 60 US$ + Steuern und da haste noch keine Platine und kein SPD EEPROM und keine Kondensatoren und Widerstände dabei. Dann schau mal was ein fertiges getestetes Modul mit 8 Chips, Platine und allem drum und dran mit Verpackung und Garantie beim Billighändler im Netz kostet. ;-)
Hi >Dass der ATMega SO teuer ist, schockt mich jetzt schon ein wenig, ich >dachte der Preis vewegt sich so zwischen 5-8 Euro. Bei CSD momentan 7.95€. MfG Spess
Ok, denke mal die Stückzahlen bei Arduinos nicht das Problem sein werden ;) Was denkt ihr zahlen die so im "Großhandel"? Bestimmt nicht mehr als 3-5 Euro pro Controller. Gästchen
Ich hab auch mit einem Arduino angefangen weil alles so hübsch beisammen ist. Allerdings direkt in C programmiert. 1. Wenn die Festkommawurzel gut implementiert ist, ist sie sauschnell. Gut Implementiert heisst: quadrieren, vergleichen und ein paar shift Operationen. 2. Ich hatte schon das Vergnügen Logarithmen berechnen zu dürfen. Gab es nur als float, speicherhungrig und waren glaub etwa 2000 Takte. Festkomma, Tabelle mit Stützwerten und quadratische Interpolation waren genau genug, wesentlich platzsparender und vor allem wesentlich schneller. Hab ich aber erst gemacht als ich mit dem Timing sonst nicht mehr hinkam. viel Erfolg Hauspapa
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.