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


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 11 novembre 10, 21:34   #71 (permalink)  Top
User
 
Data registr.: 12-04-2006
Residenza: Mondovì
Messaggi: 103
Bravo, stai facendo progressi.
Cerca quanto prima di passare ai micro della serie Pic18F4xxx che sono un minimo più seri come micro, e sui quali puoi tentare di far girare uno scheduler o quanto meno i SyncTimer.
Ed inoltre cerca di capire ed usare i Timer.
Scoprirai, se userai un po' più seriamente i microcontrollori, che Timer, SyncTimer e Scheduler sono maledettamente comodi per lavorare alla svelta, una volta studiati e capiti.
Davide B. non è collegato   Rispondi citando
Vecchio 14 novembre 10, 13:32   #72 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
ciao,scusatemi ancora,io vorrei poter leggere il valore dell impulso pwm che arriva dalla mia ricevente e con un pic creare qualcosa...tipo un gioco di luci,un interuttore ecc

vi posto questo programmino fatto giusto x farvi vedere....niente di che...

volevo sapere se potesse funzionare?

uso x prova il pic 16f84a,voglio leggere il valore di trm0 ogli fronte salita e in base al suo valore,faccio fare questo o quest altro


char misura;
void main() {
trisa=0b10000;
trisb=0b000000000;
portb=0;
porta=0;

OPTION_REG.F5=1; //TRM0 incrementato da impulso su RA4/T0CKI
OPTION_REG.F4=1; //Incremento sul fronte alto
OPTION_REG.F1=1; //prescaler su WDT (di conseguenza 1:1 su TRM0)
INTCON.F7=0; //global interrupt disabilitati
INTCON.F6=0; //Peripheral Interrupt disabilitati
INTCON.F5=0; //TMR0 Overflow Interrupt disabilitato
TMR0=0;
while(1)
{
if (OPTION_REG.T0SE=1)
{
misura= TMR0;
}
if (OPTION_REG.T0SE=0)
{
TMR0=0;
}
if(misura>200)
{
portb.f0=1;
}else{
portb.f0=0;
}
}
}
__________________
NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s
GRUPPO LASER https://www.facebook.com/groups/1880460478909243/
elicottero78 non è collegato   Rispondi citando
Vecchio 14 novembre 10, 13:48   #73 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
scusate,modifico
OPTION_REG.F1=1; //prescaler su WDT (di conseguenza 1:1 su TRM0)
con
OPTION_REG.F1=1; //prescaler 1:8
__________________
NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s
GRUPPO LASER https://www.facebook.com/groups/1880460478909243/
elicottero78 non è collegato   Rispondi citando
Vecchio 16 novembre 10, 00:24   #74 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
cavolo,non riesco a cavar un ragno dal buco
__________________
NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s
GRUPPO LASER https://www.facebook.com/groups/1880460478909243/
elicottero78 non è collegato   Rispondi citando
Vecchio 19 novembre 10, 09:21   #75 (permalink)  Top
Rivenditore - B.C.M. Power & Tools
 
L'avatar di claudio476
 
Data registr.: 28-09-2004
Residenza: Veroli (Fr)
Messaggi: 2.722
Citazione:
Originalmente inviato da elicottero78 Visualizza messaggio
cavolo,non riesco a cavar un ragno dal buco
mmm... ad occhio e croce hai fatto un po di confusione, stai usango OPTION_REG come input per il tuo test, quello è invece un registro che va scritto, non letto.....

al limite puoi fare così:

attendi che l'input vada alto, ad esempio B0, appena va alto, attivi il contatore timer0, ovviamente prima lo avrai azzerato, quando B0 torna basso leggi il valore di tmr0 e fai i tuoi conti
__________________
www.quattrociocchi.it (aeromodellismo,fotografie,energie,varie ed eventuali..)
[Fusione Fredda, come spiegarla a mia nonna]

claudio476 non è collegato   Rispondi citando
Vecchio 19 novembre 10, 18:41   #76 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
grazie x aver risposto

usando rb0,devo creare un interrupt? o posso stare nel main?
__________________
NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s
GRUPPO LASER https://www.facebook.com/groups/1880460478909243/
elicottero78 non è collegato   Rispondi citando
Vecchio 19 novembre 10, 19:48   #77 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Prima di use l'interrupt, fallo funzionare testando il bit; devi modificare anche il settaggio del timer: tu hai impostato il conteggio del numero di impulsi che arrivano su RB0, non il conteggio del tempo dell'impulso.

prova così:

Setta il timer con ingresso sul clock interno (T0CS=0)
Setta RB0 (o altro pin) in ingresso

do{
TMR0 = 0;
}while (!RB0); // aspetta che RB0 sia a 1 e tiene TMR0 a 0

while (RB0); // aspetta che RB0 sia a 0 mentre TMR0 conta
a = TMR0; // salva il valore raggiunto dal timer

Ovviamente non è il sistema più preciso, ma è il più facile; un passo alla volta...


Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 20 novembre 10, 00:08   #78 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
ciao,grazie x avermi risposto

cavolo,non so se ho troppe cose in testa x il lavoro o sono diventato un infermo mentale....non riesco a capire niente

x MSchiepp

intendi questo x testare il bit?

char a;
void main() {
TRISA=0b00000;
TRISB=0b00000001;
PORTA=0;
PORTB=0;
OPTION_REG=0b00000010;

do{
TMR0 = 0;
}while (!RB0); // aspetta che RB0 sia a 1 e tiene TMR0 a 0
while (RB0); // aspetta che RB0 sia a 0 mentre TMR0 conta
a = TMR0; // salva il valore raggiunto dal timer

}

uso il debugger x controllare se il tmr0 si incrementa,ma non succede nulla
__________________
NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s
GRUPPO LASER https://www.facebook.com/groups/1880460478909243/
elicottero78 non è collegato   Rispondi citando
Vecchio 20 novembre 10, 08:53   #79 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da elicottero78 Visualizza messaggio
uso il debugger x controllare se il tmr0 si incrementa,ma non succede nulla
Funziona, funziona...

Se usi il debugger ad un certo punto devi simulare il pin RB0 al valore 1 (con la funzione 'stimulus' del debugger) altrimenti vedrai il programma girare sempre nel primo ciclo while che tiene sempre il timer a zero...


Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 20 novembre 10, 14:47   #80 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
si,nel debugger ho inserito e tolto 1 su rb0,ma il trm0 e la variabile -a- stanno sempre a 0.
__________________
NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s
GRUPPO LASER https://www.facebook.com/groups/1880460478909243/
elicottero78 non è collegato   Rispondi citando
Rispondi

Bookmarks




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 Messaggio
modificare linguaggio menù mc3030 ravenlinux2000 Radiocomandi 0 24 aprile 07 20:03
info francescospina Elimodellismo in Generale 0 26 ottobre 06 11:41
Linguaggio E Versioni Simulatore Reflex Xtr ctenos Simulatori 1 30 novembre 05 16:02



Tutti gli orari sono GMT +2. Adesso sono le 23:10.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2026