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?
Re:Problemi di Frequenza (1 viewing) (1) Guests
Go to bottom Post Reply Favoured: 0
TOPIC: Re: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