Visualizza messaggio singolo
Vecchio 19 luglio 14, 17:09   #5 (permalink)  Top
trabo
User
 
Data registr.: 19-07-2014
Messaggi: 17
Citazione:
Originalmente inviato da MSchiepp Visualizza messaggio
Mi pare che manchi un incremento di K prova a riscrivere i due 'IF' iniziali così:

if (gpio.0=1) and (premuto=0) then
premuto=1
K=K+1
if (K>3) then
K=0
end if
end if

e poi considera che hai sempre lo stesso problema di prima: se torni a valutare l'ingresso immediatamente (effetto 0) o dopo 50 + 50 uS (effetto 1), prendi sicuramente dei rimbalzi...

Michele
GRAZIE GRAZIE E GRAZIE
Eseguo subito la modifica.
Comunque per eliminare questi rimbalzi... utilizzo il primo o il secondo?
se vuoi ti mando anche lo schema elettrico del circuito.

mentre all'altro cosa intendi per
1) prima del ritardo di 100 mS aspetti che il pulsante venga rilasciato: questo fa partire il nuovo effetto quando rilasci il pulsante; il ritardo di 100 mS serve ad eliminare i rimbalzi del pulsante.
----------------------------------------
Niente mi fa la stessa cosa...
Si blocca al secondo effetto.
ecco come ho modificato:
program Lampeggioled

const tasto as byte[4]=(0,1,2,3)
dim K as byte
dim premuto as byte

main:
gpio.0=0
gpio.1=0
gpio.2=0
K=0
premuto=0
trisio.1=0
trisio.2=0
trisio.0=1
cmcon=7
while true
if gpio.0=0 then
premuto=0
end if

if (gpio.0=1) and (premuto=0) then
premuto=1
K=K+1
if (K>3) then
K=0
end if
end if

if K=0 then
gpio.1=1
gpio.2=1
end if

if K=1 then
gpio.1=1
gpio.2=1
delay_us(50)
gpio.1=0
gpio.2=0
delay_us(50)
end if

if K=2 then
gpio.1=1
delay_ms(500)
gpio.1=0
delay_ms(500)
gpio.2=1
delay_ms(500)
gpio.2=0
delay_ms(500)
end if

if K=3 then
gpio.1=1
gpio.2=1
delay_ms(50)
gpio.1=0
gpio.2=0
delay_ms(50)
end if
wend
end.

Ultima modifica di trabo : 19 luglio 14 alle ore 17:16
trabo non è collegato   Rispondi citando