| | #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 | |
| | |
| | #22 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| 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 | |
| | |
| | #23 (permalink) Top | |
| User Data registr.: 19-07-2014
Messaggi: 17
| Citazione:
E poi? come dovrei rifare la calibrazione... scusa sono alle prima armi | |
| | |
| | #24 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| 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 | |
| | |
| | #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 | |
| | |
| | #26 (permalink) Top |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| 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 |
| | |
| | #27 (permalink) Top |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
|
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 02:37 |
| | |
| | #28 (permalink) Top |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
|
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 |
| | |
| | #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 16:06 | |
| | |
| | #30 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| 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 12:52 |
| ESC con PIC | Italia | Circuiti Elettronici | 4 | 23 marzo 13 17:27 |
| Problema con programma MPX per aggiornamento Royal PRO | picman | Radiocomandi | 0 | 29 agosto 10 21:27 |
| Programma facile per pic | Orso82 | Circuiti Elettronici | 20 | 27 febbraio 05 17:44 |
| Regolatore con PIC | rapis | Circuiti Elettronici | 1 | 26 novembre 01 12:15 |