www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Teilen durch eine Fliesskommazahl in Assembler


Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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..

Autor: Michael Pohl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wenn du den pic einfach langsamer taktest ?
weiß ja net ob das bei pic möglich ist
hab noch nie mit den gearbeitet

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bezweifle das ich einen Quarz in dem von mir benötigten Verhältnis 
finde.. (muss ja auf die Verlangten 50ppM kommen)
aber trotzdem danke

Autor: Michael Pohl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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....

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier meine Arithmetikbibliothek:

http://www.specs.de/users/danni/appl/soft/arithmet/index.htm

Die ist skalierbar von 16 Bit ... 640 Bit.


Aber warum soll da noch ein extra PIC mit ran ?
Der 8051 langweilt sich doch nur, warum darf der denn nicht die Frequenz 
erzeugen ?


Peter

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.