Teilen durch eine Fliesskommazahl in Assembler

Gast #25416
Hallo Leute

Ich hab mal ne Frage und hoffe, dass mir jemand weiterhelfen kann.
Ich baue mommentan einen Strom- Frequenz konverter. Dabei programmiere 
ich gerade einen ADuC834 (intern 8052) und auch einen PIC16F84A.
Der ADuC übernimmt die 24Bit AD-Wandlung und mit dem PIC generiere ich 
die Frequenz.
Nun sollte ich den 24Bit gewandelten Wert mit einer Konstanten 
Fliesskommazahl (1,386765864) teilen. Wie kann ich das in Assembler 
realisieren? Der 8052 verfügt zwar über einen Divisionsbefehl doch 
meiner Meinung nach nur Ganzzahlig.
Kann mir da jemand helfen? Besten Dank im Voraus..
andy
Gast
wie kommste auf so ne Zahl? Kann man die auch anders darstellen? Evtl. 
Kannst du auch mit Ganzzahlarithmetik auskommen.
Den div-Befehl kannst du vergessen, der hilft nur bei einfacher 
8bit-Division und läßt sich nicht größere Zahlen benutzen.
Gast
Ich habe mommentan bei Full-scale (Alle 24Bit->High), am Ausgang vom PIC 
eine Frequenz von ungefähr 16,876....kHz!!(weiss sie Mommentan nicht 
auswendig)
Ich sollte aber auf 12,5kHz/50ppM genauigkeit kommen! Also dachte ich 
mir den 24Bit Wert mit dem Verhältnis der Ist- und Sollfrequenz zu 
teilen.
(Ich dachte man könne mit dem DIV-Befehl auch 32Bit-Werte mit 16Bit 
verrechnen?!)Kann aber auch sein dass ich mich irre..
Gast
mh den quarz kannste ja aber auch durch hinziehen dazu bekommen...  ich 
weiß zwar net genau wie... aber das geht...
mein pa macht das öfters mal...für messgeräte
gehen tut das....
Gast
Versuch es mit einer Kombination aus niedrigerer Quarzfrequenz und 
Analogabgleich (Referenzspannung ändern, falls möglich, oder Teiler vor 
dem Analogeingang).
Ansonsten würde ich für diese Aufgabe lieber gleich z.B. einen AD654 
einsetzen.
Gast
Must Du denn die Teilung im AD vornehmen? Für die PICs gibt es 16 und 
24Bit Algorhythmen. Die machen zwar keinen richtigen Spaß, funktioniert 
aber (war für mich die Entscheidung mich von den PICs zu verabschieden).
Wenn die Taktung so prezise sein soll, wirst Du wohl um einen 
temperaturstabilisierten Quarz nicht herumkommen. Sonst nützt Dir das 
"Ziehen" auch nichts. 24Bit ist ja auch keine kleine Sache (knapp 300nV! 
bei 5V Eingangsbereich).
Bei 50ppm bleiben Dir von den 24Bit nur noch 18 übrig.

Reiner
Gast
Ich hatte eigentlich schon vor die Teilung im AD-wandler vorzunehmen, 
weil ich den PIC nicht unnötig noch mit weiteren Befehlen belasten 
wollte (dachte mir, dass das Tastverhältnis meiner Ausgangsfrequenz 
gestört werden könnte.) Sorry konnte leider keine 16 und 24Bit 
Algorhytmen für den PIC finden, ist das erste mal dass ich mit PICs 
arbeite. èbrigens stimmt es das ich mit 18Bit fahren könnte doch dachte 
ich mir wenn er schon 24 Bit wandelt...

PS: der ADUC834 wird mit einem Uhrenquarz getaktet und intern durch eine 
PLL auf maximal 12,58MHz +-20% gebracht!(Also für meine Anwendung völlig 
nutzlos)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 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.