Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
möp
Anmeldungsdatum: 18.01.2007 Beiträge: 6
|
Verfasst am: 18.01.2007, 17:27 Titel: Stoppuhr über druckerport |
|
|
für meinen facharbeitversuch hab ich ein kleines Programm geschrieben
hier erstmal der code:
Code: |
f = FREEFILE
OPEN "file.txt" FOR append AS #f
startzeit#=0
i=0
DO WHILE INKEY$ = ""
InByte% = INP(&H378+1)
LOCATE 14, 29
IF (InByte% AND 64) = 0 THEN
if i=0 then
i=1
Endzeit# = TIMER
Intervall# = Endzeit# - Startzeit#
PRINT Intervall#
write #f, intervall#
Startzeit# = TIMER
end if
else
i=0
end if
LOOP
CLOSE #f |
das ganze programm soll bei jedem kontakt von pin 10 mit masse ne stoppuhr starten und bei erneutem kontakt stoppen, die zeit speichern und die neue messung starten
funktioniert auch soweit
wenn ich nun aber zum testen den kontakt ein paar mal öffne und schließe und anschließend die gestoppten zeiten nach größe sortiere erhalt ich folgendes diagramm:
http://www.transistornet.de/download.php?id=987
sprich ich hab immer ein sprung bei den messungen
wie kann ich denv ermeiden?
schonmal vielen dank für alle antworten |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 18.01.2007, 19:02 Titel: Re: Stoppuhr über druckerport |
|
|
möp hat Folgendes geschrieben: | funktioniert auch soweit | Erstma Willkommen im Forum..
1. hier mal in einer für mich lesbaren Form der Code: | Option Explicit
Dim As Long i=0, InByte, Datei=FreeFile
Dim As Double Startzeit=0, Endzeit, Intervall
Open "file.txt" For Append As #Datei
Do While Inkey=""
InByte=Inp(&H378+1)
Locate 14, 29
IF (InByte% And 64)=0 Then
If i=0 Then
i=1
Endzeit=Timer
Intervall=Endzeit-Startzeit
?Intervall
?#Datei, Intervall
Startzeit=Timer
End If
Else
i=0
End If
Loop
Close #Datei |
2. mit welchem Compiler 'funktioniert' dieses Programm?
(FB0.16bSE meldet einen Read-Fehler wasweißichdennwo)
3. ich werde mich nicht in deinem Forum anmelden, um dein
Bild anzusehen, lager es einfach bei www.fileanchor.com oder sonstwo frei zugänglich..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
möp
Anmeldungsdatum: 18.01.2007 Beiträge: 6
|
Verfasst am: 18.01.2007, 22:42 Titel: |
|
|
hallo
vielen dank für deine antwort
ups
wegen dem bild dacht ich , dass mans auch ohne anmeldung sehn kann
außerdem is es net mein forum
nun zum thema
als compiler hab ich den von http://www.freebasic.net/ verwendet
mitlerweile habe ich rausgefunden, dass es am timer liegt
wenn ich das programm unter windows in ner dos-box aufen lass hat der timer min 6 nachkommastellen
wenn ich das programm jedoch unter dos start hat der timer nurnoch 2 nachkommastellen
also maximal auf 10ms genau
gibts da ne lösung dafür? |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 19.01.2007, 00:40 Titel: |
|
|
möp hat Folgendes geschrieben: | wegen dem bild dacht ich , dass mans auch ohne anmeldung sehn kann | ..falsch gedacht
Welchen denn ?0.13??
(Wenn du im FB-Verzeichnis an einer Eingabeaufforderung fbc -version eingibst, erhältst du die Antwort..)
möp hat Folgendes geschrieben: | mitlerweile habe ich rausgefunden, dass es am timer liegt | ..aber wie, wenn das Programm unter FB0.16b abstürzt?
möp hat Folgendes geschrieben: | wenn ich das programm unter windows in ner dos-box aufen lass hat der timer min 6 nachkommastellen | Timer liefert Double's s. Befehlsreferenz
möp hat Folgendes geschrieben: | wenn ich das programm jedoch unter dos start hat der timer nurnoch 2 nachkommastellen | Hilfreich wären hier Angaben zu Hardware und verwendetem OS
'unter dos start', vllt Win95?(@möp, nicht böse sein, ist ein Gag für Insider..)
[Edit]
Dreckfuhlerbereinigung..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 19.01.2007, 10:07, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 19.01.2007, 09:32 Titel: |
|
|
Sorry, aber das is' auch die einzigste Seite, wo du den runterladen kannst. Nur ist's so, dass sich FB in ständiger Bewegung befindet und deshalb auch mal Kompatiblitätsprobleme in unterschiedlichen FB-Versionen auftreten. Deswegen wäre die genaue Version hier wirklich wichtig.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
möp
Anmeldungsdatum: 18.01.2007 Beiträge: 6
|
Verfasst am: 19.01.2007, 11:22 Titel: |
|
|
ytwinky hat Folgendes geschrieben: | möp hat Folgendes geschrieben: | wegen dem bild dacht ich , dass mans auch ohne anmeldung sehn kann | ..falsch gedacht
Welchen denn ?0.13??
(Wenn du im FB-Verzeichnis an einer Eingabeaufforderung fbc -version eingibst, erhältst du die Antwort..)
möp hat Folgendes geschrieben: | mitlerweile habe ich rausgefunden, dass es am timer liegt | ..aber wie, wenn das Programm unter FB0.16b abstürzt?
möp hat Folgendes geschrieben: | wenn ich das programm unter windows in ner dos-box aufen lass hat der timer min 6 nachkommastellen | Timer liefert Double's s. Befehlsreferenz
möp hat Folgendes geschrieben: | wenn ich das programm jedoch unter dos start hat der timer nurnoch 2 nachkommastellen | Hilfreich wären hier Angaben zu Hardware und verwendetem OS
'unter dos start', vllt Win95?(@möp, nicht böse sein, ist ein Gag für Insider..)
[Edit]
Dreckfuhlerbereinigung..
Gruß
ytwinky |
compiler hab ich auch den 0.16b verwendet
läufz bei mir unter windows, wie auch unter dos
hab auch schon die ganzen variablen rund um den timer als double deklariert, hat aber nix genützt
werds aber nochmal probiern
bisher hab ich nur ne startduskette bei xp erstellt und mit der gebootet umd des programm zu testen
werd heut aber nen rechner mit freedos aufziehen |
|
Nach oben |
|
 |
möp
Anmeldungsdatum: 18.01.2007 Beiträge: 6
|
Verfasst am: 19.01.2007, 12:42 Titel: |
|
|
ok hilft auch nix der timer hatweiter nur 2 nachkommastellen also nur auf 10ms genau
Code: |
DO
print timer
LOOP WHILE INKEY = ""
|
auch bei diesem mini code
gibts irgendwie die mnöglichkeit einen genaueren timer zu erhalten? |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 19.01.2007, 15:07 Titel: |
|
|
Hi,
das klingt so als würde nur der alte DOS-Ticker im 56ms Takt benutzt.
Es sollte aber der time-stamp-counter der CPU abgefragr werden, der mit der CPU-Taktfrequenz betrieben wird und auch µsek anzeigen kann?? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
möp
Anmeldungsdatum: 18.01.2007 Beiträge: 6
|
Verfasst am: 19.01.2007, 15:21 Titel: |
|
|
das kann gut sein
zum time-stamp-counter hab ich diesen code gefunden:
Code: |
Function ReadTSC() As uLongInt
Asm
rdtsc
mov [function], eax
mov [function+4], edx
End Asm
End Function |
wie kann ich das in meinen code einbauen? |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 19.01.2007, 15:48 Titel: |
|
|
Statt TIMER rufst du ReadTSC auf (statt mit double mit ulongint Variablen).
Dann sind aber die 'Zeiten' als Anzahl der vergangenen Taktzyklen angegeben.
Um diese in Sekunden zu erhalten müsste man die Werte durch die Taktfrequenz der CPU teilen (t= 1/f). _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
möp
Anmeldungsdatum: 18.01.2007 Beiträge: 6
|
Verfasst am: 19.01.2007, 21:36 Titel: |
|
|
von functions hab ich absolut keine ahnung
wie ruf ich die auf?
so?
und dann schreibt er den wert von readtsc in die variable a???
ihr seht ich hab ka  |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 19.01.2007, 22:54 Titel: |
|
|
Nein, das geht so:
Code: |
Dim bla As UlongInt
bla = ReadTSC
Print "Ergebnis: ";bla
|
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgFunction
Da stehe noch eine "kurze" Anleitung, die Beispiele kannst du dir mal angucken  _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
|