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


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 26 novembre 10, 10:55   #91 (permalink)  Top
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
L'interrupt fallo il più breve possibile, come ti ha suggerito claudio476.
Una piccola svista: nel tuo INT alcuni casi non sono gestiti.
Se tempo = 70?
Oppure 80?
__________________
.......
illez non è collegato   Rispondi citando
Vecchio 26 novembre 10, 12:48   #92 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
ok grazie,metterò tutto nel main.
illez non riesco a capire cosa intendi con 80-90

io volevo che si accendesse un led alla volta,quindi ho diviso il trm0 x poter accendere 7 led da soli,quindi dico al programma,se trm0 è tra 80-90 accendi quel determinato led,se non è tra 80-90 lascialo spento......
__________________
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 26 novembre 10, 12:52   #93 (permalink)  Top
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
Citazione:
Originalmente inviato da elicottero78 Visualizza messaggio
ok grazie,metterò tutto nel main.
illez non riesco a capire cosa intendi con 80-90

io volevo che si accendesse un led alla volta,quindi ho diviso il trm0 x poter accendere 7 led da soli,quindi dico al programma,se trm0 è tra 80-90 accendi quel determinato led,se non è tra 80-90 lascialo spento......
Non è completamente esatto.
tu hai scritto:
Codice:
if(tempo > 80 && tempo <90)
{
 portb.f3=1;
}else{
  portb.f3=0;
}
Quindi se tempo è compreso tra 81 e 89 accendi il led 3.
E se tempo vale 80? Non si accende nulla.
E se tempo vale 90? Oppure 70?
Idem, non si accende nulla

Hai compreso i casi minore di 80, maggiore di 80, ma non uguale a 80 (70, 90 etc)!

Chiaro ora?

errore veniale
__________________
.......
illez non è collegato   Rispondi citando
Vecchio 26 novembre 10, 18:46   #94 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
grazie mille,sei stato molto chiaro,
mamma mia,è ora che incomincio a prendere appunti,incominciano a essere troppe le cose da tenere a mente,grazie.
__________________
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 26 novembre 10, 18:54   #95 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da elicottero78 Visualizza messaggio
...è ora che incomincio a prendere appunti,incominciano a essere troppe le cose da tenere a mente,grazie.
Allora segnati anche queste:
- l'istruzione INTCON.GIE=0; //spenti interrupt è inutile: il bit GIE viene automaticamente messo a zero all'inizio della routine di interrupt e riabilitato all'uscita, perchè il pic non ti permette di avere due interrupt contemporanei.

- se usi il 628 hai anche il timer 1che è a 16 bit e che quindi può contare senza bisogno del prescaler in microsecondi (1000-2000 l'impulso RC) ed è più facile usarlo perchè si può fermare e far partire con un bit di controllo.

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 26 novembre 10, 22:24   #96 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
grazie mille x l info........puoi gentilmente dirmi qualcosina sul timer1...in che modo posso attivarlo e usarlo?grazie
__________________
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 26 novembre 10, 23:16   #97 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
intanto ho modificato il programma...

char tempo;
void interrupt(){
if((OPTION_REG.INTEDG == 1) && (INTCON.F1 == 1))
{
TMR0 = 0;
OPTION_REG.INTEDG=0; //fronte di discesa
INTCON.F1=0; //reset del flag
}
if((OPTION_REG.INTEDG == 0) && (INTCON.F1 == 1))
{
tempo=TMR0; //prento il timer
OPTION_REG.INTEDG=1; //imposto controllo sul fronte di salita
INTCON.F1=0; //reset del flag
}
}
void main() {
trisa=0;
trisb=0b00000001;
porta=0;
portb=0;
OPTION_REG.T0CS = 0; //imposto l'utilizzo del clock
OPTION_REG.PSA = 0; //imposto il tipo di prescaler da utilizzare
OPTION_REG.PS0 = 1; //
OPTION_REG.PS1 = 1; //imposto il prescaler a 16
OPTION_REG.PS2 = 0; //
INTCON.T0IF = 0; //azzero interrupt timer
OPTION_REG.INTEDG = 1; //imposto controllo sul fronte di salita
INTCON.F1 = 0; //reset flag
INTCON = 0b00010000; //impostato unico interrupt rb0
INTCON.GIE = 1;

while(1){
if(tempo > 50 && tempo <=70)
{
portb.f1=1;
}else{
portb.f1=0;
}
if(tempo > 70 && tempo <=80)
{
portb.f2=1;
}else{
portb.f2=0;
}
if(tempo > 80 && tempo <=90)
{
portb.f3=1;
}else{
portb.f3=0;
}
if(tempo > 90 && tempo <=100)
{
portb.f4=1;
}else{
portb.f4=0;
}
if(tempo > 100 && tempo <=110)
{
portb.f5=1;
}else{
portb.f5=0;
}
if(tempo > 110 && tempo <=120)
{
portb.f6=1;
}else{
portb.f6=0;
}
if(tempo > 120 && tempo <=130)
{
portb.f7=1;
}else{
portb.f7=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 29 novembre 10, 17:43   #98 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
ciao,sono ancora qua con la mia ignoranza,avrei bisogno ancora di aiuto e gia vi chiedo scusa x tutte le rotture che vi do.

ho fatto un programmino prova x far accendere delle luci tramite radio comando,praticamente quando alzo lo stic della radio faccio accendere due let intermittenti,ma se mentre lo stic è alto,spengo la radio queste 2 rimangono accese,invece io voglio che si spenga tutto e che rimanga un solo led che si accenda x un secondo e si spenga x un secondo,ma facendo varie prove,non riesco a far spegnere i 2 led intermittenti.

è come se mentre spengo la radio,resti in memoria del pic l ultimo valore del trm0 e di conseguenza continua a fare quello che deve senza mai smettere

ho messo un if x dire al pic,se portb.f0 è spento (fonte dell intterupt) ,azzera il trm0 e se trm0 è a 0 fai lampeggiare il led a cadenza di un secondo,ma non succede nulla

ecco il programma


void main() {
trisa=0;
trisb=0b00000001;
porta=0;
portb=0;
OPTION_REG.T0CS = 0; //imposto l'utilizzo del clock
OPTION_REG.PSA = 0; //imposto il tipo di prescaler da utilizzare
OPTION_REG.PS0 = 1; //
OPTION_REG.PS1 = 1; //imposto il prescaler a 16
OPTION_REG.PS2 = 0; //
INTCON.T0IF = 0; //azzero interrupt timer
OPTION_REG.INTEDG = 1; //imposto controllo sul fronte di salita
INTCON.F1 = 0; //reset flag
INTCON = 0b00010000; //impostato unico interrupt rb0
INTCON.GIE = 1;
while(1){
if(tempo > 80)
{
portb=160;
delay_ms(500);
portb=32;
delay_ms(500);
portb=128;
delay_ms(500);
portb=32;
delay_ms(500);
}else{
portb=0;

if (portb.F0=0)
{
delay_ms(100);
TMR0 = 0;
}
}
if(TMR0 = 0)
{
portb.f1=1;
delay_ms(1000);
portb.f1=0;
delay_ms(1000);
}
}
}
__________________
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 29 novembre 10, 23:36   #99 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
modifiato anche in questo modo ma i 2 led alternati continuano a lampeggiare

if(portb.f0=0)
{
delay_ms(1000);
if(portb.f0=0)
{
TMR0 = 0;
}
}
if(TMR0 = 0)
{
portb.f1=1;
delay_ms(1000);
portb.f1=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 30 novembre 10, 12:16   #100 (permalink)  Top
Rivenditore - B.C.M. Power & Tools
 
L'avatar di claudio476
 
Data registr.: 28-09-2004
Residenza: Veroli (Fr)
Messaggi: 2.722
da qualche parta si dovrà azzerare la variabile "tempo", ad esempio, intercetta l'interrupt sull'overflow del timer0, quando accade azzeri "tempo", in quanto il contatore è giunto a fine corsa senza aver intercettato il fronte di discesa del timer, quindi non giunge nessun segnale dalla radio.......
__________________
www.quattrociocchi.it (aeromodellismo,fotografie,energie,varie ed eventuali..)
[Fusione Fredda, come spiegarla a mia nonna]

claudio476 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 00:46.


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