www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hex-Zahl in TH0 und TL0 (in C)


Autor: fetchy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Bei meinem Programm geht es darum, vier Schrittmotoren mit 
unterschiedlichen Frequenzen anzusteuern.
Die generierung der Frequenzen ist ausgearbeitet und funktioniert.
Bisher jedoch muss man die HEX-Zahlen für TH0 und TL0 von Hand eingeben.
Möchte aber, dass die abhängig von einer bestimmten variablen sind, so 
dass ich für jeden Schrittmotor eine andere Frequenz erhalte und diese 
darüber regeln kann.
>> ich erhalte eine Hex-Zahl z.B. d0fc, welche ich jedoch für TH0 und TL0 in 0xdc 
und 0xfc aufteilen muss. kann mir da jmd helfen. bzw. was für Möglichkeiten gibt 
es?

Vielen Dank schon mal.

Hoffe ich habe mich genau genug ausgedrückt, ansonsten eben Rückfragen:)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Den Low-Teil erhält man durch ein 'and' mit 0xFF und den H-Teil durch 
achtmaliges Rechtsschieben.

MfG Spess

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In C ist es vollkommen wurscht, ob Du Zahlen dezimal, hex oder octal 
hinschreibst.
Da der Mensch aber Dezimalzahlen besser versteht, sollte man diese auch 
verwenden.

Um nun einen 16-Bit Wert in 2*8-Bit zu splitten, gibts den Klassiker:
  low_byte = wert & 0xFF;
  high_byte = (unsigned int)wert >> 8;

Beim Timer ist zu beachten, daß man ihn vorher anhält. Sonst kann es zu 
einem Überlauf kommen, d.h. einem Fehler von 256.

Weiterhin ist zu beachten, daß man ein Reload durch Addition zum Timer 
macht, wenn eine hohe Genauigkeit gefordert ist. Dadurch rechnet sich 
nämlich die Interrupteinsprungzeit, Register pushen usw. raus.


Peter

Autor: fetchy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank,
das war genau das was ich gesucht habe.

kann mir auch jmd sagen, wie ich zwei unterschiedliche while-Schleifen 
gleichzeitig ablaufen lassen kann? denn bisher läuft nur diejenige ab, 
die in meinem Quelltext an erste Stelle steht. Warum?!

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.