www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Timer in GPIO - STM32F401RE
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Pet Feb 19, 2016 5:33 pm    Naslov sporočila:   Odgovori s citatom

Ne, niso vse plate iste. Katero sploh uporabljaš?

Lahko tudi uploadaš projekt.

_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
zaz
Član
Član



Pridružen-a: Pon 06 Apr 2015 14:23
Prispevkov: 89
Aktiv.: 0.81
Kraj: Ljubljana

PrispevekObjavljeno: Pet Feb 19, 2016 5:43 pm    Naslov sporočila:   Odgovori s citatom

Uporabljam STM32F4-discovery. Bom probou še to, da vidimi če bo delalo pravilno
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Pet Feb 19, 2016 5:50 pm    Naslov sporočila:   Odgovori s citatom

Č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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
zaz
Član
Član



Pridružen-a: Pon 06 Apr 2015 14:23
Prispevkov: 89
Aktiv.: 0.81
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 20, 2016 9:25 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
zaz
Član
Član



Pridružen-a: Pon 06 Apr 2015 14:23
Prispevkov: 89
Aktiv.: 0.81
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 20, 2016 9:59 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Sob Feb 20, 2016 10:31 am    Naslov sporočila:   Odgovori s citatom

Dodaj projekt da še sam poženem to kodo.
_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
zaz
Član
Član



Pridružen-a: Pon 06 Apr 2015 14:23
Prispevkov: 89
Aktiv.: 0.81
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 20, 2016 7:10 pm    Naslov sporočila:   Odgovori s citatom

Hvala za vso tvojo pomoč!


blinky_test.rar
 Opis:

Download
 Ime datoteke:  blinky_test.rar
 Velikost datoteke:  377.8 KB
 Downloadano:  4 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Sob Feb 20, 2016 8:00 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Sob Feb 20, 2016 11:53 pm    Naslov sporočila:   Odgovori s citatom

Klik

Napisal sem komentarje kjer sem spreminjal.

Problem je tvoje razumevanje C-ja, prevajalnik in platica delata OK Smile

V while(1) sem nastavil 1 sekundo delay.

_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
zaz
Član
Član



Pridružen-a: Pon 06 Apr 2015 14:23
Prispevkov: 89
Aktiv.: 0.81
Kraj: Ljubljana

PrispevekObjavljeno: Ned Feb 21, 2016 12:59 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.17
Kraj: Ljubljana

PrispevekObjavljeno: Pet Feb 17, 2017 9:50 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Pet Feb 17, 2017 10:26 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.17
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 18, 2017 12:37 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Sob Feb 18, 2017 12:39 am    Naslov sporočila:   Odgovori s citatom

Govorim o Kinetis vs LPC.
_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.17
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 18, 2017 8:07 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
Stran 2 od 3

 
Pojdi na:  
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group