so schuldigt, bin heute voll durch den wind
auch die beschreibung meines problems war müll.
habe soviel umher geschmissen, das ich nichts mehr erkannt habe.
nunja, es war tatsächlich dieses von anschein angesprochene problem -_-
wald... bäume ... und so :D
mir gings darum eine pwm zu messen...
nunja das geht irgendwie...
nunja, das pwm signal kommt von einem empfänger welches
man im RC Modell bereich nutzt...
es hat laut oszi 49,85Hz... und je nachdem wie man die steuerung tätigt,
hat man eine größere pulsbreite oder weniger...
mein jetztiges problem ist ein mathematisches...
ich habe wie erwähnt einen grundpuls,
und möchte ab einer bestimmten breite,
eine bedingung einführen das zum motorstopp führt...
von wo weiß ich das verhältnis,
wie dutycycle zur periode steht...
z.b.
1 | void TIM2_IRQHandler(void)
|
2 | {
|
3 | if (TIM_GetITStatus(TIM2, TIM_IT_CC2) !=RESET)
|
4 | {
|
5 | /* Get the Input Capture value */
|
6 | IC2Value = TIM_GetCapture2(TIM2);
|
7 |
|
8 | if (IC2Value != 0)
|
9 | {
|
10 | /* Duty cycle computation */
|
11 | DutyCycle = (TIM_GetCapture1(TIM2) * 100) / IC2Value;
|
12 |
|
13 | /* Frequency computation */
|
14 | Frequency = 72000 / IC2Value;
|
15 | }
|
16 | else
|
17 | {
|
18 | DutyCycle = 0;
|
19 | Frequency = 0;
|
20 | }
|
21 | sendstring_usart("TIM2 Interrupt\n\r");
|
22 | countertim2++;
|
23 | TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);
|
24 | }
|
25 |
|
26 | /*******************************************************/
|
27 | // Start/Stopp
|
28 | /*******************************************************/
|
29 |
|
30 | if((DutyCycle > ???) && (DuryCycle < ????)) //<------
|
31 | {
|
32 | motorstopp();
|
33 | merker = 1;
|
34 | }
|
35 | else if((DutyCycle > ?2?2?) && (DuryCycle < ?2?2?)) //<------
|
36 | {
|
37 | motorstopp();
|
38 | merker = 1;
|
39 | }
|
40 | else
|
41 | {
|
42 | if(merker =1)
|
43 | {
|
44 | motorstart();
|
45 | merker = 0;
|
46 | }
|
47 | //motor ist an und wird weiterhin gefüttert
|
48 | }
|
49 |
|
50 | }
|
Ich weiß dass z.b. der Ruhezustand des Motors 1,4ms hat,
Min Breite 1,01ms und Max Breite 1,78ms
Also würde ich gerne von
(1,01 bis 1,3) oder (1,5 bis 1,78)
denn motor stoppen lassen
nur wie komme ich auf den wert?
z.B. (100/20) * den enstprechenden wert?