Wer hat Tipp für uC-Lösung?

  • Thread starter Klaus Hirschelmann
  • Start date
K

Klaus Hirschelmann

Guest
Hallo,
ich möchte eine kleine Microcontrollerlösung realisieren, bei der über die
serielle Schnittstelle ankommende Strings zerlegt und einer mathematischen
Bearbeitung unterworfen werden sollen. Dabei ist Fliesskommarechnung
erforderlich und Befehle wie SIN, COS, ATN, SQR, SGN, ABS, LOG und TAN
müssen ausführbar sein.Ergebnisse sollen dann auf einem üblichen LCD-Display
angezeigt werden ( Als Ausgangspunkt für den Teil der mathematischen
Bearbeitung ist eine entsprechende Basic-Routine vorhanden ).

Bisher habe ich nur mit 8051-Assembler-Programmierung gearbeitet. Hiermit
lässt sich diese Aufgabenstellung aber nicht lösen. Auf der Suche nach einer
geeigneten Hochsprachenlösung bin ich auf BASIC-AVR gestossen, aber da
ist offensichtlich keine Fliesskommaberechnung möglich.

Leider fehlen mir die Erfahrungen, um in einer anderen Hochsprache
programmieren zu können.

Gibt es dennoch Lösungsmöglichkeiten?

Für alle Tipps bin ich dankbar.
Klaus
 
Klaus Hirschelmann wrote:

Bisher habe ich nur mit 8051-Assembler-Programmierung gearbeitet. Hiermit
lässt sich diese Aufgabenstellung aber nicht lösen.
Blöde Frage: Warum nicht? Oder, anders gefragt: Was glaubst Du, in
welcher Sprache die Fließkommaroutinen und Parser der meisten 8-Bit-
Rechner geschrieben waren?

Schau mal, ob Du im Netz Fließkommaroutinen in 8051-Assembler finden
kannst. Ansonsten gibt es genügend Bücher zum Thema. Die Informatik-
Bibliothek der nächstgelegenen Uni/FH sollte Dir weiterhelfen können.

Leider fehlen mir die Erfahrungen, um in einer anderen Hochsprache
programmieren zu können.
Vertrau mir, Du willst C lernen ;-)

Für alle Tipps bin ich dankbar.
Zum Thema "Funktionsberechnung" würde ich zu Kapitel 5 und 6 von
"Numerical Recipes in C" (Press et al., Cambridge University Press, 2.
Aufl., 1992) greifen. Die erste Auflage gab's auch für Basic.

Gruß,
Michael
 
Klaus Hirschelmann <k.hirschelmann@mainz.netsurf.de> wrote:

Gibt es dennoch Lösungsmöglichkeiten?

Raff dich auf und lern C. Ich programmiere zwar selbst gerne Assembler
aber fuer dickere Sachen ist C angesagt und ausserdem extrem
verbreitet. Mit Basic wuerde ich keine Zeit mehr verschwenden.

Olaf




--
D.i.e.s.S. (K.)
 
Michael J. Schülke <news0307@mjschuelke.de> wrote:

Schau mal, ob Du im Netz Fließkommaroutinen in 8051-Assembler finden
kannst. Ansonsten gibt es genügend Bücher zum Thema. Die Informatik-
Bibliothek der nächstgelegenen Uni/FH sollte Dir weiterhelfen können.
Man kann sie ja aus dem Basicinterpreter von Intel klauen...

Vertrau mir, Du willst C lernen ;-)
...das waer wirklich besser.

Olaf

--
D.i.e.s.S. (K.)
 
Rafael Deliano schrieb:

Man sollte auch überlegen was man überhaupt tut. Eine
barometrische Höhenformel z.B. die man in einem Tabellenbuch
findet verwendet oft Funktionen die Float erforderlich machen
würden. Tatsächlich wird aber nur krumme Kennlinie begradigt.
Könnte man vermutlich direkt mit Taylorreihe in Festkomma
erschlagen.
.... oder Tabelle mit linearer Interpolation zwischen den Stützstellen
(natürlich ebenfalls in Festkomma).

--
Dipl.-Ing. Tilmann Reh
Autometer GmbH Siegen - Elektronik nach Maß.
http://www.autometer.de

==================================================================
In a world without walls and fences, who needs Windows and Gates ?
(Sun Microsystems)
 
"Klaus Hirschelmann" <k.hirschelmann@mainz.netsurf.de> schrieb:

ich möchte eine kleine Microcontrollerlösung realisieren, bei der
über die serielle Schnittstelle ankommende Strings zerlegt und einer
mathematischen Bearbeitung unterworfen werden sollen. Dabei ist
Fliesskommarechnung erforderlich und Befehle wie SIN, COS, ATN, SQR,
SGN, ABS, LOG und TAN müssen ausführbar sein.Ergebnisse sollen dann
auf einem üblichen LCD-Display angezeigt werden ( Als Ausgangspunkt
für den Teil der mathematischen Bearbeitung ist eine entsprechende
Basic-Routine vorhanden ).
Für welche Stückzahlen?

Für Einzelexemplare würde ich einen ATmega128 mit externem RAM nehmen
(sowas bekommt man ja auch fertig als Platine), einen Parser mit
lex/yacc schreiben, fertig ist die Laube. Der ,,Taschenrechner'' ist
/das/ klassische Einführungsbeispiel für yacc.

Für Stückzahlen ist das in der Form sicher zu teuer. lex/yacc sind
nicht auf Microcontroller optimiert, so daß sie relativ viel RAM/ROM
brauchen (dafür sind sie recht flink).

--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
Kristian Köhntopp, de.comp.os.unix.misc
 
Hallo,

Klaus Hirschelmann wrote:

Bisher habe ich nur mit 8051-Assembler-Programmierung gearbeitet. Hiermit
lässt sich diese Aufgabenstellung aber nicht lösen. Auf der Suche nach einer
geeigneten Hochsprachenlösung bin ich auf BASIC-AVR gestossen, aber da
ist offensichtlich keine Fliesskommaberechnung möglich.

falls Du mit BASIC-AVR den BASCOM-AVR Compiler von MCS Electronics
meinst: Dieser unterstützt Fließkommaarithmetik und enthält auch
trigonometrische sowie Exponential - und Logarithmusfunktionen. Auch
sonst ist der Funktionsumfang sehr groß und wird laufend erweitert, der
Preis ist sehr günstig.
Die Schwachststelle des Compilers liegt meiner Ansicht nach in der
Dokumentation, manche Dinge sind zu knapp bzw. unklar erläutert. Zum
Glück gibt es dazu ein sehr aktives Diskussionsforum, in dem erfahrene
Benutzer bzw. der Entwickler selbst sehr schnell Hilfe leisten.

Eine kostenlose Demoversion (limitiert auf 2k Maschinencode) gibt es bei
www.mcselec.com.

Gruß,

Bernhard
 
Klaus Hirschelmann schrieb:

Bearbeitung unterworfen werden sollen. Dabei ist Fliesskommarechnung
erforderlich und Befehle wie SIN, COS, ATN, SQR, SGN, ABS, LOG und TAN
Tss, tss ...


Hi Klaus,

Es gibt eigentlich für alle uC im Netz Fließkommabibliotheken. Simpler
'Kompletteinstieg' wäre der GCC für AVR.

Ansonsten kann BasCom für 8051 und AVR durchaus Trigonometrie, SQR und Log auf
32 Bit Ints, und an deiner Stelle würde ich da auch anfangen. Allzu schnell muss
das in einem Fall ja wohl auch nicht sein. Die Koordinaten in 32Bit Ints zu
machen ist kein großes Problem.

Die trigonometrischen Funktionen kann man ggfs. auch schnell per LookUp Table
erledigen, je nachdem wieviel Speicher dafür zu Verfügung steht und wie genau es
sein muss.

Ich bin mir nicht ganz sicher, aber es gibt für viele Navigationsgleichungen
Vereinfachungen, die mit einfacheren Funktionen auskommen. Die Frage ist, welche
Genauigkeit Du erreichen willst/musst. Über kürzere Distanzen kann man gut mit
Vereinfachungen arbeiten - auf cm kommt es Dir ja nicht an.

Ich vermute aber, mit 1-2k Flash wirst Du da nicht mehr auskommen, der 2051
dürfte da am Ende sein.

- Carsten

--
Audio Visual Systems fon: +49 (0)2238 967926
Carsten Kurz fax: +49 (0)2238 967925
Fasanenweg 38a email: audiovisual@t-online.de
50259 Pulheim / Germany WGS84:N50°58'44.7" E06°47'03.5"
 
Ansonsten kann BasCom für 8051 und AVR durchaus Trigonometrie, SQR und Log auf
32 Bit Ints, und an deiner Stelle würde ich da auch anfangen. Allzu schnell muss
das in einem Fall ja wohl auch nicht sein. Die Koordinaten in 32Bit Ints zu
machen ist kein großes Problem.
Quark geschrieben, der BASCOM macht Trigo etc. auf 32Bit Floats.

- Carsten

--
Audio Visual Systems fon: +49 (0)2238 967926
Carsten Kurz fax: +49 (0)2238 967925
Fasanenweg 38a email: audiovisual@t-online.de
50259 Pulheim / Germany WGS84:N50°58'44.7" E06°47'03.5"
 

Welcome to EDABoard.com

Sponsor

Back
Top