Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 03.10.2006, 19:48 Titel: Millisekundenbereich ok, geht auch Nanosekundenbereich? |
|
|
Hallo zusammen, ich wollte Fragen, ob es auch einen Nanosekundenbereich in freebasic gibt.
Cu Andy |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 03.10.2006, 20:05 Titel: |
|
|
...
Was willst du dann mit Nanosekunden machen?!
Um auch nur Theoretisch in diesem Bereich Arbeiten zu können brauchst du einen Prozessor mit einem 1 GHz. (Kehrwert von einer Nanosekunde)
Eine Normalle CPU braucht aber relativ viele Taktzyklen für eine Rechnung, also muss der Takt deutlich über ein Gigahertz sein.
Meinst du vielleicht Microsekunden?
Das liesse sich in Asembler noch relativ einfach Umsetzten. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 03.10.2006, 20:14 Titel: |
|
|
Jepp Mikrosekundenbereich meine ich.
Ich muss Schieberegister so schnell wie es geht über die serielle Schnittstelle mit Daten füttern.
Wie ist es mit Assembler möglich die serielle Schnittstelle anzusprechen.
Cu Andy |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 03.10.2006, 20:38 Titel: |
|
|
Geht auch ohne Assembler.
Einfach per Winsock.
Mit Select kann man ein Timeout angeben, wie lange gewartet werden soll.
Da kann man sekunden und microsekunden einstellen.
Soweit ich weiß wird das auch in Freebasic (linux version) so gemacht. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 03.10.2006, 20:39 Titel: |
|
|
Winsock?
Sagt mir überhaupt nix, sorry |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 03.10.2006, 20:59 Titel: |
|
|
Äh...
Ok, ich meinte Sleep im nanosekundenbereich.
Aber irgendwie blick ich gerade nicht durch, wonach hier gesucht wird xD |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 04.10.2006, 08:24 Titel: |
|
|
Hi,
wie Michael oben schon schrieb, ist ein arbeiten im Nanosekundenbereich fast unmöglich und für den COM-Port nicht machbar.
Vermutlich meint Andy µsek, da externe Schieberegister (TTL, CMOS) auch nur im MHz Bereich arbeiten.
Gruß Volta
EDIT/
@Andy19312 da habe ich deine Antwort übersehen
Bei Verzögerungen von µs kann ich dir helfen:
Code: | option explicit
Function pro_usek As Integer
dim as ULongint tv ,tn
dim as Double t1
t1 = Timer + 0.1 '+ 100ms
asm
xor eax, eax
cpuid 'warte bis alle Proz.Befehle abgearbeitet
rdtsc 'internen Clockcounter lesen
mov [tv], eax
mov [tv+4], edx
end asm
Do '100ms warten
Loop Until t1 < Timer
asm
xor eax, eax
cpuid
rdtsc
mov [tn], eax
mov [tn+4], edx
end asm
tn = (tn - tv) \ 100000
Function = tn 'Takte pro 1µs
End Function
Sub delay_usek (dsek as integer, usec as integer)
dim as ULongint tv ,tn
asm
xor eax, eax
cpuid
rdtsc
mov [tv], eax
mov [tv+4], edx
end asm
tv = tv + (dsek * usec)
Do
asm
xor eax, eax
cpuid
rdtsc
mov [tn], eax
mov [tn+4], edx
end asm
Loop Until tv < tn
End Sub
dim as integer usek
dim as Double t
'1x Aufrufen um Takte pro µs zu berechnen
usek = pro_usek
?usek '~Prozessortakt in MHz
'Test 1ms (1000µs) warten
t = Timer
delay_usek 1000,usek
t = Timer-t
?t
sleep | Für die COM-Port Steuerung gibt es bestimmt andere Eksberden  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|