Hallo,
ich habe mir mit Code aus dem Forum folgendes Programm zum Auslesen des Summensignal meines RC-Empfängers zusammengebastelt:
Das Auslesen der 7 Kanäle klappt wunderbar, allerdings verstehe ich einen Teil im Code nicht.Code:$regfile "m32def.dat" $framesize = 42 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 Config Timer0 = Timer , Prescale = 256 'Timer0 auf 16µs/Takt, Überlauf bei ca. 4ms Enable Timer0 On Timer0 Sync Config Int0 = Falling Enable Interrupts Enable Int0 On Int0 Signalmessung Dim Kanal(7) As Byte Dim Channel As Byte Do Print " " ; Kanal(1) ; " " ; Kanal(2) ; " " ; Kanal(3) ; " " ; Kanal(4) ; " " ; Kanal(5) ; " " ; Kanal(6) ; " " ; Kanal(7) Loop Signalmessung: Kanal(channel) = Timer0 Timer0 = 0 Incr Channel Return Sync: Channel = 0 Return
Das ist noch klar. Bei einem Überlauf des Timers (verursacht durch die Pause im Signal) wird channel auf 0 gesetzt.Code:Sync: Channel = 0 Return
Auf die Pause folgt der 1. Kanal, dieser endet mit einer fallenden Flanke (die erste nach der Pause) und löst den Int0 aus. Dann wird doch dort der Timer an Kanal(0) übergeben, da channel ja durch den vorhergehenden Sync-Aufruf auf 0 steht.Code:Signalmessung: Kanal(channel) = Timer0 Timer0 = 0 Incr Channel Return
1.) Kanal(0) ist aber doch gar nicht im Array Kanal(7) enthalten.
2.) Warum finde ich den Wert von Kanal 1 in Kanal(1) und nicht (s.o) in Kanal(0)?







Zitieren

Lesezeichen