Grundsätzliche Frage zum Rechnen in avrasm

Gast #1968769
Lesenswert?

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?
Persönliche Seite #1968772
Lesenswert?

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?
Gast #1968790
Lesenswert?

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?
Gast #1968813
Lesenswert?

@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.
#1968841
Lesenswert?

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
Gast #1968854
Lesenswert?

@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.
Persönliche Seite #1968913
Lesenswert?

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.
#1969159
Lesenswert?

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
Gast #1969194
Lesenswert?

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?
#1969239
Lesenswert?

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
(Firma: TH Köln) Persönliche Seite #1969375
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren