Eure Hilfestellungen sind vom Erfolg gekrönt!
Es klappt wunderbar. Seit ca 2 Stunden läuft die Sache fehlerlos. Vor allen Dingen bleibt die Sache nicht mehr hängen. Wenn mal die Bytes aus der Reihe tanzen, entstehen nur unsinnige Zeichen. Beim nächsten Intervall ist wieder alles in Ordnung.
Ich kannte zwar die Geschichte mit dem Overlay, habe mich aber nicht dran getraut, weil man in den mir vorliegenden Beispielen ne Adresse angeben musste. Da fühlte ich mich doch überfordert. Das mit dem Location wars dann. Toll!Code:$regfile = "m32def.dat" ' Mega 32 $baud = 9600 $crystal = 16000000 '*** alle Stacks und framesize stehen auf 100 Dim Ergebnis As Single Dim Fertig As Bit Dim Zähler As Byte '***** Feldzähler Dim Zeichen(4) As Byte At Ergebnis Overlay Dim Sendeanforderung As String * 1 Dim Funk_anzeige As String * 7 '*** einige mehr als nötig Const True = 1 Const False = 0 Empfangs_led Alias Portc.3 On Urxc Hole_bytes Enable Interrupts Enable Urxc Sendeanforderung = "!" Set Empfangs_led '**** anfangs aus Do '***** nachfolgendes if in meinem Programm alle 12 sec '**** If Interrupt_zähler = Interrupt_intervall Then Enable Urxc '***** Interrupt einschalten, stört sonst andere Interrups '**** Aufforderung zum Senden Printbin Sendeanforderung '**** ohne Chr(10) und Chr(13) '**** Sender sendet nun Zähler = 1 '**** Feldzähler initialisieren Reset Empfangs_led '**** an If Fertig = True Then Fertig = False Waitms 200 '**** wichtig, verzögern '**** hier steht Ergebnis zur Verfügung Funk_anzeige = Fusing(ergebnis , "##.#" ) '**** um aufzurunden! '**** Routine zum Anzeigen Set Empfangs_led '**** aus End If Disable Urxc '**** weiterer Code '*** end if Loop End Hole_bytes: Zeichen(zähler) = Udr '**** ein Byte angekommen Incr Zähler If Zähler > 4 Then Fertig = True 'Zähler = 1 End If Return
Nochmals Dank
Wolfgang







Zitieren
Lesezeichen