[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