30 luglio 14, 16:37 | #21 (permalink) Top | |
User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
E tra i programmi che ho scritto.... quale dunque mi consigli di utilizzare? Aggiungo la resistenza?? Grazie | |
30 luglio 14, 17:13 | #22 (permalink) Top | |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
| Citazione:
asm { bsf _status,RP0 call 0x3FF movwf _osccal bcf _status,RP0 } Il grosso vantaggio è che si liberano ben due piedini di I/O
__________________ 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 | |
30 luglio 14, 17:18 | #23 (permalink) Top | |
User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
E poi? come dovrei rifare la calibrazione... scusa sono alle prima armi | |
30 luglio 14, 17:27 | #24 (permalink) Top | |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
| Citazione:
soprattutto nell'uso modellistico togliere il quarzo consente di ridurre ulteriormente le dimensioni del circuito. La calibrazione la carichi con quelle righe di assembler che ti ho postato, la calibrazione viene fatta in fabbrica e normalmente non viene sovrascritta dal programmatore. Se viene sovrascritta esiste la possibilità con il pikkit2 o il pickit3 di ricalcolarla. Con il proton basic esiste un istruzione Set_OSCCAL che fa la stessa cosa. tuttavia non mi sembra presente nel mikrobasic, per quello ti ho postato l'assembly.
__________________ 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 | |
30 luglio 14, 21:42 | #25 (permalink) Top | |
User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
si ma questo significa che devo iniziare a studiare l'assembler.. giusto? ho usato mikrobasic, perche a scuola lo ho studiato, quindi non sono partito completamente da 0.. Non so.. ditemi voi | |
30 luglio 14, 21:51 | #26 (permalink) Top |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
| No, basta che tu includa quel codice nel tuo programma basic...
__________________ 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 |
31 luglio 14, 01:19 | #27 (permalink) Top |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
|
Puoi provare questo codice ? Codice: program MyProject ' Declarations section main: TRISIO.1=0 TRISIO.2=0 TRISIO.0=1 cmcon=7 fissa: while true gpio.1=1 gpio.2=1 if gpio.0=1 then while (gpio.0=1) wend goto inizio end if wend inizio: delay_ms(100) while true if gpio.0=1 then while (gpio.0=1) wend goto mezzo end if GPIO.1=1 gpio.2=1 delay_us(50) GPIO.2=0 gpio.1=0 delay_us(50) IF GPIO.0=1 THEN while (gpio.0=1) wend GOTO mezzo end if wend mezzo: delay_ms(100) while true if gpio.0=1 then while (gpio.0=1) wend goto strobo end if gpio.2=1 delay_ms(500) gpio.2=0 delay_ms(500) gpio.1=1 delay_ms(500) gpio.1=0 delay_ms(500) if gpio.0=1 then while (gpio.0=1) wend goto strobo end if wend strobo: delay_ms(100) while true if gpio.0=1 then while (gpio.0=1) wend goto fissa end if gpio.1=1 gpio.2=1 delay_ms(50) gpio.1=0 gpio.2=0 delay_ms(50) if gpio.0=1 then while (gpio.0=1) wend goto fissa end if wend end. se invecevuoi usarlo senza oscillatore esterno, usa questo, ricordantoti di settare nelle preferenze di progetto (project->edit project) di usare l'oscillatore interno, ed inoltre gia che ci sei di disabilitare le funzioni sul GP3/MCLR (recuperi 3 pin) Codice: program MyProject ' Declarations section main: 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 gpio.0=1 then while (gpio.0=1) wend goto inizio end if wend inizio: delay_ms(100) while true if gpio.0=1 then while (gpio.0=1) wend goto mezzo end if GPIO.1=1 gpio.2=1 delay_us(50) GPIO.2=0 gpio.1=0 delay_us(50) IF GPIO.0=1 THEN while (gpio.0=1) wend GOTO mezzo end if wend mezzo: delay_ms(100) while true if gpio.0=1 then while (gpio.0=1) wend goto strobo end if gpio.2=1 delay_ms(500) gpio.2=0 delay_ms(500) gpio.1=1 delay_ms(500) gpio.1=0 delay_ms(500) if gpio.0=1 then while (gpio.0=1) wend goto strobo end if wend strobo: delay_ms(100) while true if gpio.0=1 then while (gpio.0=1) wend goto fissa end if gpio.1=1 gpio.2=1 delay_ms(50) gpio.1=0 gpio.2=0 delay_ms(50) if gpio.0=1 then while (gpio.0=1) wend 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 Ultima modifica di romoloman : 31 luglio 14 alle ore 01:37 |
31 luglio 14, 02:40 | #28 (permalink) Top |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
|
Ti ho ripulito un po il codice... ho fra l'altro notato che c'era un problema in "mezzo" il controllo del tasto veniva fatto solo ogni 2 secondi... Normalmente per far lampeggiare un led quando c'è di mezzo il controllo di eventi esterni l'uso dei delay non è la cosa più corretta da fare... si usano anzi gli interrupt sui timers ma visto che sei alle prime armi evitiamo di complicarti la vita: Codice: program MyProject ' Declarations section sub function controlla_gpio() as integer dim count as integer count=0 'semplice procedura di debouncing.... while ((gpio.0=1) and (count<200)) 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 |
31 luglio 14, 15:00 | #29 (permalink) Top | |
User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
il secondo parte, premo il pulsante, mi cambia effetto e dopo 2 secondi torna al primo effetto... oppure se premo un po' di piu cambia effetto poi torna al primo Ultima modifica di trabo : 31 luglio 14 alle ore 15:06 | |
31 luglio 14, 16:38 | #30 (permalink) Top | |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.069
| Citazione:
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 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...
__________________ 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 | |
Bookmarks |
| |
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
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 |