<?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=12554&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-06T12:10:24+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=12554&amp;mode</id>
<entry>
<author><name><![CDATA[Tannis]]></name></author>
<updated>2015-08-06T12:10:24+01:00</updated>
<published>2015-08-06T12:10:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12554&amp;p=136561#p136561</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12554&amp;p=136561#p136561"/>
<title type="html"><![CDATA[Problem z zewnętrznym przerwaniem\trybem low power.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12554&amp;p=136561#p136561"><![CDATA[
Witam, od kilku dni bawię się w komunikację bezprzewodową, wykorzystując moduły radiowe CC1101. W celu obniżenia poboru mocy układu odbiorczego, staram się zmienić tryb pracy procesora na STOP. Wybudzanie go ma się odbywać, gdy na lini GPIOA, PIN0 pojawi się zbocze narastające. Sprawdzając analizatorem stanów logicznych żadne powiadomienie(zbocze) mi nie przychodzi na linie 0. Po zakomentowaniu linijki kodu, która to wprowadza procesor w tryb obniżonego poboru mocy to wszystko działa tak jak trzeba. W tym projekcie muszę użyć jednego z tych trybów. Poniżej zamieszczam kod głównej pętli programu oraz konfiguracji przerwania jak i portu GPIOA pinu 0.<br /><br />Główna pętla programu:<br />[syntax=c]while(1){<br />HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI);<br />HAL_NVIC_DisableIRQ(EXTI0_1_IRQn);<br />if(flaga == 1){<br /><br />/*Odbior danych*/<br />RFReceivePacket(zmienna,&amp;rozmiar);<br />printf(&quot;Odebrane dane = %d\n\r&quot;, (int)*(zmienna));<br />TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);<br />TI_CC_SPIStrobe(TI_CCxxx0_SFRX);//czyszczenie rxfifo<br />TI_CC_SPIStrobe(TI_CCxxx0_SRX);<br />TI_CC_Wait(10000);<br /><br />/*Pomiar temperatury*/<br />AD_value = HAL_ADC_GetValue(&amp;hadc); <br />napiecie = 3.3*(AD_value)/4095;<br />TemperatureC = 1000*(napiecie - b)/(Avg_Slope);<br /><br />/*Wysylanie danych*/<br />if (zmienna&#91;0&#93; == 3 &amp;&amp; zmienna&#91;1&#93; == 0x53){<br />dane&#91;2&#93; = TemperatureC;<br />RFSendPacket(dane,3);<br />printf(&quot;Temperatura: %d\n\r&quot;,TemperatureC);<br />TI_CC_Wait(10000);<br />}<br /><br />flaga = 0;<br />}<br /><br />HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);<br /><br />  }[/syntax]<br /><br />Konfiguracja NVIC:<br />[syntax=c]void NVIC_Config(void)<br />{<br />HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);<br />}[/syntax]<br /><br /><br />Konfiguracja GPIO:<br />[syntax=c]GPIO_InitStruct.Pin = GPIO_PIN_0;<br />GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;<br />GPIO_InitStruct.Pull = GPIO_NOPULL;<br />GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;<br />HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);[/syntax]<br /><br /><br />Konfiguracja EXTI:<br />[syntax=c]void EXTI0_1_IRQHandler(void){<br /><br />HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);<br />flaga = 1;<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5915">Tannis</a> — 6 sie 2015, o 12:10</p><hr />
]]></content>
</entry>
</feed>