| |||||||
| Registrazione | FAQ | Lista utenti | Social Groups | Calendario | Cerca | I messaggi di oggi | Segna forums come letti |
![]() |
| | Strumenti discussione | Visualizzazione |
| |
| | #1 (permalink) Top |
| User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
|
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
__________________ __________________________________________________ The worst day flying is better than the best day working. |
| | |
| | #2 (permalink) Top | |
| User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
![]() 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 | |
| | |
| | #3 (permalink) Top |
| User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
|
Allora prova così: main: gpio.0=0 gpio.1=0 gpio.2=0 K=0 trisio.1=0 trisio.2=0 trisio.0=1 cmcon=7 while true if (gpio.0=1) then while(gpio.0=1) delay_ms(100) wend K = K+1 if (K>3) then K=0 end if end if if (K=0)... in questo modo l'effetto cambia quando rilasci il pulsante e non quando lo premi... Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. |
| | |
| | #4 (permalink) Top | |
| User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
per prima cosa vorrei ringraziarti per il tempo che mi stai dedicando. Ma anche in questo modo , mi si impunta al secondo effetto. Quindi mi chiedo, sto sbagliando a settare le porte del pic? il pic è un 12f629 ho scelto questo perchè molto piccolo. Allora ho deciso di ricominciare da zero. ecco come ho scritto il programma: program prova while true main: trisio.0=1 trisio.1=0 trisio.2=0 gpio.0=0 gpio.1=0 gpio.2=0 while gpio.0=0 gpio.1=1 gpio.2=0 delay_ms(1000) gpio.1=0 gpio.2=1 delay_ms(1000) wend while gpio.0=0 gpio.1=1 gpio.2=1 delay_us(1000) gpio.1=0 gpio.2=0 delay_us(1000) wend wend end. in questo modo ho notato che 2 effetti me li fa perfettamente, non da problemi neanche il pulsante, cambia l'effetto immediatamente. Non ho avuto bisogno di inserire nessun goto, perchè quando cambio lo stato di gpio.0, esce dal while e non so per quale profezia, va al while successivo, ho messo il while totale perchè superato l'ultimo while, non tornerebbe all'inizio. HO il problema che quando aggiungo il 3 effetto, non me lo legge assolutamente,io non capisco dove sbaglio, cioè esegue perfettamente i primi 2 poi bam.... torna all'inizio. Ho provato anche ad aggiungere al 2 while un goto, ma non legge nulla. Come posso fare per eseguire 3 semplici effetti? O hai qualche consiglio per modificare questo ultimo che ho fatto e che al 75% funziona? Grazie ancora | |
| | |
| | #5 (permalink) Top | |
| User Data registr.: 18-07-2007 Residenza: milano
Messaggi: 1.495
| Citazione:
non so che tipo di programmatore usi ma se hai la EasyPIC, "io ho la 5" ha la possibilita del debag, in pratica controlli linea per linea in tempo reale il tuo programma variabili comprese....... io di solito per i pulsanti uso la funzione case select Flavio | |
| | |
| | #6 (permalink) Top | |
| User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
Io utilizzo mikrobasic per scrivere il programma, mentre per programmare il pic, ho comprato il PICKit2 2,61 con connessione USB. Comunque, quello che dici lo eseguo anche con mikrobasic, ovvero ''simulo'' il programma, ma diciamo che è reale al 50%. Io credo che sto sbagliando a livello di concetti, o di qualche variabile che non ho impostato. Grazie | |
| | |
| | #7 (permalink) Top | |
| User Data registr.: 18-07-2007 Residenza: milano
Messaggi: 1.495
| Citazione:
se usi mikrobasic, guardati gli esempi da cui puoi trarre molte soluzioni......... Flavio n.b che versione hai di mikrobasic? | |
| | |
![]() |
| Bookmarks |
| Strumenti discussione | |
| Visualizzazione | |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Messaggio |
| pic 12F629 | faustog_2 | Circuiti Elettronici | 2 | 07 ottobre 13 11:52 |
| ESC con PIC | Italia | Circuiti Elettronici | 4 | 23 marzo 13 16:27 |
| Problema con programma MPX per aggiornamento Royal PRO | picman | Radiocomandi | 0 | 29 agosto 10 20:27 |
| Programma facile per pic | Orso82 | Circuiti Elettronici | 20 | 27 febbraio 05 16:44 |
| Regolatore con PIC | rapis | Circuiti Elettronici | 1 | 26 novembre 01 11:15 |