PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tasten mit I2C auswerten



EA6AFJ
16.07.2012, 15:03
Ich habe 2 Platinen für eine Motorsteuerung 'EME' - Betrieb gebaut. Die Antenne soll mit I2C vom Shack aus bedient werden. Irgenwie habe das falsch angefaßt. Die Übertragung funktioniert auch einwandfrei, wenn auf einen Rutsch, z.B. 10 Befehle nacheinander abgearbeitet werden: Motor 1 links, 10sek warten. dann Motor 2 rechts, 2 sek. warten....usw.
Nur wenn die 4 Tastendrücke ausgewertet werden sollen, funktionieren nur 2 Tasten, betätige ich eine der beiden anderen Tasten, läuft der Motor stoppt nicht mehr und es gibt Error = 1 auf dem Display. Ich habe die Dateien mal angehängt. Ich freue mich auf eine Antwort.

Grüße
EA6AFJ

Vitis
16.07.2012, 16:33
hui ...

also, in Deinem Slave das if then x mal ineinander, da ist select case mal der erste Ansatz das schön strukturiert zu bekommen.
Was nicht so ganz klar ist, über welche Strecke an Bus reden wir? 1m 10m 100m? Kabel geschirmt, verdrillt, terminiert? Bustakt kHz?

Für unerklärliches Programmverhalten in Bascom immer eine nette Fehlerquelle die $stack $frame ... nimm da mal größere Werte, schadet nie ..

EA6AFJ
16.07.2012, 17:34
Moin Vitis
Danke für die schnelle Reaktion. Wir reden von 5m ungeschirmt, aber ich habe ein(2) P82B715 als Treiber und Impedanzwandler eingebaut. Ich denke, das ich in einer do loop Schleife dauernd den Bus aus- und einschalte. Bei select case wird doch auch immer wieder eine Schleife durchlaufen, oder täusch ich mich? Geschwindigkeit ist egal, 10Khz reichen.
Gruß
Ea6AFJ

Vitis
17.07.2012, 09:05
nein, select case ist eine Programmverzweigung, nur eben nicht nur einmal sondern viele zugleich.

Twi_status = Twi_wait()
If Twi_status = &H80 Then
select case A:
case 50:
machwas
case 100:
machwas anderes
case else
wenn nicht dabei, mach was ganz anderes
end select
endif

EA6AFJ
17.07.2012, 09:28
Danke, ich probier das mal und melde mich zurück
Gruß
EA6AFJ

EA6AFJ
17.07.2012, 16:11
Moin Vitis.

Das funktioniert jetzt. Es mußten nur noch überall 20ms Verzögerung eingefügt werden, damit der Bus nicht abstürzt. Danke nochmal.:mrgreen:
EA6AFJ