|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Pet Feb 19, 2016 5:33 pm Naslov sporočila: |
|
|
Ne, niso vse plate iste. Katero sploh uporabljaš?
Lahko tudi uploadaš projekt.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
zaz Član
Pridružen-a: Pon 06 Apr 2015 14:23 Prispevkov: 89 Aktiv.: 0.81 Kraj: Ljubljana
|
Objavljeno: Pet Feb 19, 2016 5:43 pm Naslov sporočila: |
|
|
Uporabljam STM32F4-discovery. Bom probou še to, da vidimi če bo delalo pravilno
|
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Pet Feb 19, 2016 5:50 pm Naslov sporočila: |
|
|
Če imaš 407 čip potem dela apb 1 na 42mhz, timer pa na 84.
PLL_P daj na 2 in hse value na 8000000 ker imaš zunanji 8MHZ kristal.
Tema govori drugače o f401 in ne f407, zato ne moremo vedeti kakšne razmere imaš. Tisti example na moji strani je pa za ledice na tvoji plati direkt.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
zaz Član
Pridružen-a: Pon 06 Apr 2015 14:23 Prispevkov: 89 Aktiv.: 0.81 Kraj: Ljubljana
|
Objavljeno: Sob Feb 20, 2016 9:25 am Naslov sporočila: |
|
|
Se o pravičujem, sem malo preveč površno prebral naslov teme.
Ugotovil sem, je nekaj z mojo ploščico narobe, ali pa z prevajalnikom. Poskusil sem en testni program, ki mi je pred parimi dnevi deloval normalno. Malo sem spreminjal vrednosti in prišel do nenavadnih rezultatov.
Uporabljam program CooCox CoIDE.
Koda: |
#include "STM32F4_Discovery.h"
#include <stm32f4xx_tim.h>
#include <stm32f4xx_rtc.h>
#define LEDS_GPIO_CLK RCC_AHB1Periph_GPIOD
#define RED_LED GPIO_Pin_14
#define BLUE_LED GPIO_Pin_15
#define ORANGE_LED GPIO_Pin_13
#define GREEN_LED GPIO_Pin_12
#define USER_BUTTON GPIO_Pin_0
#define ALL_EXTERNAL_LEDS (RED_LED | BLUE_LED | ORANGE_LED | GREEN_LED);
#define LEDS_GPIO_PORT GPIOD
#define USER_BUTTON_PORT GPIOA
#define USER_BUTTON_CLK RCC_AHB1Periph_GPIOA
uint64_t TimerOverflow;
void Delayms(uint32_t ticks)
{
uint32_t i;
for(i = 0; i < ticks; i++);
}
void TIM7_IRQHandler(void)
{
if(TIM_GetITStatus(TIM7, TIM_IT_Update) != RESET)
{
GPIO_ToggleBits(GPIOD, RED_LED);
TIM_ClearITPendingBit(TIM7, TIM_IT_Update);
}
}
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET)
{
GPIO_ToggleBits(GPIOD, BLUE_LED);
EXTI_ClearITPendingBit(EXTI_Line0);
}
}
int main(void)
{
RCC_AHB1PeriphClockCmd (LEDS_GPIO_CLK, ENABLE);
RCC_AHB1PeriphClockCmd (USER_BUTTON_CLK, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = ALL_EXTERNAL_LEDS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(LEDS_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = USER_BUTTON;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(USER_BUTTON_PORT, &GPIO_InitStructure);
//----------------INICIALIZACIJA PREKINITVE-----------------------
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
//------------------------INICIALIZACIJA CASOVNIKA--------------------
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);
TIM_TimeBaseInitTypeDef TIM_Time_Base_Structure;
RCC_ClocksTypeDef RCC_Clocks;
TIM_Time_Base_Structure.TIM_Period = 0x0FFF;
TIM_Time_Base_Structure.TIM_Prescaler = 0;
TIM_Time_Base_Structure.TIM_ClockDivision = 0;
TIM_Time_Base_Structure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM7, &TIM_Time_Base_Structure);
TIM_Cmd(TIM7, ENABLE);
//--------------------------DOLOCITEV, DA TIM7 IZVAJA INTERRRUPT------------
NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE);
while(1)
{
GPIO_ToggleBits(LEDS_GPIO_PORT, GREEN_LED);
Delayms(1e6);
}
} |
Spremenil sem vrednost v klicu funkcije Delayms() v while zanki. Vrednost 1e6 sem spremenil na 1e9 in to je vplivalo tudi na hitrost utripanja ledice, ki je krmiljena zgolj z prekinitvami, ki jih povzroča TIM7. Meni pri tem ni več popolnoma nič jasno, kaj se dogaja. Je to obnašanje normalno?
|
|
Nazaj na vrh |
|
|
zaz Član
Pridružen-a: Pon 06 Apr 2015 14:23 Prispevkov: 89 Aktiv.: 0.81 Kraj: Ljubljana
|
Objavljeno: Sob Feb 20, 2016 9:59 am Naslov sporočila: |
|
|
Naletel sem še na eno nejasno delovanje
Koda: |
void TIM7_IRQHandler(void)
{
if(TIM_GetITStatus(TIM7, TIM_IT_Update) != RESET)
{
GPIO_ToggleBits(GPIOD, RED_LED);
TimerOverflow++;
TIM_ClearITPendingBit(TIM7, TIM_IT_Update);
}
} |
Če v tem delu kode zakomentiram vstico TimerOverflow++, rdeča ledica utripa z zelo veliko frekvenco. Če pa to vrstico ne zakomentiram pa utripa z veliko manjšo frekvenco.
Z spremenljivko TimerOverflow v preostali kodi trenutno ne počnem nič.
Mogoče kdo ve kje bi se nahajala težava? v mojem razumevanju delovanja, v ploščici ali v prevajalniku?
|
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Sob Feb 20, 2016 10:31 am Naslov sporočila: |
|
|
Dodaj projekt da še sam poženem to kodo.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
zaz Član
Pridružen-a: Pon 06 Apr 2015 14:23 Prispevkov: 89 Aktiv.: 0.81 Kraj: Ljubljana
|
Objavljeno: Sob Feb 20, 2016 7:10 pm Naslov sporočila: |
|
|
Hvala za vso tvojo pomoč!
Opis: |
|
Download |
Ime datoteke: |
blinky_test.rar |
Velikost datoteke: |
377.8 KB |
Downloadano: |
4 krat |
|
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Sob Feb 20, 2016 8:00 pm Naslov sporočila: |
|
|
Za začetek naj omenim da nisi poslušal ko sem rekel da nastavi HSE_VALUE vrednost. Beri prejšnje poste.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Sob Feb 20, 2016 11:53 pm Naslov sporočila: |
|
|
Klik
Napisal sem komentarje kjer sem spreminjal.
Problem je tvoje razumevanje C-ja, prevajalnik in platica delata OK
V while(1) sem nastavil 1 sekundo delay.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
zaz Član
Pridružen-a: Pon 06 Apr 2015 14:23 Prispevkov: 89 Aktiv.: 0.81 Kraj: Ljubljana
|
Objavljeno: Ned Feb 21, 2016 12:59 pm Naslov sporočila: |
|
|
Hvala za vso pomoč. Mislim da sedaj tudi razumem delovanje.
HSE vrednost sem poskušal spremeniti, ampak, ker nisem opazil razlike, sem jo raje nazaj spremenil na prvotno.
|
|
Nazaj na vrh |
|
|
71GA Član
Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.16 Kraj: Ljubljana
|
Objavljeno: Pet Feb 17, 2017 9:50 pm Naslov sporočila: |
|
|
jure94 je napisal/a: |
Hvala za odgovore ampak to ni to kar iščem. Če bi hotel uporabiti knjižnjico, bi jo. |
Haha bravo! To je pametno - se boš veliko več naučil. Večina programerjev, ki uporabljajo zgolj knjižnice sploh ne razumejo, kaj točno počnejo... V bistvu se z uporabo knjižnic trenira programski jezik, medtem ko mikrokrmilnik ostane lepo v vatki zavit.
V kolikor boš delal brez prednapisanih driverjev ti priporočam NXP mikrokrmilnike - imajo zelo lepo napisano dokumentacijo.
Mogoče bo moja diplomska naloga super branje zate:
http://ziga-lausegger.com/download/univerza/diploma/diploma-small.pdf
Je pa tako. Če boš želel res vedeti, kako vse deluje boš moral slej ko prej na GNU ARM compiler v katerem boš lahko celo sam napisal zagonsko kodo. Poglej malo v diplomi - sem zelo lepo opisal vse skupaj.
|
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Pet Feb 17, 2017 10:26 pm Naslov sporočila: |
|
|
Zakaj pa na GNU compiler? To pa res nima smisla govorit.
NXP? Freescale je precej boljši, ST tudi (govorim z dejstvi). NXP pocasi zaostaja za rzvojem.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
71GA Član
Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.16 Kraj: Ljubljana
|
Objavljeno: Sob Feb 18, 2017 12:37 am Naslov sporočila: |
|
|
tilz0R je napisal/a: |
Zakaj pa na GNU compiler? To pa res nima smisla govorit.
NXP? Freescale je precej boljši, ST tudi (govorim z dejstvi). NXP pocasi zaostaja za rzvojem. |
Freescale == NXP
|
|
Nazaj na vrh |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.20 Kraj: Črnomelj
|
Objavljeno: Sob Feb 18, 2017 12:39 am Naslov sporočila: |
|
|
Govorim o Kinetis vs LPC.
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
|
71GA Član
Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.16 Kraj: Ljubljana
|
Objavljeno: Sob Feb 18, 2017 8:07 am Naslov sporočila: |
|
|
tilz0R je napisal/a: |
Govorim o Kinetis vs LPC. |
Me zanimajo vzroki za to tvoje mišljenje. Se pustim tudi prepričat. Po mojem mnenju z vidika preglednosti dokumentacije zaenklrat samo ST konkurira NXP.
|
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 76 dni
Powered by phpBB © 2001, 2005 phpBB Group
|