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


von fetchy (Gast)


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:)

von spess53 (Gast)


Lesenswert?

Hi

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

MfG Spess

von Peter D. (peda)


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:
1
  low_byte = wert & 0xFF;
2
  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

von fetchy (Gast)


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?!

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
Noch kein Account? Hier anmelden.