Home     Company     Products     Services     Community     Download     Store
    [Home arrow Community arrow Forum ]
Community
Community
Login Form





Lost Password?
No account yet? Register
FireBoard
Welcome, Guest
Please Login or Register.    Lost Password?
Problemi di Frequenza (1 viewing) (1) Guests
Go to bottom Post Reply Favoured: 0
TOPIC: Problemi di Frequenza
#58
onibaka (User)
Fresh Boarder
Posts: 8
graphgraph
User Offline Click here to see the profile of this user
Re:Problemi di Frequenza 5 Months, 2 Weeks ago Karma: 0  
Vorrei porre un ultimo problema: quando si imposta il periodo di un timer non riesco a capire che tipo di calcolo si utilizza per far si che si attivi nel momento desiderato. Su un esempio del manuale si imposta il periodo di timer1 a 1 ms avendo una Fosc=20Mhz, che diventa quindi 5000 (decimale).
"/* Timer1 period for 1 ms with FOSC = 20 MHz */
#define TMR1_PERIOD 0x1388"

Come si passa da 20MHz a 1388?

Grazie
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#59
paolo.gai (Admin)
Admin
Posts: 67
graph
User Offline Click here to see the profile of this user
Re:Problemi di Frequenza 5 Months, 1 Week ago Karma: 1  

Su un esempio del manuale si imposta il periodo di timer1 a 1 ms avendo una Fosc=20Mhz, che diventa quindi 5000 (decimale).
Come si passa da 20MHz a 1388?


(non ho trovato questo esempio all'interno dei manuali di ERIKA... a che pagina si trova?)

5000 decimale = 0x1388 (esadecimale)

(per fare la prova puoi utilizzare una calcolatrice (tipo quella di linux o windows) in modalità scientifica.

con 40MHz, ad esempio, hai un clock a 25ns, e servono 4000 cicli per un timer ad 1ms , che corrisponde a 0x0fa0

ciao,

Paolo
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#60
onibaka (User)
Fresh Boarder
Posts: 8
graphgraph
User Offline Click here to see the profile of this user
Re:Problemi di Frequenza 5 Months, 1 Week ago Karma: 0  
è un esempio che ho trovato a pagina 82 del "MPLAB® C30 C COMPILER USER’S GUIDE" che riguarda i timer
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#61
paolo.gai (Admin)
Admin
Posts: 67
graph
User Offline Click here to see the profile of this user
Re:Problemi di Frequenza 5 Months, 1 Week ago Karma: 1  
Ok... (in effetti non mi ricordavo di aver mai pubblicato una temporizzazione a 20MHz per la Flex...)

PJ
 
Report to moderator   Logged Logged  
  The administrator has disabled public write access.
#62
onibaka (User)
Fresh Boarder
Posts: 8
graphgraph
User Offline Click here to see the profile of this user
Re:Problemi di Frequenza 5 Months, 1 Week ago Karma: 0  
Eccomi di ritorno. Il problema della frequenza dei task e dei timer è stato risolto. Siamo partiti da un esempio per il controllo di un led e abbiamo portato il task a ripetersi ogni 20 ms. Da questa _base_ abbiamo iniziato ad aggiungere volta volta il codice per il controllo dei motori in PWM, ma appena abbiamo inserito il codice che segue nel task i valori di frequenza d'uscita non erano più gli stessi.

Code: :

/*Questa è l'inizializzazione*/ void setPortsAddress(void) {     portsAddress[0]=(unsigned int *)&LATA;     portsAddress[1]=(unsigned int *)&LATB;     portsAddress[2]=(unsigned int *)&LATC;     portsAddress[3]=(unsigned int *)&LATD;     portsAddress[4]=(unsigned int *)⪭     portsAddress[5]=(unsigned int *)&LATF;     portsAddress[6]=(unsigned int *)&LATG; } void setDCMatrix(void){     //FR     DCMAtrix[0][0] = 6; DCMAtrix[0][1] = 0b1111111111111110; //RG0     DCMAtrix[1][0] = 0; DCMAtrix[1][1] = 0b1111111101111111; //RA7     DCMAtrix[2][0] = 4; DCMAtrix[2][1] = 0b1111111111111101; //RE1     //CR     DCMAtrix[3][0] = 6; DCMAtrix[3][1] = 0b1110111111111111; //RG12     DCMAtrix[4][0] = 4; DCMAtrix[4][1] = 0b1111111111111011; //RE2     DCMAtrix[5][0] = 4; DCMAtrix[5][1] = 0b1111111111101111; //RE4     //BR          DCMAtrix[6][0] = 4; DCMAtrix[6][1] = 0b1111111111011111; //RE5     DCMAtrix[7][0] = 4; DCMAtrix[7][1] = 0b1111111101111111; //RE7     DCMAtrix[8][0] = 2; DCMAtrix[8][1] = 0b1111111111111101; //RC1     //BL     DCMAtrix[9][0] = 3; DCMAtrix[9][1] = 0b1111111111011111; //RD5     DCMAtrix[10][0] = 3; DCMAtrix[10][1] = 0b1111111101111111; //RD7     DCMAtrix[11][0] = 5; DCMAtrix[11][1] = 0b1111111111111101; //RF1     //CL     DCMAtrix[12][0] = 3; DCMAtrix[12][1] = 0b1111111111111101; //RD1     DCMAtrix[13][0] = 3; DCMAtrix[13][1] = 0b1111111111110111; //RD3     DCMAtrix[14][0] = 3; DCMAtrix[14][1] = 0b1101111111111111; //RD13     //FL     DCMAtrix[15][0] = 0; DCMAtrix[15][1] = 0b0111111111111111; //RA15     DCMAtrix[16][0] = 3; DCMAtrix[16][1] = 0b1111110111111111; //RD9     DCMAtrix[17][0] = 3; DCMAtrix[17][1] = 0b1111011111111111; //RD11     

 
Report to moderator   Logged Logged  
 
Last Edit: 2008/03/18 18:28 By onibaka.
  The administrator has disabled public write access.
#63
onibaka (User)
Fresh Boarder
Posts: 8
graphgraph
User Offline Click here to see the profile of this user
Re:Problemi di Frequenza 5 Months, 1 Week ago Karma: 0  
Questo è il codice che da errore nel task modificando la frequenza di uscita

Code: :

(*portsAddress[DCMAtrix[i][0]])=(*portsAddress[DCMAtrix[i][0]])&(DCMAtrix[i][1]);



Abbiamo utilizzato una diversa implementazione ma più "dispendiosa". Vorrei sapere se sbagliamo qualcosa nell'utilizzo degli indirizzi porte e delle maschere.

Grazie
 
Report to moderator   Logged Logged  
 
Last Edit: 2008/03/18 18:30 By onibaka.
  The administrator has disabled public write access.
Go to top Post Reply
Powered by FireBoardget the latest posts directly to your desktop
Evidence S.r.l. - PIVA: 01638690501
Viale Rinaldo Piaggio 32 - Pontedera - Pisa - Italy
Privacy Policy