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#
Lesezeichen