PIC Messwerte für Ausgabe aufbereiten

Gast #3811430
Hallo,

Ich erhalte von einem Temperatursensor Messwerte. Nun würde ich diese 
gerne als Prozentangabe auf einem Display anzeigen lassen.

Beispielsweise wenn ich bislang acht Werte erhalten habe und einmal die 
Temperatur zu hoch war 12,5% (wobei die Nachkommastelle egal ist 12% 
oder 13% wären auch okay).

In der Theorie ist das soweit kein Problem (Werte*100/Anzahl). 
Allerdings frage ich mich, ob man sich hierbei das Leben irgendwie 
einfacher machen kann.

Da das Programm in Assembler geschrieben ist, wäre eine Multiplikation 
mit 100 bereits aufwendig aber eine Division mit einer veränderlichen 
Variablen noch komplizierter.

Gibt es hier einen Trick?

Danke!


Michael
Wenn es wirklich nur 8 Werte sind könnte man das mit einer Art 
if-Abfrage lösen. Die Division könnte man wenn die Anzahl eine 2er 
Potenz ist mit Shifts realisieren, eine 8bit*8bit Multiplikation wäre 
auch auf einem PIC12/PIC16 kein Hexenwerk, falls du eine suchst: 
Beitrag "Re: PIC-Assembler-Anfängerfrage"

Welchen PIC verwendest du? Ein PIC24 könnte Multiplikation und Division 
in Hardware, ein PIC18 könnte Multiplikation in Hardware.
Gast
Ich verwende einen PIC16 - leider ohne Multiplizierer.

Alle paar Minuten kommt im festen Takt ein neuer Wert hinzu. Der Divisor 
ist somit variabel.

Über Shifts habe ich auch schon nachgedacht, genauso wie eine 
Wertetabelle im Flash-ROM. Einen Ansatz wie ich damit Speicherplatz 
und/oder Rechenzeit, im Gegensatz zur stupiden Version (C-Code von einem 
Compiler übersetzen lassen und das Ergebnis in das Assembler-Programm 
integrieren), einsparen könnte, ist mir aber leider nicht aufgefallen.
Gast
Michael schrieb:
> Da das Programm in Assembler geschrieben ist, wäre eine Multiplikation
> mit 100 bereits aufwendig aber eine Division mit einer veränderlichen
> Variablen noch komplizierter.

Und was spricht gegen C?
Abgesehen davon gibt es doch auch für Assembler die 
Bibliotheksfunktionen und bei deiner Datenrate hast du doch alle Zeit 
der Welt. Statt der Division durch eine Variable könntest du auch eine 
Multiplikation mit einer variablen Größe und die Division durch eine 
Konstante verwenden (z.B. 1/7 ist etwas 146/1024).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.