From 65c0ac775770408e2acec9a903d4f2071ab0a165 Mon Sep 17 00:00:00 2001 From: Martin Prudek Date: Sun, 10 May 2015 11:18:33 +0200 Subject: [PATCH] Changed computation of distance to index - there's no detection of index position lost. --- pmsm-control/test_sw/main_pmsm.c | 44 +++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/pmsm-control/test_sw/main_pmsm.c b/pmsm-control/test_sw/main_pmsm.c index cbc6879..f666358 100644 --- a/pmsm-control/test_sw/main_pmsm.c +++ b/pmsm-control/test_sw/main_pmsm.c @@ -143,7 +143,7 @@ void printData(){ printf("\npozice=%d\n",(int32_t)data_p.pozice); printf("chtena pozice=%d\n",s.desired_pos); printf("transfer count=%u\n",s.tf_count); - printf("raw_pozice=%d\n",(int32_t)data_p.pozice_raw); + printf("raw_pozice=%u\n",data_p.pozice_raw); printf("raw_pozice last12=%u\n",(data_p.pozice_raw&0x0FFF)); printf("index position=%u\n",data_p.index_position); printf("hal1=%d, hal2=%d, hal3=%d\n",data_p.hal1,data_p.hal2,data_p.hal3); @@ -399,15 +399,41 @@ inline void simple_hall_commutator(int duty){ } } /** - * Funkce pravidelne vycita data z motoru + * \brief + * Computation of distance to index. + * + * K dispozici je 12-bit index, to umoznuje ulozit 4096 ruznych bodu + * Je nutne vyjadrit 1999 bodu proti i posmeru h.r. od indexu - + * to je 3999 bodu + * =>12 bitu je dostacujicich, pokud nikdy nedojde ke ztrate + * signalu indexu */ -inline void comIndDist(){ - rps.index_dist=0x0FFF & (data.pozice_raw - data.index_position); - /* - * if distance is bigger than 2047, the distance underflown - * -> if 12th bit is set, substract 2096 - */ - rps.index_dist-=((rps.index_dist & 0x0800)>>11)*2096; +void comIndDist(){ + uint16_t pos_12 = 0x0FFF & data.pozice_raw; + if (data.index_position<2048){ + if (pos_12