<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=46&amp;t=20353&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-03-06T22:52:47+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=20353&amp;mode</id>
<entry>
<author><name><![CDATA[bastik]]></name></author>
<updated>2018-03-06T22:52:47+01:00</updated>
<published>2018-03-06T22:52:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=205071#p205071</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=205071#p205071"/>
<title type="html"><![CDATA[Re: Pomiar czasu trwaniastanu wysokiego za pomocą STMa32F1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=205071#p205071"><![CDATA[
Tego dokumentu akurat nie widziałem, ale niewiele mi on pomógł póki, co. <br />Przygotowałem część programu, w której konfiguruje podstawowe parametry i wywołuje przerwanie w przypadku wykrycia przejścia z 0 na 1. W wyniku obsługi przerwania uruchamiany jest licznik. Jak szukałem rozwiązania to widziałem temat chyba na elektrodzie jak ktoś też robił pomiar czasu trwania impulsu, tylko, że ustawiając licznik poprzez same rejestry, bez biblioteki. Ponieważ nigdy jeszcze nie pracowałem na samych rejestrach także obawiam się, że bez rozpoczęcia nauki programowania STM-a na rejestrach od podstaw, nie zrozumiem, co dzieje się w przypadku znalezionego kodu.  Wiem, że do odczytania wartości licznika wykorzystać mogę &quot;TIM_GetCapture1&quot; no, ale najpierw muszę dokonać poprawnego pomiaru a jeszcze wcześniej poprawnego ustawienia licznika a z tym mam problem.  <br />[syntax=c]int main(void)<br />{<br />TIM5_Config();<br />NVIC_Config ();<br />IWDG_ReloadCounter();<br /><br />RCC_Config();<br />RCC_APB1PeriphClockCmd(RCC_APB1PeriphClockCmd, ENABLE);<br /><br />while(1){<br /><br /><br />}<br />}<br />RCC_Config()<br />{<br />BKP_DeInit();<br />  // Reset RCC<br />  RCC_DeInit ();<br />  // HSI ON<br />  RCC_HSICmd(ENABLE);<br />  // Wait for HSI<br />  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET){};<br /><br />    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);<br />    FLASH_SetLatency(FLASH_Latency_2);<br />    <br />RCC_HCLKConfig(RCC_SYSCLK_Div1);<br />    RCC_PCLK2Config(RCC_HCLK_Div1); <br />    RCC_PCLK1Config(RCC_HCLK_Div1);<br />    RCC_HCLKConfig(RCC_SYSCLK_Div1);<br />    RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);<br />  <br />    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);<br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);<br />}<br /><br />void IWDG_Config (void) {<br />// watchdoga IWGD<br />IWDG_WriteAccessCmd (IWDG_WriteAccess_Enable);<br />IWDG_SetPrescaler(IWDG_Prescaler_4);// 40kHz/4 = 10kHz<br />IWDG_SetReload(0x28A);// 65ms<br />IWDG_Enable();// Start IWDG oraz LSI<br />}<br />void TIM5_IRQHandler(void)<br />{<br />TIM_Cmd(TIM5, ENABLE);<br />}<br />void TIM5_Config (void)<br />{<br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);<br /><br />// Ustawienia podstawy czasu TIM5<br />TIM_TimeBaseStructure.TIM_Period= 0xFFFF;//65535<br />TIM_TimeBaseStructure.TIM_Prescaler = 23; // fclk = 72MHz/24 =okolo 3MHz<br />TIM_TimeBaseStructure.TIM_ClockDivision = 1;<br />TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;<br />TIM_TimeBaseInit(TIM5, &amp;TIM_TimeBaseStructure);<br /><br /><br />// Zrodlo przerwania kanal 1 <br />TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);<br />TIM_Cmd(TIM5,ENABLE); <br /><br />// TIM5_CH1, Rising edge, no filter<br />TIM_TIxExternalClockConfig(TIM5, TIM_TIxExternalCLK1Source_TI1, TIM_ICPolarity_Rising, 0x00);<br />TIM5_ICInitStructure.TIM_Channel=TIM_Channel_1;<br />TIM5_ICInitStructure.TIM_ICFilter=0;<br />TIM5_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising; <br />TIM5_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;<br />TIM5_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;<br /><br />TIM_ICInit(TIM5, &amp;TIM5_ICInitStructure);<br />}<br /><br />void NVIC_Config (void)<br />{<br />NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;<br />NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;<br />NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;<br />NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; <br />NVIC_Init(&amp;NVIC_InitStructure);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8145">bastik</a> — 6 mar 2018, o 22:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJS]]></name></author>
<updated>2018-03-06T17:26:05+01:00</updated>
<published>2018-03-06T17:26:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=205054#p205054</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=205054#p205054"/>
<title type="html"><![CDATA[Re: Pomiar czasu trwaniastanu wysokiego za pomocą STMa32F1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=205054#p205054"><![CDATA[
Zapoznałeś się z tym dokumentem <a href="http://read.pudn.com/downloads106/sourcecode/embed/437624/stm32/STM32F%20Documents/Application%20Note/STM32F10xxx%20TIM%20application%20examples.pdf"  class="postlink">http://read.pudn.com/downloads106/sourcecode/embed/437624/stm32/STM32F%20Documents/Application%20Note/STM32F10xxx%20TIM%20application%20examples.pdf</a>?<br />Może Ci pomoże - zwłaszcza sekcja <strong><em>6. STM32F10xxx TIMx PWM input mode</em></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1614">PJS</a> — 6 mar 2018, o 17:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bastik]]></name></author>
<updated>2018-03-05T22:10:25+01:00</updated>
<published>2018-03-05T22:10:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=204996#p204996</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=204996#p204996"/>
<title type="html"><![CDATA[Re: Pomiar czasu trwaniastanu wysokiego za pomocą STMa32F1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=204996#p204996"><![CDATA[
Udało mi się wymyślić coś takiego(jak poniżej) aż do momentu, w którym zastanawiam się jak ustawić wykrywanie zbocza opadającego. Wiem, że stan licznika jest zapamiętywany w rejestrze CCR, jego odczyt planuje wykonać po wykryciu zbocza opadającego sygnału. Ale najpierw muszę prawidłowo skonfigurować licznik do wykrywania odpowiedniego zbocza a na to nie za bardzo mam jakiś pomysł.<br />[syntax=c]//<br /><br />RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); // Podlaczenie zegara dla TIM5<br /><br />// Ustawienia podstawy czasu TIM5<br />TIM_TimeBaseStructure.TIM_Period= 0xFFFF;//65535<br />TIM_TimeBaseStructure.TIM_Prescaler = 23; // fclk = 72MHz/24 =okolo 3MHz liczone od 0 do 23<br />TIM_TimeBaseStructure.TIM_ClockDivision = 1;<br />TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // zliczanie w gore<br />TIM_TimeBaseInit(TIM5, &amp;TIM_TimeBaseStructure);<br /><br />// Ustawienia podstawy czasu <br />NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;<br />NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //priorytet 0<br />NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; // podpriorytet 0<br />NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // uruchomienie przerwania <br />NVIC_Init(&amp;NVIC_InitStructure);<br /><br />// Zrodlo przerwania kanal 1 <br />TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);<br />TIM_Cmd(TIM5,ENABLE); <br /><br />// kanal 1 jako wejscie impulsow TIM5, zbocze narastajace, bez filtra<br />TIM_TIxExternalClockConfig(TIM5, TIM_TIxExternalCLK1Source_TI1, TIM_ICPolarity_Rising, 0x00);<br />// konfiguracja kanalu 1 do przechwycenia stanu TIM5 w momencie podania zbocza narastajacego na wejscie PA0<br />TIM5_ICInitStructure.TIM_Channel=TIM_Channel_1;<br />TIM5_ICInitStructure.TIM_ICFilter=0;// filtr wylaczony<br />TIM5_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising; // zbocze narastajace<br />TIM5_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;// dzielnik czestotliwosci wejsciowej<br />TIM5_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI; // Przerwanie bezposrednie pochodzace od TIM5<br />// konfiguracja kanalu 1 do przechwycenia stanu TIM5 w momencie podania zbocza opadajacego na wejscie PA0<br /><br /><br />TIM_ICInit(TIM5, &amp;TIM5_ICInitStructure);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8145">bastik</a> — 5 mar 2018, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bastik]]></name></author>
<updated>2018-03-04T17:44:27+01:00</updated>
<published>2018-03-04T17:44:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=204912#p204912</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=204912#p204912"/>
<title type="html"><![CDATA[Pomiar czasu trwaniastanu wysokiego za pomocą STMa32F1]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20353&amp;p=204912#p204912"><![CDATA[
Witam<br /><br />Mam przebieg prostokątny (pochodzący z detektora przejścia przez 0) i potrzebuje zmierzyć czas trwania t oraz czas trwania dwunastu „stanów wysokich” (jak na rysunku). Dotychczas za zliczanie impulsów opowiadał układ PD71054 (zliczający z częstotliwością 3MHz). Pomysł mam taki, że po wykryciu stanu wysokiego następuje obsługa przerwania, w przerwaniu uruchamiany jest licznik (taktowanie licznika 3MHz) następnie, po wystąpieniu stanu niskiego licznik jest zatrzymywany a jego wartość jest przekazywana do zmiennej pomocniczej i tam jest sumowane 12 kolejnych odczytów. <br />Czy jest możliwe ustawienie dwóch przerwań na jednym pinie? <br />W jaki sposób odczytywać wartość licznika po jego zatrzymaniu? <br />Czy sam pomysł rozwiązania tego problemu jest dobry czy mogę użyć innego mechanizmu wbudowanego w STMa? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><a href="https://obrazkiforum.atnel.pl/8145/27cbcc4de2ea19d0b8ee237ccc8a716d.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/8145/27cbcc4de2ea19d0b8ee237ccc8a716d.jpg" alt="Obrazek" /></a><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8145">bastik</a> — 4 mar 2018, o 17:44</p><hr />
]]></content>
</entry>
</feed>