mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mathe - Routinen


Autor: Pöhli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich bräuchte da mal Hilfe .....

ich programmier Atmega163 und/oder AT90S8515 in Assembler, un komm mit 
dem meisten Dingen auch mitlerweile klar. Probleme machen mir aber immer 
wieder mathematische Routinen.

zB. hab ich jetzt das Problem das mir mein AD Wandler die Werte eines 
nichtlinearen Sensors liefert. Die Kennlinie hat nährungsweise 
Exponentialfunktion. Wenn ich nun statt der LSB's einen richtigen 
Meßwert angezeigt haben will muß ich irgendwie Kalibrieren. Bei linearen 
Kennlinien hab ich das auch schon gemacht, aber wie mach ich das bei 
exponentialen?   Der Atmega kann hardwareseitig ADD SUB MUL , für DIV 
gibt es entsprechende Routinen, aber wie händel ich 
Exponentialfunktionen?

Oder kann ich das umgehen und irgendwie anders von meinen LSBs zu meinem 
Meßwert gelangen?

Alle Ideen sind willkommen - Danke

Pö

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf die Exponentialfunktion Stützpunkte legen, diese als Werte im 
Programm fest hinterlegen. Zwischen den Stützpunkten wie mit einer 
linearen Kennlinie verfahren. Hängt alledings von den 
Genauigkeitsanforderungen ab. Für die meisten Anwendungsfälle reichen 
5-10 Stützstellen aus.

Siegfried

Autor: Pöhli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das wäre möglich.
Allerdings ist eine Gerätekalibrierung mit mehr als drei Kalibierpunkten 
nicht so toll. Vor allem weil man ja auch immer die entsprechenden 
Kalibrierstandarts und so brauch.

Was ist wenn ich die Funktion als Einzelwerte im Eprom hinterleg? da 
hätte ich dann 512 Werte. Die daraus resultierende Auflösung würde 
reichen, bloß wie bekomm ich die ganzen Werte elegant in den EEprom...

by Pö

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit .dw kannste datenwörter ablegen.

entwerde direkt im programmspeicher (die dann mit LPM geladen werden) 
oder im eeprom.

wenn die ins eeprom sollen, musste die .dw ins .ESEG schreiben, also

.CSEG ;optional
<programm code>
<außerhalb des programmcodes (die datenwörter sollen ja nicht ausgeführt 
werden)
.dw 0x1234 ;legt ein wort in den programm speicher
.db 0x12 0x34 ;alternativ 2 bytes. Immer grade anzahl bytes pro .db 
zeile!

.ESEG ; hier beginnt das eeprom
.dw 0x1234  ; und ein byte im eeprom


beim kompilieren legt der assembler dann eine eeprom datei an (evtl. ist 
hierzu eine kommandozeilen option nötig, hängt vom assembler ab). die 
datei heißt dann i.d.R. wie dein programm mit der endung .eep. diese 
kannste dann direkt an den atmel senden.

Autor: Pöhli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau !

so werd ich das wohl machen.....

nur die 512 Werte eintippen ist natürlich blöd. Da muß ich mir noch was 
einfallen lassen um die aus Exel oder so sauber rüberzubekommen..

Vielen Dank an alle , das Forum ist echt stark da es so gut frequentiert 
ist.
Und vor allem ist es mal eins in deutsch.....

ich werd wohl öfter mal reinschauen !

by Pö

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.