| | #92 (permalink) Top |
| User 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/ |
| | |
| | #93 (permalink) Top | |
| User Data registr.: 06-08-2007 Residenza: Empoli
Messaggi: 1.813
| Citazione:
tu hai scritto: Codice: if(tempo > 80 && tempo <90)
{
portb.f3=1;
}else{
portb.f3=0;
} 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
__________________ ....... | |
| | |
| | #94 (permalink) Top |
| User 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/ |
| | |
| | #95 (permalink) Top | |
| User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
- 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. | |
| | |
| | #96 (permalink) Top |
| User 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/ |
| | |
| | #97 (permalink) Top |
| User 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/ |
| | |
| | #98 (permalink) Top |
| User 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/ |
| | |
| | #99 (permalink) Top |
| User 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/ |
| | |
| | #100 (permalink) Top |
| Rivenditore - B.C.M. Power & Tools 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] |
| | |
![]() |
| Bookmarks |
| |
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 |