PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrfaches Auswerten einer IF/Then Bedingung verhindern



mat-sche
29.11.2008, 15:54
Hallo,
und wieder ich!
Hat jemand eine Idee wie man auf einfachster Art und ressourcensparend bei eine If/Then Anweisung ein mehrmaliges durchlaufen verhindern kann?

If Timecount = 10 Or Timecount = 26 Or Timecount = 50 Then 'sendet aller 10sec den Temperaturwert mit Adresse 6A
Slave_adress = &H6A 'Sendeadresse
Send_byte = 5 ' zu sendene Bytes
Sub_adr = 3 'Subadresse entspricht der Herkunft der Daten
Call Master_transmit(slave_adress , Send_byte , Temperaturbyte(1)) 'Aufruf der Callprozedur mit der Adresse und der zu übergebenen Adresspointer
Twi_sr_cntr = 0

leider wird in dem Fall innerhalb einer sek. öfters die if/then Anweisung durchlaufen und somit auch mehrmals hintereinander ein Wert über TWI verschickt. Das will ich vermeiden, hat jemand ne Idee wie?

MAT

for_ro
29.11.2008, 16:05
Setze jede Sekunde (oder alle 10 sec) ein Flag (Send_flag=1) und frage dies mit ab.


If Timecount = 10 Or Timecount = 26 Or Timecount = 50 Then 'sendet aller 10sec den Temperaturwert mit Adresse 6A
If Send_flag=1
Send_flag=0
'dein restlicher Code zum Senden
End If
End If

PicNick
29.11.2008, 18:00
Wenn die "if" frage mehrmals in der sekunde durchlaufen wird, wird sie auch jedesmal den Flag neu setzen.
Ich würde mir den Timecount, bei dem ich gerade sende, merken, und nur wieder senden, wenn der neue Timecount verschieden ist.


DIM oldtime AS BYTE

If Timecount = 10 Or Timecount = 26 Or Timecount = 50 Then
If oldtime <> Timecount then
' -----senden ------------
oldtime = Timecount
end if
End If
End If

Irgendeine art "hab ich schon" wirst du brauchen

mat-sche
29.11.2008, 18:08
Auch hier wieder DANKE

MAT

for_ro
29.11.2008, 19:05
Wenn die "if" frage mehrmals in der sekunde durchlaufen wird, wird sie auch jedesmal den Flag neu setzen.

Gesetzt wird das Flag doch woanders, hier wird es zurückgesetzt.


Irgendeine art "hab ich schon" wirst du brauchen

Send_flag ist meine freie Übersetzung von "hab ich schon".

Gruß

Rolf

mat-sche
30.11.2008, 09:36
Guten Morgen!
Ich habe zwei Timecounter mit unterschiedlichem Sekundenabstand und in dem einem Setze ich das Flag und in dem anderem setze ich es zurück. Indem passt das von Rolf sehr gut und funktioniert genauso wie ich es wollte.
Danke nochmal
MAT