[elektro] STM8 Discovery --> 32 gyakorlati kérdés

Bali Zoltan eltexto at freemail.hu
Sun Dec 7 09:50:14 CET 2014


Hi,

Ennyire még nem másztam bele, ez egy adhoc összeállítás.
A felprogramozás a gyári mintapélda alapján, csak a prescaler
felprogramozását módosítottam.

   /* TIM1 clock enable */
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
   /* Time base configuration */
   TIM_TimeBaseStructure.TIM_Period = 65535;
   TIM_TimeBaseStructure.TIM_Prescaler = 0;
   TIM_TimeBaseStructure.TIM_ClockDivision = 0;
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

   /* Compute the prescaler value */
   PrescalerValue = (uint16_t) ((SystemCoreClock / 2) / 10000000) - 1;
   /* Prescaler configuration */
   TIM_PrescalerConfig(TIM3, PrescalerValue, TIM_PSCReloadMode_Immediate);

APB preiféria osztó 2  (SystemCoreClock / 2 ).
A TIM3-at töröltem itt az IT ben is engedélyezés előtt,
de kitettem a main-ba próbaképpen.
TIM3->CNT = 0x00000000UL;

Na de, első eset 37us ok, és utána csak ezt az előosztót változtattam.
Jó még a prescalert live nem néztem, de most meg fogom.
Hátha elcseszi a lib.

Köszi

Üdv.  Zoli

2014.12.07. 9:13 keltezéssel, hg12345 írta:
> Hi,
>
> A IT handlerből sok minden nem látszik :-) Mivel nem itt olvasod ki az értékét még hazardos is lehet!
> Maga a program csak indítja és leállítja a számlálót. Hogy a számláló hogy van felprogramozva az itt nem látszik, a kiolvasás és a számláló nullázása se.
>
>
> Pontos időmérésre több megoldás létezik:
> a capture, ebbe nem játszik bele az IT késleltetés a kezelésből adódó eltérő futási idők. Ha TIMER2 esetén 32 bites számláló áll rendelkezésre, de 16 bit esetén is megoldható a hosszú időmérés, az átfordulást IT-vel kezelve akárhány bitesre bővíthető a számláló.
>
> vagy
> az ST eszközöknél felfűzhető az TMR2,TM3,TMR4 számláló egy 48 bites lánccá, ITR és az ETR bemenetekkel a számlálás tiltható és engedélyezhető is, egyenként és egybe is, hasonlóan a törlés is megoldható, gondlom ad IT amikor leáll vagy DMA-val kiolvasod, és csak a DMA-t kell birizgálni a többi automatikussá tehető. Max késleltetési 3...5 óraciklus mert a DMA és uC azonos buszt használni és ha egyszerre szeretnék használni akkor az nem megy...
>
> A TIMER3-nak mi a órajel forrása, van előosztó előtte? Ez nem látszik a kezelésből.
> Indítád rlött törlöd a számláló értékét...
>
> Bali Zoltan <eltexto at freemail.hu> írta:
>> Hali!
>>
>> Na én pont most nyüstölöm ezt és van amit nem értek.
>> Külső mexakítás portlábról mérem az időt a TIM3-al.
>> Fel és lefutó éllel meg akarom mérni a pulzus hosszát.
>>
>> void EXTI1_IRQHandler(void)
>> {
>>    if(EXTI_GetITStatus(EXTI_Line1) != RESET)
>>    {
>>      if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1))
>>      {
>>         /* TIM3 enable counter */
>>        TIM3->CR1 |= TIM_CR1_CEN;
>>        ADC_ClearFlag(ADC1,ADC_FLAG_OVR);
>>        ADC_ClearFlag(ADC2,ADC_FLAG_OVR);
>>        ADC_ClearFlag(ADC3,ADC_FLAG_OVR);
>>        DMA_Cmd(DMA2_Stream0, ENABLE);
>>
>>        /* Start ADC1 Software Conversion */
>>        ADC_SoftwareStartConv(ADC1);
>>      }
>>      else
>>      {
>>        /* TIM3 disable counter */
>>        TIM3->CR1 &= (uint16_t)~TIM_CR1_CEN;
>>        SampleReady = 1;
>>      }
>>      /* Clear the EXTI line 1 pending bit */
>>      EXTI_ClearITPendingBit(EXTI_Line1);
>>    }
>> }
>>
>> Elsőre 1usec időalapot állítottam a TIM3-nak.
>> 37 a main-ban mért elvileg már álló TIM3->CNT értéke.
>> Az analizátorral 37.61us-ot mérek. Edigg érthető.
>> Szerettem volna pontosabban mérni, ezért 10MHz
>> időalapot állítottam a prescalerrel.
>>
>> PrescalerValue = (uint16_t) ((SystemCoreClock / 2) / 10000000) - 1;
>>
>> A rendszer órajel 144MHz, kerek 71 jön ki értékre. Viszont most
>> 384-et mér a TIM3. Ezt viszont nem értem. Elég jelentős eltérés.
>>
>> Van ötlete valakinek?
>>
>> Köszi
>>
>> Üdv.  Zoli
>>
>>
>>
>>
>>
>>
>>
>> 2014.12.06. 21:29 keltezéssel, elight írta:
>>> Sziasztok..
>>>
>>>
>>> Lehet pont nem ezt vártátok,
>>> de errefelé is olvasgatni  esetleg  hasznos lehet..
>>> https://www.aut.bme.hu/Upload/Pages/Szakirany/VillamosBsc/F4Discovery/stm32f4discovery-eclipse_v2.pdf
>>>
>>> Most olvastam, .visual  net- is befordítható pl. a nagyobb chipekbe.
>>>
>>> Ez nekem kicsit magas, mint teknősnek a létra..
>>> De szorgosan  nézelődök ..
>>>                    nekem is van egy kis panelkém ,és  életre kellne leheni
>>> valahogy.
>>>
>>> Üdv István
>>>
>>>
>> -----------------------------------------
>>           elektro[-flame|-etc]
> -----------------------------------------
>            elektro[-flame|-etc]



More information about the Elektro mailing list