Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 31 luglio 14, 16:29   #31 (permalink)  Top
User
 
Data registr.: 19-07-2014
Messaggi: 17
Citazione:
Originalmente inviato da romoloman Visualizza messaggio
prova a cambiare il codice in questo modo:
Codice:
sub function controlla_gpio() as integer
  dim count as long
  count=0
  'semplice procedura di debouncing....
  while ((gpio.0=1))
    delay_ms(1)
    count=count+1
  wend
  if (count>200) then
     result=1
  else
     result=0
  end if
end sub
tieni presente che il cambio effetto ce l'hai sul rilascio del pulsante....

ps non sono sicuro di long... ma count deve essere dichiarato in modo da supportare un valore di almeno 65000 (unsigned integer ??)

Non ho il mikrobasic sottomano...
provato, mikrobasic non mi riconosce il comando long...
grazie per l'aiuto che mi dai
trabo non è collegato   Rispondi citando
Vecchio 31 luglio 14, 18:00   #32 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.072
Citazione:
Originalmente inviato da trabo Visualizza messaggio
provato, mikrobasic non mi riconosce il comando long...
grazie per l'aiuto che mi dai
premesso che il mikrobasic viene fornito di manuale e pertanto non dovrebbe essere di troppa difficoltà trovare i "types" e vedere che si chiamava "word"
Capisco che sei alle prime armi... ma leggere i manuali aiuta...


Codice:
program MyProject
' Declarations section
sub function controlla_gpio() as integer
  dim count as word
  count=0
  while ((gpio.0=1) )
    delay_ms(1)
    count=count+1
  wend
  if (count>200) then
     result=1
  else
     result=0
  end if
end sub

main:
' RIMUOVERE I COMMENTI SUcCESSIVI IN CASO DI OSCILLATORE INTERNO
'asm
' bsf status,RP0;
' call 0x3FF
' movwf osccal
' bcf status,RP0
'end asm

TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7

fissa:
while true
  gpio.1=1
  gpio.2=1
  if controlla_gpio()=1 then
    goto inizio
  end if
wend


inizio:
delay_ms(100)
while true
  GPIO.1=1
  gpio.2=1
  delay_us(50)
  GPIO.2=0
  gpio.1=0
  delay_us(50)
  IF controlla_gpio()=1 THEN
    GOTO mezzo
  end if
wend


mezzo:
delay_ms(100)
while true
  gpio.2=1
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
  gpio.2=0
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
  gpio.1=1
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
  gpio.1=0
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
wend

strobo:
delay_ms(100)
while true
  gpio.1=1
  gpio.2=1
  delay_ms(50)
  gpio.1=0
  gpio.2=0
  delay_ms(50)
  if controlla_gpio()=1 then
    goto fissa
  end if
wend
end.
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 01 agosto 14, 08:57   #33 (permalink)  Top
User
 
Data registr.: 19-07-2014
Messaggi: 17
Citazione:
Originalmente inviato da romoloman Visualizza messaggio
premesso che il mikrobasic viene fornito di manuale e pertanto non dovrebbe essere di troppa difficoltà trovare i "types" e vedere che si chiamava "word"
Capisco che sei alle prime armi... ma leggere i manuali aiuta...


Codice:
program MyProject
' Declarations section
sub function controlla_gpio() as integer
  dim count as word
  count=0
  while ((gpio.0=1) )
    delay_ms(1)
    count=count+1
  wend
  if (count>200) then
     result=1
  else
     result=0
  end if
end sub

main:
' RIMUOVERE I COMMENTI SUcCESSIVI IN CASO DI OSCILLATORE INTERNO
'asm
' bsf status,RP0;
' call 0x3FF
' movwf osccal
' bcf status,RP0
'end asm

TRISIO.1=0
TRISIO.2=0
TRISIO.0=1
cmcon=7

fissa:
while true
  gpio.1=1
  gpio.2=1
  if controlla_gpio()=1 then
    goto inizio
  end if
wend


inizio:
delay_ms(100)
while true
  GPIO.1=1
  gpio.2=1
  delay_us(50)
  GPIO.2=0
  gpio.1=0
  delay_us(50)
  IF controlla_gpio()=1 THEN
    GOTO mezzo
  end if
wend


mezzo:
delay_ms(100)
while true
  gpio.2=1
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
  gpio.2=0
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
  gpio.1=1
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
  gpio.1=0
  delay_ms(500)
  if controlla_gpio()=1 then
    goto strobo
  end if
wend

strobo:
delay_ms(100)
while true
  gpio.1=1
  gpio.2=1
  delay_ms(50)
  gpio.1=0
  gpio.2=0
  delay_ms(50)
  if controlla_gpio()=1 then
    goto fissa
  end if
wend
end.
Hai ragione,comunque, niente, appena premo passa al secondo effetto e poi torna subito al primo.. non va oltre
trabo non è collegato   Rispondi citando
Vecchio 01 agosto 14, 10:03   #34 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.072
Citazione:
Originalmente inviato da trabo Visualizza messaggio
Hai ragione,comunque, niente, appena premo passa al secondo effetto e poi torna subito al primo.. non va oltre
E allora posso darti la notizia che quasi con assoluta certezza hai qualcosa nel circuito, (tasto farlocco o altro) qui funziona, anche se non lo farei mai in quel modo perché non è il modo corretto di gestire un evento esterno e gli eventi temporizzati.
Nei PIC esistono gli interrupt....

http://www.freeinfosociety.com/media/pdf/3134.pdf
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 05 agosto 14, 08:06   #35 (permalink)  Top
User
 
Data registr.: 19-07-2014
Messaggi: 17
Ok... ringrazio tutti per l'aiuto... cerchero' di approfondire.

Grazie ancora
trabo non è collegato   Rispondi citando
Rispondi

Bookmarks



Strumenti discussione
Visualizzazione

Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
pic 12F629 faustog_2 Circuiti Elettronici 2 07 ottobre 13 10:52
ESC con PIC Italia Circuiti Elettronici 4 23 marzo 13 15:27
Problema con programma MPX per aggiornamento Royal PRO picman Radiocomandi 0 29 agosto 10 19:27
Programma facile per pic Orso82 Circuiti Elettronici 20 27 febbraio 05 15:44
Regolatore con PIC rapis Circuiti Elettronici 1 26 novembre 01 10:15



Tutti gli orari sono GMT +1. Adesso sono le 11:20.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002