PWM input -> Duty_Cycle_Permilles
This commit is contained in:
parent
49f261078b
commit
04f1835265
4 changed files with 69 additions and 48 deletions
|
@ -317,7 +317,7 @@
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>DLGDARM</Key>
|
<Key>DLGDARM</Key>
|
||||||
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=504,37,1150,710,0)(110=60,88,280,548,0)(111=752,104,972,564,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=533,85,954,512,0)(121=892,96,1313,523,0)(122=674,103,1095,530,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=709,11,1303,762,0)(131=150,13,744,764,0)(132=599,17,1193,768,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name>
|
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=504,37,1150,710,0)(110=60,88,280,548,0)(111=752,104,972,564,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=533,85,954,512,0)(121=684,17,1105,444,0)(122=674,103,1095,530,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=709,11,1303,762,0)(131=150,13,744,764,0)(132=599,17,1193,768,0)(133=112,9,706,760,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
|
@ -411,18 +411,13 @@
|
||||||
<LogicAnalyzers>
|
<LogicAnalyzers>
|
||||||
<Wi>
|
<Wi>
|
||||||
<IntNumber>0</IntNumber>
|
<IntNumber>0</IntNumber>
|
||||||
<FirstString>((porta & 0x00000080) >> 7 & 0x80) >> 7</FirstString>
|
<FirstString>((portb & 0x00000040) >> 6 & 0x40) >> 6</FirstString>
|
||||||
<SecondString>00800000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274612026203078303030303030383029203E3E2037000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000CDCCCCCCCCCCD43F1800000000000000000000000000000000000000540E0008</SecondString>
|
<SecondString>00008000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030343029203E3E2036000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000E03F0D00000000000000000000000000000000000000440E0008</SecondString>
|
||||||
</Wi>
|
</Wi>
|
||||||
<Wi>
|
<Wi>
|
||||||
<IntNumber>1</IntNumber>
|
<IntNumber>1</IntNumber>
|
||||||
<FirstString>(porta & 0x00000001)</FirstString>
|
<FirstString>((portb & 0x00000080) >> 7 & 0x80) >> 7</FirstString>
|
||||||
<SecondString>00000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F72746120262030783030303030303031290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000000000000000D43F1800000000000000000000000000000000000000E20E0008</SecondString>
|
<SecondString>00000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030383029203E3E2037000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000000000000000E03F0D00000000000000000000000000000000000000040E0008</SecondString>
|
||||||
</Wi>
|
|
||||||
<Wi>
|
|
||||||
<IntNumber>2</IntNumber>
|
|
||||||
<FirstString>((portb & 0x00000040) >> 6 & 0x40) >> 6</FirstString>
|
|
||||||
<SecondString>00008000000000000000000000000000E0FFEF400000000000000000000000000000000028706F7274622026203078303030303030343029203E3E2036000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000003000000333333333333D73F1800000000000000000000000000000000000000440E0008</SecondString>
|
|
||||||
</Wi>
|
</Wi>
|
||||||
</LogicAnalyzers>
|
</LogicAnalyzers>
|
||||||
<DebugDescription>
|
<DebugDescription>
|
||||||
|
|
|
@ -55,3 +55,11 @@ void MyPWM_Set_Impulse_Duration(TIM_TypeDef * Timer, uint32_t CompareValue, int
|
||||||
else LL_TIM_OC_SetCompareCH4(Timer, CompareValue);
|
else LL_TIM_OC_SetCompareCH4(Timer, CompareValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int MyPWM_Duty_Cycle_Permilles(TIM_TypeDef * Timer, int channel1, int channel2) {
|
||||||
|
if(channel1 == LL_TIM_CHANNEL_CH1 && channel2 == LL_TIM_CHANNEL_CH2) {
|
||||||
|
return LL_TIM_IC_GetCaptureCH2(Timer) / LL_TIM_IC_GetCaptureCH1(Timer) * 1000;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
#ifndef MYPWM_H
|
||||||
|
#define MYPWM_H
|
||||||
|
|
||||||
#include "stm32f1xx_ll_bus.h" // Pour l'activation des horloges
|
#include "stm32f1xx_ll_bus.h" // Pour l'activation des horloges
|
||||||
#include "stm32f1xx_ll_tim.h"
|
#include "stm32f1xx_ll_tim.h"
|
||||||
|
|
||||||
|
@ -7,3 +10,7 @@ void MyPWM_Conf_Output(TIM_TypeDef * Timer, int channel);
|
||||||
void MyPWM_Conf_Input(TIM_TypeDef * Timer, int channel1, int channel2);
|
void MyPWM_Conf_Input(TIM_TypeDef * Timer, int channel1, int channel2);
|
||||||
|
|
||||||
void MyPWM_Set_Impulse_Duration(TIM_TypeDef * Timer, uint32_t CompareValue, int channel);
|
void MyPWM_Set_Impulse_Duration(TIM_TypeDef * Timer, uint32_t CompareValue, int channel);
|
||||||
|
|
||||||
|
int MyPWM_Duty_Cycle_Permilles(TIM_TypeDef * Timer, int channel1, int channel2);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
87
Src/main.c
87
Src/main.c
|
@ -39,57 +39,68 @@ int main(void)
|
||||||
/* Configure the system clock to 72 MHz */
|
/* Configure the system clock to 72 MHz */
|
||||||
SystemClock_Config();
|
SystemClock_Config();
|
||||||
|
|
||||||
/*===Test Output===*/
|
|
||||||
|
|
||||||
TIM_TypeDef *Timer1 = TIM3;
|
|
||||||
int Channel1 = LL_TIM_CHANNEL_CH2;
|
|
||||||
TIM_TypeDef *Timer2 = TIM4;
|
|
||||||
int Channel2 = LL_TIM_CHANNEL_CH4;
|
|
||||||
|
|
||||||
MyTimer_Conf(Timer1,0xFFFE, 0x72);
|
|
||||||
MyTimer_Conf(Timer2,0xFFFE, 0x72);
|
|
||||||
|
|
||||||
MyPWM_Conf_Output(Timer1, Channel1);
|
|
||||||
MyPWM_Conf_Output(Timer2, Channel2);
|
|
||||||
|
|
||||||
MyPWM_Set_Impulse_Duration(Timer1, 25, Channel1);
|
|
||||||
MyPWM_Set_Impulse_Duration(Timer2, 75, Channel2);
|
|
||||||
|
|
||||||
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
|
|
||||||
LL_GPIO_InitTypeDef My_GPIO_Init_Struct;
|
|
||||||
My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_7;
|
|
||||||
My_GPIO_Init_Struct.Mode = LL_GPIO_MODE_ALTERNATE;
|
|
||||||
My_GPIO_Init_Struct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
||||||
My_GPIO_Init_Struct.Speed = LL_GPIO_MODE_OUTPUT_2MHz;
|
|
||||||
My_GPIO_Init_Struct.Pull = LL_GPIO_PULL_DOWN;
|
|
||||||
LL_GPIO_Init(GPIOA, &My_GPIO_Init_Struct);
|
|
||||||
|
|
||||||
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
|
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
|
||||||
My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_9;
|
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
|
||||||
My_GPIO_Init_Struct.Mode = LL_GPIO_MODE_ALTERNATE;
|
LL_GPIO_InitTypeDef My_GPIO_Init_Struct;
|
||||||
My_GPIO_Init_Struct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
|
||||||
My_GPIO_Init_Struct.Speed = LL_GPIO_MODE_OUTPUT_2MHz;
|
|
||||||
My_GPIO_Init_Struct.Pull = LL_GPIO_PULL_DOWN;
|
|
||||||
LL_GPIO_Init(GPIOB, &My_GPIO_Init_Struct);
|
|
||||||
|
|
||||||
My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_0;
|
/*===Test Output===*/
|
||||||
My_GPIO_Init_Struct.Mode = LL_GPIO_MODE_FLOATING;
|
|
||||||
My_GPIO_Init_Struct.Pull = LL_GPIO_PULL_DOWN;
|
// TIM_TypeDef *Timer1 = TIM3;
|
||||||
LL_GPIO_Init(GPIOA, &My_GPIO_Init_Struct);
|
// int Channel1 = LL_TIM_CHANNEL_CH2;
|
||||||
|
// TIM_TypeDef *Timer2 = TIM4;
|
||||||
|
// int Channel2 = LL_TIM_CHANNEL_CH4;
|
||||||
|
//
|
||||||
|
// MyTimer_Conf(Timer1,0xFFFE, 0x72);
|
||||||
|
// MyTimer_Conf(Timer2,0xFFFE, 0x72);
|
||||||
|
//
|
||||||
|
// MyPWM_Conf_Output(Timer1, Channel1);
|
||||||
|
// MyPWM_Conf_Output(Timer2, Channel2);
|
||||||
|
//
|
||||||
|
// MyPWM_Set_Impulse_Duration(Timer1, 25, Channel1);
|
||||||
|
// MyPWM_Set_Impulse_Duration(Timer2, 75, Channel2);
|
||||||
|
//
|
||||||
|
// My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_7;
|
||||||
|
// My_GPIO_Init_Struct.Mode = LL_GPIO_MODE_ALTERNATE;
|
||||||
|
// My_GPIO_Init_Struct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
||||||
|
// My_GPIO_Init_Struct.Speed = LL_GPIO_MODE_OUTPUT_2MHz;
|
||||||
|
// My_GPIO_Init_Struct.Pull = LL_GPIO_PULL_DOWN;
|
||||||
|
// LL_GPIO_Init(GPIOA, &My_GPIO_Init_Struct);
|
||||||
|
//
|
||||||
|
// My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_9;
|
||||||
|
// My_GPIO_Init_Struct.Mode = LL_GPIO_MODE_ALTERNATE;
|
||||||
|
// My_GPIO_Init_Struct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
||||||
|
// My_GPIO_Init_Struct.Speed = LL_GPIO_MODE_OUTPUT_2MHz;
|
||||||
|
// My_GPIO_Init_Struct.Pull = LL_GPIO_PULL_DOWN;
|
||||||
|
// LL_GPIO_Init(GPIOB, &My_GPIO_Init_Struct);
|
||||||
|
//
|
||||||
|
// MyTimer_Start(Timer1);
|
||||||
|
// MyTimer_Start(Timer2);
|
||||||
|
|
||||||
|
/*===Test Input===*/
|
||||||
|
|
||||||
|
TIM_TypeDef *Timer = TIM4;
|
||||||
|
int channel1 = LL_TIM_CHANNEL_CH1;
|
||||||
|
int channel2 = LL_TIM_CHANNEL_CH2;
|
||||||
|
|
||||||
My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_6;
|
My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_6;
|
||||||
My_GPIO_Init_Struct.Mode = LL_GPIO_MODE_FLOATING;
|
My_GPIO_Init_Struct.Mode = LL_GPIO_MODE_FLOATING;
|
||||||
My_GPIO_Init_Struct.Pull = LL_GPIO_PULL_DOWN;
|
My_GPIO_Init_Struct.Pull = LL_GPIO_PULL_DOWN;
|
||||||
LL_GPIO_Init(GPIOB, &My_GPIO_Init_Struct);
|
LL_GPIO_Init(GPIOB, &My_GPIO_Init_Struct);
|
||||||
|
|
||||||
|
My_GPIO_Init_Struct.Pin = LL_GPIO_PIN_7;
|
||||||
|
LL_GPIO_Init(GPIOB, &My_GPIO_Init_Struct);
|
||||||
|
|
||||||
MyTimer_Start(Timer1);
|
MyTimer_Conf(Timer,0xFFAD,0x15);
|
||||||
MyTimer_Start(Timer2);
|
|
||||||
|
MyPWM_Conf_Input(Timer, channel1, channel2);
|
||||||
|
|
||||||
|
int duty_cycle = 0;
|
||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
duty_cycle = MyPWM_Duty_Cycle_Permilles(Timer, channel1, channel2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue