Просмотр исходного кода

Новоая логика. 4 ШИМ канала.

TelenkovDmitry 8 месяцев назад
Родитель
Сommit
026edd494b
8 измененных файлов с 498 добавлено и 536 удалено
  1. 3 16
      modules/gpio.c
  2. 4 15
      modules/logic.c
  3. 2 3
      modules/pwm_in.c
  4. 20 2
      modules/pwm_out.c
  5. 2 0
      modules/pwm_out.h
  6. 109 127
      output/drone.hex
  7. 354 370
      project/ewarm/drone.dep
  8. 4 3
      project/settings/drone.wsdt

+ 3 - 16
modules/gpio.c

@@ -26,28 +26,15 @@ void gpio_init(void)
 
     __HAL_RCC_GPIOA_CLK_ENABLE();
     __HAL_RCC_GPIOB_CLK_ENABLE();
-    
-    GPIO_InitStruct.Pin = GPIO_PIN_12;
+
+    // LED - индикация входного сигнала
+    GPIO_InitStruct.Pin = GPIO_PIN_2;
     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
     GPIO_InitStruct.Pull = GPIO_PULLDOWN;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
     
-    GPIO_InitStruct.Pin = GPIO_PIN_12;
-    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
-    // GPIO_PIN_5 - инфракрасный LED
-    GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_4;
-    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-    
-    // LED - индикация входного сигнала
-    GPIO_InitStruct.Pin = GPIO_PIN_2; 
-    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-    
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);
-    
-    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
-    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_4, GPIO_PIN_RESET);
 }
 
 

+ 4 - 15
modules/logic.c

@@ -15,20 +15,9 @@ void logic_main(void)
       
     if (get_button()) 
     {
-        gpio_set_output(true);
-        HAL_Delay(500);
-        IWDG->KR = 0xAAAA;
-        HAL_Delay(500);
-        IWDG->KR = 0xAAAA;
         logic_set_out_pwm();
-        HAL_Delay(500);
-        IWDG->KR = 0xAAAA;
-        gpio_set_output(false);
-        tim_pwm_pulse_idle();
-        
         set_button(false);
     }   
-    
 }
 
 //
@@ -37,19 +26,19 @@ void logic_set_out_pwm(void)
     switch (step_number)
     {
         case 0:
-            tim_pwm_out_set_pulse(PWM_OUT_CH_1, 1300);
+            tim_pwm_out_set_pulse(PWM_OUT_CH_1, 1760);
         break;
     
         case 1:
-            tim_pwm_out_set_pulse(PWM_OUT_CH_2, 1300);
+            tim_pwm_out_set_pulse(PWM_OUT_CH_2, 1760);
         break;
     
         case 2:
-            tim_pwm_out_set_pulse(PWM_OUT_CH_1, 1850);
+            tim_pwm_out_set_pulse(PWM_OUT_CH_3, 1760);
         break;
     
         case 3:
-            tim_pwm_out_set_pulse(PWM_OUT_CH_2, 1850);
+            tim_pwm_out_set_pulse(PWM_OUT_CH_4, 1760);
         break;
     
         default : break;

+ 2 - 3
modules/pwm_in.c

@@ -32,11 +32,10 @@ void tim_pwm_in_init(void)
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Pull = GPIO_PULLUP;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
-    GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;//GPIO_AF0_TIM3;
+    GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
     
     HAL_NVIC_SetPriority(TIM3_IRQn, 0, 1);
-    //HAL_NVIC_SetPriority(TIM3_IRQn, 2, 0); // From lasertag project
     HAL_NVIC_EnableIRQ(TIM3_IRQn);
     
     prescaler = HAL_RCC_GetHCLKFreq()/PWM_IN_TIM_FREQ - 1;
@@ -104,7 +103,7 @@ void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
             
             duty = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
             
-            if (duty > 1600) {
+            if (duty > 1760) {
                 filter_cnt++;
                 LED_ON;
             }

+ 20 - 2
modules/pwm_out.c

@@ -5,7 +5,7 @@
 #define PWM_OUT_TIM_FREQ    1000000
 #define PERIOD_VALUE        20000
 
-#define IDLE_PULSE          1552    // Начальное значение PWM до нажатий
+#define IDLE_PULSE          1160    // Начальное значение PWM до нажатий
 
 
 static TIM_HandleTypeDef   TimHandle;
@@ -27,7 +27,7 @@ void tim_pwm_out_init(void)
     GPIO_InitStruct.Pull = GPIO_PULLUP;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
     GPIO_InitStruct.Alternate = GPIO_AF2_TIM1;
-    GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10;
+    GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11;
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
     
     prescaler = HAL_RCC_GetHCLKFreq()/PWM_OUT_TIM_FREQ - 1;
@@ -49,14 +49,22 @@ void tim_pwm_out_init(void)
     
     sConfig.OCIdleState  = TIM_OCIDLESTATE_RESET;
     
+    sConfig.Pulse = IDLE_PULSE;
+    HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_1);
+    
     sConfig.Pulse = IDLE_PULSE;
     HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_2);
     
     sConfig.Pulse = IDLE_PULSE;
     HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_3);
     
+    sConfig.Pulse = IDLE_PULSE;
+    HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_4);
+
+    HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_1);
     HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_2);
     HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_3);
+    HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_4);
 }
 
 //
@@ -72,6 +80,14 @@ void tim_pwm_out_set_pulse(pwm_out_ch channel, uint16_t pulse)
             TIM1->CCR3 = pulse;
         break;
         
+        case PWM_OUT_CH_3:
+            TIM1->CCR1 = pulse;
+        break;
+        
+        case PWM_OUT_CH_4:
+            TIM1->CCR4 = pulse;
+        break;
+        
         default : break;
     }  
 }
@@ -79,6 +95,8 @@ void tim_pwm_out_set_pulse(pwm_out_ch channel, uint16_t pulse)
 //
 void tim_pwm_pulse_idle(void)
 {
+    TIM1->CCR1 = IDLE_PULSE;
     TIM1->CCR2 = IDLE_PULSE;
     TIM1->CCR3 = IDLE_PULSE;
+    TIM1->CCR4 = IDLE_PULSE;
 }

+ 2 - 0
modules/pwm_out.h

@@ -7,6 +7,8 @@ typedef enum
 {
     PWM_OUT_CH_1 = 1,
     PWM_OUT_CH_2,
+    PWM_OUT_CH_3,
+    PWM_OUT_CH_4,
     PWM_OUT_CH_MAX,
   
 } pwm_out_ch;

+ 109 - 127
output/drone.hex

@@ -1,15 +1,15 @@
 :020000040800F2
-:1000000078050020E91F0008F91F0008FD1F0008FF
+:1000000078050020C91E0008D91E0008DD1E000862
 :1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000001200008A7
-:100030000000000000000000032000085D1D000813
-:10004000EB180008000000004B190008171B0008FF
-:100050008F1E00081F1F0008971F0008A31F00081D
-:10006000000000001D2000081F20000821200008BB
-:100070002320000825200008272000080000000099
-:100080005D0D0008000000000000000029200008AD
-:10009000000000002B2000082D2000082F20000861
-:1000A000000000003120000800000000332000089C
+:10002000000000000000000000000000E11E0008C9
+:100030000000000000000000E31E0008751B00081F
+:10004000EB180008000000004B190008A71C00086E
+:10005000CB1C0008FF1D0008771E0008831E000847
+:1000600000000000FD1E0008FF1E0008011F000820
+:10007000031F0008051F0008071F000800000000FC
+:100080005D0D00080000000000000000091F0008CE
+:10009000000000000B1F00080D1F00080F1F0008C4
+:1000A00000000000111F000800000000131F0008DE
 :1000B00010B50400002C01D1012026E03D20205C79
 :1000C000002805D100203C216054200000F0DAFD1A
 :1000D00002203D216054211D206800F08BFB01208F
@@ -227,8 +227,8 @@
 :100E100000000000141002401C100240FFFF000000
 :100E20006801002040420F008400002000040040C0
 :100E3000440100203001002054010020580100200E
-:100E40005C010020410600007101002070010020BB
-:100E50006F010020704770477047704770477047B8
+:100E40005C010020E10600006F0100206E0100201F
+:100E50006D010020704770477047704770477047BA
 :100E6000F1B582B000230868D840002800D1F3E033
 :100E70000124086825009D4005400195019800283F
 :100E800000D1E7E0032548682840012803D04868DE
@@ -385,8 +385,8 @@
 :1017F000009900F023F87043050002E00E487043A2
 :101800000500280000E00948F2BD0648006870475E
 :101810002C1002400020024089130000FFF8FFFF57
-:10182000D81F0008040000200410024000127A00B3
-:10183000B81F0008C81F000800093D000022030A65
+:10182000B81E0008040000200410024000127A00D4
+:10183000981E0008A81E000800093D000022030AA7
 :101840008B420BD203098B4219D243088B422ED212
 :10185000411A00D20146524110467047FF22090248
 :101860003FD012068B4205D3121209028B4201D3DC
@@ -403,117 +403,99 @@
 :1019100095FFFFF73DFC002801D001200CE0042CCE
 :1019200009D2002221000020C043FFF720FC054817
 :101930000460002000E0012010BD00BF080000206E
-:1019400004000020000000207047FEE770B586B05C
-:1019500014220021684600F0ADF880208002514931
-:101960000A6802430A600A681040059005988020C2
-:10197000C0020A6802430A60096808400590059899
-:1019800080256D0100950120019002200290032026
-:1019900003909024E40569462000FFF761FA009562
-:1019A00069462000FFF75CFA1A2000903E4E694617
-:1019B0003000FFF755FA0420009069462000FFF739
-:1019C0004FFA012204212000FFF747FB00222900E3
-:1019D0002000FFF742FB00221A213000FFF73DFBF9
-:1019E00006B070BD38B505002800C0B2012834D15A
-:1019F0002E4C20782E4908702078002805D0022827
-:101A000011D008D3032814D019E00122022126485E
-:101A1000FFF723FB13E00122802149019020C0053C
-:101A2000FFF71BFB0BE0012210211F48FFF715FBFE
-:101A300005E0012208211C48FFF70FFBFFE7280003
-:101A4000C0B201282DD12078032802D100202070B7
-:101A500027E02078401C207023E0154800780028FB
-:101A600005D0022811D008D3032814D019E0002291
-:101A700002210D48FFF7F1FA13E00022802149010D
-:101A80009020C005FFF7E9FA0BE00022102106487C
-:101A9000FFF7E3FA05E0002208210348FFF7DDFA2B
-:101AA000FFE731BD14100240000400486C01002023
-:101AB0006D01002010B50400080011000200200094
-:101AC00000F002F8200010BD1206130A1A43130C8E
-:101AD0001A4300BF094205D0830705D00270401C9D
-:101AE000491EF9D1704700001300103906D330B4F5
-:101AF0001400150010393CC0FCD230BC490700D39B
-:101B00000CC000D504C0890002D30280801C0029CB
-:101B100000D502707047FEE7F8B586B080208002DD
-:101B200039490A6802430A60096808400090009831
-:101B30008020000135490A6802430A6009680840AC
-:101B4000009000980220029001210391032104914A
-:101B50000590C020C000019001A99020C005FFF7AA
-:101B60007FF92B4DFFF751FE2A49FFF767FE401E14
-:101B70002880294C29482060288860602848E06037
-:101B800000262661A6606661A6612000FEF790FA35
-:101B9000244D60202860AE602E61EE60AE616E6103
-:101BA0002F1DC226F6003E60042229002000FEF709
-:101BB0004FFD3E60082229002000FEF749FD042168
-:101BC0002000FEF7A3FA08212000FEF79FFA07B0D5
-:101BD000F0BD00B50200D2B2012A02D0022A05D01F
-:101BE00009E00A0092B2104B1A6004E00A0092B2B7
-:101BF0000E4B1A60FFE700BDC220C0000A49086012
-:101C00000A49086070470000141002401810024092
-:101C10006A01002040420F00CC000020002C01404F
-:101C2000204E000014010020382C01403C2C0140C3
-:101C300070B5354C354D2560FFF7DDF800281AD01A
-:101C40000120FFF7CFFEFA267600300000F070F892
-:101C50002560300000F06CF8256000F00DF83000D1
-:101C600000F066F825600020FFF7BCFEFFF7C4FF18
-:101C70000020FFF7CAF870BD10B5254C2078002869
-:101C800005D002280DD007D303280FD013E0214937
-:101C90000120FFF79EFF0EE01E490220FFF799FF8B
-:101CA00009E01D490120FFF794FF04E01A490220D2
-:101CB000FFF78FFFFFE72078032802D10020207074
-:101CC00002E02078401C207010BD80B58CB0082048
-:101CD000009000200890012007906846FFF76AFAFC
-:101CE00009480E4901600E49016004210D4A116046
-:101CF000FA2189000C4A11600C4909680029FBD1BE
-:101D0000024901600DB000BD00300040AAAA0000E9
-:101D10006E010020140500003A070000CCCC000042
-:101D20005555000004300040083000400C300040A1
-:101D300070B50400FFF7DAFD050026000020C0435F
-:101D4000864202D0044800783618FFF7CFFD401BCA
-:101D5000B042FAD370BD00BF0800002080B500F08B
-:101D600045F800F032F81E480178491C01700178EE
-:101D70000A2901D10021017000200A2824DA19491A
-:101D80000C2242438A18127A002A1BD00C224243AA
-:101D90008A189288521E0C234343CB189A800C2237
-:101DA00042438A189288002A0CD10C2242438A1896
-:101DB000D2880C234343CB189A8001220C2343433F
-:101DC000C9184A72401CD8E701BD00B50648016831
-:101DD000002902D00168491E016000BD000000001A
-:101DE000720100200C0000206401002003480168FB
-:101DF000034A127889180160704700BF6001002013
-:101E00000800002080B500F043F800F00BF8FFF761
-:101E10009DFDFFF781FEFEF737FFFFF756FFFFF747
-:101E200007FFFCE738B590B03022002104A8FFF787
-:101E300041FE102200216846FFF73CFE122004906C
-:101E4000012007900990102008900A9002240C9419
-:101E500000250D95A02080030E900F9504A8FFF794
-:101E6000A9F9002801D000F00FF807200090019494
-:101E70000295039501216846FFF7FCFB002801D07D
-:101E800000F002F811B030BD00B572B6FEE7FEE713
-:101E900080B50648016810220A4302600020FFF75F
-:101EA0002BFD00F005F8002002BD000000200240DC
-:101EB000704770B40123002413E00168001D19422B
-:101EC00002D04D466D1E49190C60091D121F042ACF
-:101ED000FAD20D00960701D50C80AD1C1A4000D037
-:101EE0002C700268001D002AE7D170BC704730B426
-:101EF00001220EE00368C31844680830144202D07F
-:101F00004D466D1E64191D6825601B1D241D091F8B
-:101F1000F9D10168001D0029ECD130BC7047FEE703
-:101F200010B5074979441831064C7C44163404E056
-:101F3000081D0A68891888470100A142F8D110BD20
-:101F400008000000280000006BFFFFFF6801000090
-:101F50000C0000200000000097FFFFFF0C000000B5
-:101F6000B0000000000000200000000000F00DF8AC
-:101F7000002801D0FFF7D4FF00BF00BF002000BF42
-:101F800000BFFFF73FFF00F002F80120704780B567
-:101F900000F002F801BDFEE70746384600F002F8FF
-:101FA000FBE7FEE780B500BF00BF024A1100182022
-:101FB000ABBEFBE726000200020304050607080982
-:101FC0000A0B0C0D0E0F1010010203040506070882
-:101FD000090A0B0C0D0E0F1000000000000000009D
-:101FE0000102030406070809014880470148004729
-:101FF000352000080520000800B5FEE700B5FEE723
-:102000007047704700BF00BF00BF00BFFFF7AEFFC3
-:102010000400000000127A0001000000FEE7FEE765
-:10202000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE788
-:06203000FEE7FEE7704729
-:0400000508002005CA
+:1019400004000020000000207047FEE7F8B586B0D4
+:101950008020800246490A6802430A6009680840FC
+:10196000009000988020000142490A6802430A6002
+:10197000096808400090009802200290012103911C
+:10198000032104910590F0200001019001A990200D
+:10199000C005FFF765FA384DFFF737FF3749FFF706
+:1019A0004DFF401E2880364C3648206028886060F5
+:1019B0003548E06000262661A6606661A6612000C9
+:1019C000FEF776FB314D60202860AE602E61EE6040
+:1019D000AE616E612F1D9126F6003E600022290047
+:1019E0002000FEF735FE3E60042229002000FEF7AD
+:1019F0002FFE3E60082229002000FEF729FE3E60EF
+:101A00000C2229002000FEF723FE00212000FEF713
+:101A10007DFB04212000FEF779FB08212000FEF762
+:101A200075FB0C212000FEF771FB07B0F0BD00B57F
+:101A30000200D2B2012A06D019D3032A0DD007D34F
+:101A4000042A0FD013E00A0092B2114B1A600EE084
+:101A50000A0092B20F4B1A6009E00A0092B20E4BD4
+:101A60001A6004E00A0092B20C4B1A60FFE700BD56
+:101A700014100240181002406A01002040420F007A
+:101A8000CC000020002C0140204E0000140100205A
+:101A9000382C01403C2C0140342C0140402C0140AA
+:101AA00080B52C482C490860FFF7A5F9002804D020
+:101AB00000F004F80020FFF7A8F901BD10B5274C8D
+:101AC0002078002805D002280FD008D3032812D090
+:101AD00017E0DC21C9000120FFF7A9FF11E0DC219C
+:101AE000C9000220FFF7A3FF0BE0DC21C90003209F
+:101AF000FFF79DFF05E0DC21C9000420FFF797FFF9
+:101B0000FFE72078032802D10020207002E020782F
+:101B1000401C207010BD80B58CB0082000900020C3
+:101B20000890012007906846FFF744FB0A480C49DB
+:101B300001600C49016004210B4A1160FA218900FF
+:101B40000A4A11600A4909680029FBD1014901606C
+:101B50000DB000BDAAAA0000003000406C010020BA
+:101B6000CCCC000055550000043000400830004047
+:101B70000C30004080B500F045F800F032F81E4807
+:101B80000178491C017001780A2901D100210170F6
+:101B900000200A2824DA19490C2242438A18127AB2
+:101BA000002A1BD00C2242438A189288521E0C2312
+:101BB0004343CB189A800C2242438A189288002A09
+:101BC0000CD10C2242438A18D2880C234343CB18F1
+:101BD0009A8001220C234343C9184A72401CD8E75B
+:101BE00001BD00B506480168002902D00168491E00
+:101BF000016000BD00000000700100200C0000200A
+:101C00006401002003480168034A127889180160C2
+:101C1000704700BF600100200800002080B500F080
+:101C200043F800F00BF800F051F8FFF78FFEFFF7D4
+:101C30002BF8FFF770FFFFF733FFFCE738B590B0E4
+:101C40003022002104A800F073F810220021684619
+:101C500000F06EF8122004900120079009901020E7
+:101C600008900A9002240C9400250D95A020800372
+:101C70000E900F9504A8FFF79DFA002801D000F000
+:101C80000FF8072000900194029503950121684602
+:101C9000FFF7F0FC002801D000F002F811B030BDD1
+:101CA00000B572B6FEE7FEE780B50648016810226F
+:101CB0000A4302600020FFF71FFE00F005F8002035
+:101CC00002BD0000002002407047FEE710B586B05C
+:101CD0001422002101A800F02BF880208002134973
+:101CE0000A6802430A600A68104000900098802049
+:101CF000C0020A6802430A60096808400090009820
+:101D000004200190012002900220039003200490FF
+:101D10009024E40501A92000FFF7A2F80122042184
+:101D20002000FFF79AF906B010BD00001410024021
+:101D300010B50400080011000200200000F002F8B5
+:101D4000200010BD1206130A1A43130C1A4300BFD9
+:101D5000094205D0830705D00270401C491EF9D105
+:101D6000704700001300103906D330B4140015007A
+:101D700010393CC0FCD230BC490700D30CC000D5A0
+:101D800004C0890002D30280801C002900D50270A3
+:101D9000704770B40123002413E00168001D19424C
+:101DA00002D04D466D1E49190C60091D121F042AF0
+:101DB000FAD20D00960701D50C80AD1C1A4000D058
+:101DC0002C700268001D002AE7D170BC704730B447
+:101DD00001220EE00368C31844680830144202D0A0
+:101DE0004D466D1E64191D6825601B1D241D091FAD
+:101DF000F9D10168001D0029ECD130BC7047FEE725
+:101E000010B5074979441831064C7C44163404E077
+:101E1000081D0A68891888470100A142F8D110BD41
+:101E200008000000280000006BFFFFFF68010000B1
+:101E30000C0000200000000097FFFFFF0C000000D6
+:101E4000B0000000000000200000000000F00DF8CD
+:101E5000002801D0FFF7D4FF00BF00BF002000BF63
+:101E600000BFFFF7DBFE00F002F80120704780B5ED
+:101E700000F002F801BDFEE70746384600F002F820
+:101E8000FBE7FEE780B500BF00BF024A1100182043
+:101E9000ABBEFBE7260002000203040506070809A3
+:101EA0000A0B0C0D0E0F10100102030405060708A3
+:101EB000090A0B0C0D0E0F100000000000000000BE
+:101EC000010203040607080901488047014800474A
+:101ED000151F0008E51E000800B5FEE700B5FEE787
+:101EE0007047704700BF00BF00BF00BFFFF7AEFFE5
+:101EF0000400000000127A0001000000FEE7FEE787
+:101F0000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7A9
+:061F1000FEE7FEE770474A
+:0400000508001EE5EC
 :00000001FF

Разница между файлами не показана из-за своего большого размера
+ 354 - 370
project/ewarm/drone.dep


Разница между файлами не показана из-за своего большого размера
+ 4 - 3
project/settings/drone.wsdt


Некоторые файлы не были показаны из-за большого количества измененных файлов