Hallo! Gibt es nicht einen ic der ausschliesslich rechnet also im Prinzip ein Tachenrechner-Modul? 8 oder 16 bit Zahl rein , Funktion wählen (auch die "luxuriösen Dinge wie Arkustangens o.ä.) und dann als 8 oder 16 bit zahl wieder raus. Womöglich sogar mehrere Rechenoperationen hintereinander und dann erst die Ausgabe?
Attila schrieb: > Gibt es nicht einen ic der ausschliesslich rechnet also > im Prinzip ein Tachenrechner-Modul Ja, ein Taschenrechnermodul Attila schrieb: > 8 oder 16 bit Zahl rein Wie soll den die 8 oder 16 bit Zahl "rein"? Attila schrieb: > Funktion wählen Wer oder was wählt den da wie die Funktion? Zufall? Attila schrieb: > 8 oder 16 bit zahl > wieder raus Bei diesem Wetter jagt man ja nichtmal den Hund vor die Tür, und warum sollen die armen 8 oder 16 bit Zahlen dann raus und wohin genau eigentlich?
Meinst du a) eine ALU : http://www.wazimmer.de/infogk12_material-Dateien/Modellcomputer.pdf kann aber nur Addieren, Subtrahieren und logische Operationen. b) µC kan man frei programmieren. c) FPGA auch programmierbar, aber schneller. Volker
Läubi! Also hier in Namibia ist das Wetter wunderbar und die Hunde draussen ;-) Ein aus der Luft gegriffenes Beispiel: sin45 mal 120 = 85 (gerundet) Ich stelle mir das dann so vor: -Die Zahl 45 als 8 bit and den Port legen -Die Rechenoperation wählen, so wie man Buchstaben bei einem Display wählt. (00000001 könnte z.B. für + stehen usw) hier: sinus -beliebig viele weitere Rechenvorgänge durchführen (hier: mal 120) - dann das Ergebnis (85) am Port wieder einlesen. Ist das zu naiv gedacht? Oder gibt es so ein modul?
Hi Und was hat das Ganze mit AVRASM zu tun? MfG Spess
Es gibt Mathematische Coprozessoren und Gleitkommaeinheiten, die das können.
@Spess: Ich habe mir im Forum das Thema sinus und cosinus angesehen und den Eindruck bekommen, korrigiere mich bitte falls ich falsch liege, dass damit ein Atmega8 am Limit ist und dann nicht viel mehr als eben sinus und cosinus machen kann.
Z.B. der gut alte Intel 80287 kann einen Teil von dem, was du angesprochen hast.
Attila schrieb: > dass damit ein Atmega8 am Limit ist und dann nicht viel mehr als eben > sinus und cosinus machen kann. Das ist ein Irrglaube. Jede CPU kann alles rechnen, was Du programmierst, es gibt kein Limit. In Taschenrechnern machen das oft sogar nur 4-Bitter. Limits ergeben sich nur indirekt, z.B. wenn die Genauigkeit so hoch sein soll, daß die Variablen nicht mehr in den SRAM des MC passen. Oder wenn die Rechnung länger dauert als gefordert. Der Mensch ist dabei kein Maßstab, der MC rechnet die Sinusse 1000-mal schneller aus, als Du sie ablesen kannst. Peter
@Peter: ich meinte damit das der qC dann eben rechnet und nicht mehr soviel "Platz" für anderes hat wie z:b AD Wandlung,steuern und regeln, usw allein schon weil , so wie ich es verstanden habe, kaum register übrig bleiben.
Hi
>...so wie ich es verstanden habe, kaum register übrig bleiben.
Du hast 32 Register. Und die werden nicht weniger.
Ausserden hast du noch RAM. Dort kann man auch Werte Speichern.
MfG Spess
Psst. Ich hätte da nen Geheimtip, wenn Du einfach nur rechnen willst: Programmiere in C, das sind fertige Math-Libs mit bei. Peter
Attila schrieb: > Ist das zu naiv gedacht? Oder gibt es so ein modul? Naja aber genau solche Sachen (einlesen, verarbeiten, ausgeben) macht eben ein µC... Und wenn du Sinus etc. haben möchtest und der Chip das nicht in HW kann, dann muß man das durch Software nachbilden. Das sit ja der Witz an einem "Programmgesteuertem Automaten" aka µC, das obwohl er Hardwaremäßig nur ein eingeschränktes Set von Operationen beherscht, man den Rest per Software nachbilden kann (es sei den der Controller selbst hat nicht alle nötigen Grundoperationen). Und das Problem ist halt eben gerade das man Einlesen, Lokig wann soll was geschehen, Ausgabe etc. haben muss, sodass sich ein Extra "chip" schon garnicht mehr lohnt.
Ach ? "C" kann sowas? Interessant! Also alles noch mal von vorne schätze ich mal. Aber vielen Dank für die Antworten!
Beim Rechnen unter Assembler gibt es noch ne weitere Hürde. Assembler verstehen in der Regel keine Float-Zahlen. Also auch, wenn Du ne float Lib hast, mußt Du ja irgendwie Zahlen erstmal hinschreiben können. Du brauchst also ein extra Programm, welches eine Float-Zahl in 32Bit wandelt. Oder Du machst es von hinten durch die Brust ins Auge. Du schreibst die Zahl als String hin und läßt dann zur Laufzeit den String einlesen. Assembler und Rechnen passen also nicht sonderlich gut zusammen. Peter
Oje! Ich verstehe kaum was Peter sagt! Ok: Was muss jemand machen der nie was mit microcntrollern zu tun hatte. Jetzt aber es in einem Jahr geschaft hat was mit UART, RS232, TWI, PWM und ein Display auf die Reihe zu bekommen. Jetzt möchte ich Rechnen, im Moment konkret: Gegeben 2 Koordinaten. Berechne den Kurs zwischen diesen beiden Punkten. Da am Ende irgendwas zwischen 0 und 360 Grad rauskommt bin ich mit 8 bit schonmal nicht ausreichend "bestückt". Wie geht es weiter? "C" lernen? Auf andere qC umsteigen UND eine andere Sprache lernen? Was raten die Profis?
Attila schrieb: > Wie geht es weiter? "C" lernen? > Auf andere qC umsteigen UND eine andere Sprache lernen? Wenn es ein Sinus ist und dabei bleibt, dann im Netz nach einer Lösung mit Tabellen-loockup suchen. Wenn es doch öfter mal Berechnungen mit Gleitkommazahlen braucht auf C umsteigen. Und verstehen was Ganz und Fliesskommazahlen sind und wo die Grenzen dieser Zahlendarstellungen liegen. Viel Spass
Grundsätzlich kann ein µP nur logische Verknüpfungen zwischen einzelnen bits 'berechnen'. Die geschickte Zusammenstellung dieser Verknüpfungen führt dazu, dass ein µP Grundrechenoperationen auf Binärzählen durchführen kann. Die geschickte Kombination dieser Operationen führt schließlich dazu, dass auch komplexe mathematische Aufgaben berechnet werden können. Mit Assmebler hast du direkten Zugriff auf die Grundrechenoperationen, musst dafür aber alle komplexeren selbst aus diesen zusammenstellen (bzw. Copy/Paste, wenn's schon jemand anderes gemacht hat). Bei C (oder anderen Sprachen) übernimmt der Compiler diese Aufgabe, indem er bspw. sin(xy) durch vorgefertigten Assemblercode zur Sinus-Berechnung ersetzt. Bei einer ALU ist das (platt ausgedrückt) einfach in Hardware gegossen um's schneller zu machen. Prozessoren unterscheiden sich dahingehend, wieviele Operationen parallel (8-, 16-, usw. bit) pro Zeit durchgeführt werden und welche Operationen in Hardware vorhanden sind. Theoretisch kann man auf einem AVR auch mit 1024-bit-FLOAT-Zahlen rechnen, dauert halt nur. Wenn dich das 'Wie' interessiert, also bspw. wie man einen Sinus aus einem Riesenhaufen von Binäroperationen berechnet, nehm Assembler(und viel Zeit), wenn nur die Ergebnisse wichtig sind, irgendwas anderes.
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.