X-Git-Url: https://rtime.felk.cvut.cz/gitweb/fpga/rpi-motor-control.git/blobdiff_plain/1cf729421e63f859e426a429f9ce935a86afd167..5d8290ceb4f6810b3bf47d15bcbb0fc63ff4a837:/pmsm-control/test_sw/main_pmsm.c diff --git a/pmsm-control/test_sw/main_pmsm.c b/pmsm-control/test_sw/main_pmsm.c index 2eb9262..ac3563d 100644 --- a/pmsm-control/test_sw/main_pmsm.c +++ b/pmsm-control/test_sw/main_pmsm.c @@ -60,7 +60,8 @@ struct rpi_state rps={ .log_col_count=0, /* pocet radku zaznamu */ .log_col=0, .doLogs=0, - .alpha_offset=960 + .alpha_offset=960, + .main_commutator=zero_commutator /*komutace vypnuta*/ }; @@ -112,7 +113,7 @@ void * pos_monitor(void* param){ * Feedback loop. * TODO: replace bunch of 'IFs' with Object-like pattern */ -void * read_data(void* param){ +void * control_loop(void* param){ int i; struct rpi_in pocatek; struct rpi_state poc={ @@ -135,10 +136,9 @@ void * read_data(void* param){ /*old positions*/ rps.old_pos[rps.tf_count%OLD_POS_NUM]=rps.spi_dat->pozice; - spi_read(&rps); /*exchange data*/ - /*subtract initiate postion */ + spi_read(&rps); /*exchange data*/ rps.tf_count++; - substractOffset(&data,poc.spi_dat); + substractOffset(&data,poc.spi_dat); /*subtract initiate postion */ compSpeed(&rps); /*spocita rychlost*/ if (!rps.index_ok){ @@ -146,7 +146,7 @@ void * read_data(void* param){ last_index=data.index_position; first=0; }else if (last_index!=data.index_position){ - rps.index_ok=1; + setIndexOK(&rps); comIndDist(&rps); /*vypocet vzdalenosti indexu*/ } }else{ /*index je v poradku*/ @@ -160,15 +160,8 @@ void * read_data(void* param){ spd_pid(&rps); } - /* sirka plneni prepoctena na jednotlive pwm */ - if (rps.index_ok && rps.commutate){ - /*simple_ind_dist_commutator(rps.duty);*/ - /*sin_commutator(rps.duty);*/ - inv_trans_comm(&rps); - inv_trans_comm_2(&rps); - }else if(!rps.index_ok && rps.commutate){ - simple_hall_commutator(&rps); - } + /* sirku plneni prepocteme na jednotlive pwm */ + rps.main_commutator(&rps); /*zalogujeme hodnoty*/ if (rps.doLogs && !(rps.tf_count%LOG_PERIOD)){ @@ -203,7 +196,7 @@ int main(){ base_thread_id=pthread_self(); /*main control loop*/ - create_rt_task(&base_thread_id,PRIOR_HIGH,read_data,NULL); + create_rt_task(&base_thread_id,PRIOR_HIGH,control_loop,NULL); /*monitor of current state*/ create_rt_task(&base_thread_id,PRIOR_LOW,pos_monitor,NULL);