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ö
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
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ö
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.
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ö
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.