Endlich mal was gutes zu berichten
Hallo allerseits
Ich habe den 100 Ohm wiederstand eingebaut und wieder auf Rampenbetrieb umgestellt, weiteres habe ich auch den Triggerlevel um ein gutes stück zurückgesetzt.
Nun: Ich kann es selber kaum glauben:
Ich erhalte nun immer interrupts, auch wenn ich bis zur decke messe, zum Beispiel.
es kommt auch immer nur ein Interrupt, und dieser Braucht um so länger, je weiter die Entfernung ist.
Ich kann nicht einmal Messbilder aus dem Oszi nennen, da es wieder einmal steikt, aber das ist mir jetzt auch egal, Ich nehme an, es wird wohl so stimmen ;-)
Kurz um: Das Interface erfüllt seine Aufgabe!!!
Das einzige was jetzt noch ein bisschen Probleme macht, ist die Software. Erstens stimmen die Ausgegebenen zeiten nicht mit den Soll - us zusammen, was mich aber weniger stören würde, da ich sowieso vor habe, das Interface zu eichen.
Auch kommen ganz bestimmte zeiten (z.B. 1729) besonders oft, sodass ich einen Denkfehler in der Programmstruktur vermute.
Ich hänge den derzeitig benutzten Code unten an den Beitrag an, wäre schön, könnte ihn mal jemand anschauen.
Dann einmal vielen vielen Dank allen Beiteiligten an diesem Thread, im Bezug auf die Hardware besonders Manf und Besserwessi, danke für die vielen Tipps und Lösungsvorschläge!
Naja, an der software gibts schon noch ein bisschen was zu verbessern, denn es gibt teilweise schlimme abweichungen von mehr als 200 us, auf grund dieser Zeiten, die besonders oft kommen, aber ich freue mich schon mal unglaublich, das die Hardware nun einmal keine Probleme macht.
Mfg Thegon
Hier noch einmal den zurzeit verwendeten Code:
Code:
$regfile "M48def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 2400
Dim Endtime As Long
Dim Countperoverflow As Integer
Dim Struser As String * 10
Dim Countperiodes As Byte
Dim Timerstand As Byte
Config Timer0 = Timer , Prescale = 1
On Timer0 Isrtimer
Enable Timer0
Stop Timer0
Config Int0 = Rising
Enable Int0
On Int0 Isr_interrupt
Config Portd.3 = Output
Portd.3 = 1
Do
Input Struser
If Struser = "" Then
'################# den Sendebrust generieren +++++++++
Countperiodes = 0
Do
Portd.3 = 0
Countperiodes = Countperiodes + 2
Portd.3 = 1
Countperiodes = Countperiodes - 1
Loop Until Countperiodes > 20
Countperiodes = 0
Portd.3 = 1
'######################################################
Enable Interrupts
Start Timer0
Timer0 = 0
Struser = "sd"
End If
Loop
'###############TimerIsR##################
Isrtimer:
Countperoverflow = Countperoverflow + 1
Return
'#########################################
'#########ACI isr################
Isr_interrupt:
Stop Timer0
Timerstand = Timer0
If Tifr0.tov0 = 1 Then
Endtime = Endtime + 256
Set Tifr0.tov0
End If
Endtime = Countperoverflow * 256
Endtime = Endtime + Timerstand
Disable Interrupts
Print Endtime
Timer0 = 0
Timerstand = 0
Endtime = 0
Countperoverflow = 0
Return#