 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4709 Wohnort: ~/
|
Verfasst am: 28.04.2009, 15:45 Titel: |
|
|
Zitat: | Das mit dem SHR ist ja gut und schön, nur gibt es diesen Befehl in QBasic nicht. |
Hoppla, mein Fehler; dann fehlt dazu ein Referenz-Hinweis.
Aber mit dieser Codezeile komme ich nicht klar:
Code: | highbyte% = FIX(teiler& \ 256) |
teiler& \ 256 ist doch bereits eine Integerdivision, da sollte durch das FIX doch nichts weiter mehr passieren, oder? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 28.04.2009, 22:13 Titel: |
|
|
nemored hat Folgendes geschrieben: | teiler& \ 256 ist doch bereits eine Integerdivision, da sollte durch das FIX doch nichts weiter mehr passieren, oder? |
Da hast du recht, habe ich doppelt gemoppelt  _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
triti
Anmeldungsdatum: 23.04.2009 Beiträge: 44
|
Verfasst am: 05.05.2009, 10:17 Titel: |
|
|
Ganz vielen Dank für die ausführliche Erklärung!
Verstanden, ausprobiert, alles funktioniert.
Wunderbar....
lg
Triti |
|
Nach oben |
|
 |
storno
Anmeldungsdatum: 13.05.2009 Beiträge: 16
|
Verfasst am: 15.05.2009, 14:35 Titel: |
|
|
Skilltronic hat Folgendes geschrieben: | Hallo
Jojo hat Folgendes geschrieben: | falsche antwort. timer hat eine auflösung von höchstens 55ms. |
Na ja, standardmäßig schon. Unter DOS kann man den Timer aber schneller laufen lassen. Eine Auflösung von 10 ms bekommt man mit
Code: | OUT 67, 52 'Timer-Steuerregister: Timer 0, Low- und Highbyte, Modus 2
OUT 64, 154 'Lowbyte
OUT 64, 46 'Highbyte |
Zur Einstellung des Timer-Steuerregisters siehe hier.
Im Timer sitzt ein 16 Bit Teiler, der mit 1,193 MHz getaktet wird. Mit dem Low- und Highbyte kann man das Teilerverhältnis aber einstellen.
Auf die Werte für Low- und Highbyte kommt man so. Normalerweise läuft der Timer mit einer Auflösung von 2^16 Takten pro Stunde. Macht 65536 Takte / 3600 Sekunden = 18,204 Hz bzw. 54,9 ms Periodendauer.
Will man 100 Hz bzw. 10 ms Auflösung, muss man den Timer 100/18,204 = 5,493 mal schneller laufen lassen. Also teilt man 65536 durch 5,493. Ergibt ein Teilerverhältnis von 11930. Die zerlegt man in zwei Byte und kommt so auf einen Wert für das Highbyte von 46 und das Lowbyte ist 154.
46 * 256 + 154 = 11930.
Will man z.B. 5 kHz Taktrate bzw. 200 µs Periodendauer schreibt man folglich:
Code: | OUT 67, 52 'Timer-Steuerregister: Timer 0, Low- und Highbyte, Modus 2
OUT 64, 18 'Lowbyte
OUT 64, 1 'Highbyte |
Eine Warteschleife sieht dann z.B. so aus:
Code: | warteschleife:
DO
tneu = TIMER
LOOP WHILE tneu = talt
talt = tneu
RETURN |
So kann man den Timer auf jede gewünschte Taktrate umstellen. Langsamer geht natürlich nicht, weil man nur durch maximal 2^16 teilen kann. Der große Vorteil gegenüber Zählschleifen ist aber, dass es egal ist, was außerhalb der Warteschleife passiert, die Zeitabstände bleiben immer gleich lang. Vorausgesetzt, es dauert nicht länger als eine Timerperiode. Und diese Methode sollte auf jedem Rechner laufen.
Gruß
Skilltronic |
Wie kommt man auf das Ergebniss für 5 KHZ ? |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 15.05.2009, 15:45 Titel: |
|
|
Zitat: | Im Timer sitzt ein 16 Bit Teiler, der mit 1,193 MHz getaktet wird. Mit dem Low- und Highbyte kann man das Teilerverhältnis aber einstellen. |
1193000Hz / 5000Hz = 238,6 ~239
Probe:
1193000Hz / 239 = 4991Hz
Code: | OUT 67, 52 'Timer-Steuerregister: Timer 0, Low- und Highbyte, Modus 2
OUT 64, 239 'Lowbyte
OUT 64, 0 'Highbyte |
d.h. aber auch, dass zwischen zwei Abfragen des TIMERs nur 0,0002 Sekunden (200µs) vergehen dürfen! _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 15.05.2009, 20:46 Titel: |
|
|
Oh, Volta hat natürlich recht. Da hatte ich mich bei meinem 5kHz-Beispiel wohl etwas verrechnet...
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|