Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

25ms Verzögerung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 08.02.2005, 23:34    Titel: 25ms Verzögerung Antworten mit Zitat

Nabend.
Ich bräuchte mal eine Verzögerung von 25ms in einem Programm. Besser gesagt ein EEPROM-Writer, dort ist das Timing sehr kritisch.
Hat jemand sowas rumliegen oder weiß wie ich einen Delay von genau 25ms erzeugen kann ?

Wäre über Antworten höchst erfreut grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 08.02.2005, 23:46    Titel: Antworten mit Zitat

Sehr zeitkritisch?
Wie genau muss das dann sein?
Ich hab da mal ne Lösung für Animationen geschrieben. Hat aber so um die 10% ungenauigkeit....
Naja, vllt hilfts dir:

Code:

DECLARE SUB GetDelay
DECLARE SUB MakeDelay (msek AS INTEGER)

COMMON SHARED loops

GetDelay
'Hauptprogramm...

SUB GetDelay
 t1! = TIMER
 DO
  loops = loops +1
 LOOP UNTIL TIMER >= t1! + 1
 loops = loops * 107
END SUB

SUB MakeDelay (sek AS INTEGER)
 FOR s = 1 to sek
  FOR d = 0 to loops
  NEXT
 NEXT
END SUB


Wie gesagt, für Animationen genügts.

Ach ja, noch was:
Thomas Antoni hat auch ein Programm geschrieben, das genau nach dem selben Prinzip funktioniert. Das habe ich aber erst gefunden, nachdem ich meine Version fertig hatte.

Nur falls es mal um Copyrights gehen würde Zunge rausstrecken


Ob das jetzt genau genug ist...
Wie gesagt, für Animationen is es gut genug.

Hoffe, es hilft dir!
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 08.02.2005, 23:59    Titel: Antworten mit Zitat

Voraussetzung ist übrigens reines MS-DOS 6.22 für so etwas; bei laufendem Windows im Hintergrund schwankt es ganz extrem. => der alte, in der Ecke stehende 75er-Pentium als Mess- und Steuer-PC ist hier schon ein absolutes Muss.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 09.02.2005, 00:35    Titel: Antworten mit Zitat

Hallo!

Diese Methode funktioniert auch unter Windows einigermassen stabil, weil sie auf die TIMER-Register zugreift. In 25ms sollte Windows seinen Kram zwischendurch erledigt haben. Unter DOS ist natürlich immer besser.

Code:
nop = INP(64)
start = INP(64)
DO
nop = INP(64)
jetzt = INP(64)
d = start - jetzt
IF d < 0 THEN d = d + 256
LOOP WHILE d < 117


Das erzeugt eine einmalige Verzögerung von 25ms auf ca. 0,1ms genau. Wenn du in einem regelmässigen Takt etwas ausführen willst, darfst du natürlich nicht jedesmal den Wert von "start" vor der DO...LOOP Schleife auffrischen, sondern muss mit dem Endwert von "jetzt" aus der vorhergehenden Verzögerungsschleife weiterarbeiten.

Ich habe übrigens auch schon EEPROMs mittels QBasicprogramm beschrieben und ausgelesen. Sowohl parallele als auch serielle. Eine zeitliche Steuerung war dabei aber nie nötig. durchgeknallt

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 09.02.2005, 00:41    Titel: Antworten mit Zitat

@Skill: Danke erstmal für den Code.
Exisitieren (zufällig oder mit Absicht) Schaltpläne von dem EEPROM-Schreiber/Leser von dir ? Ich krieg hier ne Krise weil alles nicht so läuft wie ich es haben will durchgeknallt peinlich Kopf schütteln weinen missbilligen verwundert traurig neutral böse Es ist ein AT28C16-15PI (2kB)
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 09.02.2005, 01:17    Titel: Antworten mit Zitat

Hallo

Genau mit diesem Ding (28C16) habe ich auch schon was gemacht. Mein Steuergerät dafür ist allerdings etwas umständlich konstruiert, weil es auch unabhängig vom Rechner laufen sollte. Mittlerweile würde ich es evtl. anders bauen, aber es hat funktioniert. Der Schaltplan dafür existiert nicht mehr, aber vielleicht hilft dir dieses Bild davon weiter:

http://www.skilltronics.de/runterlader/28C16.jpg

Da das jedoch kaum noch mit QBasic zu tun hat würde ich sagen, du kannst mir ja mal mailen oder (spam) wir wechseln in mein Elektronikforum (spam ende)

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz