Fórum témák

» Több friss téma
Fórum » ARM - Miértek hogyanok
 
Témaindító: gtk, idő: Jún 26, 2007
Lapozás: OK   66 / 177
(#) vzoole válasza kit6263 hozzászólására (») Márc 4, 2016 /
 
Kérdezd le ezzel: HAL_RCC_GetHCLKFreq();

Vagy ez... Bővebben: Link
(#) kit6263 válasza vzoole hozzászólására (») Márc 4, 2016 /
 
Már megtettem...semmi eredmény!
A kártyára töltve teljesen jól működik. Ott korrekt a stop watch is és jól megy minden.
Csak a szimulátorban fut 10x gyorsabban.
Végül is ha leveszem target órajelt 16 Mhz-re minden OK. csak nem értem.
Lehet, hogy a Keil bug-os ? A HAL annyi mindent állít...azért illő lenne tudni visszabogoznia.
Egyébként sokan fikázzák a Cube-ot, de nélküle kibitezgetni mindent hiba nélkül nagyon nagy gáz lenne.
A hozzászólás módosítva: Márc 4, 2016
(#) vzoole válasza kit6263 hozzászólására (») Márc 4, 2016 /
 
Marad a debug... végignézel mindent az órajel kiolvasásáig.

Én inkább kibitezgetem a dolgokat, de már az usb-t én is inkább a cubemx-el generáltam.
(#) GAZ hozzászólása Márc 4, 2016 /
 
Sziasztok!

STM32F429 eval-boarddal játszok. A problémám az OpenOCD (v0.9) használatával támadt. Akkorára nőtt a flash image, hogy az IWDG alapértelmezett beállítása (reset után ~2sec) nem elegendő a letöltéshez. Emiatt a watchdog keresztbe vágja a letöltést.
Valamiért a debug esetén működő
  1. -c "mww 0xE0042008 0x00001800"
parancsnak (IWDG leállítása halt esetén), flash íráskor nincs hatása.
Próbáltam a
  1. -c "stm32f4x options_write"
parancsot, de arra meg hibaüzenettel válaszol (de pl. a lock-ot elfogadja).
Így tehát az OpenOCD-t csak úgy tudom flash írásra használni, ha az IWDG ki van kapcsolva.
Kérdésem, hogyan lehetne rávenni az OpenOCD-t, hogy bekapcsolt watchdog esetén is működjön a letöltés?
(#) kit6263 hozzászólása Márc 5, 2016 /
 
Discovery F407 kártyával cumizok a Keil alatt.
Próbálom a Cube által legenerált kódot minden beavatkozás nélkül.
Időalapot TIM2-vel generáltam. Elméletileg 1 msec kellene, hogy legyen az interrupt-ja.
Beállítottam az STLink tracet. Szerintem jól.
Töréspontokat tetem és néztem a stop watch-ot.
A SysTick_Handler teljesen jól megy 1 msec-el.
A TIM2_IRQHandler viszont össze vissza ugrál.

Mit csinálhatok rosszul ?
A stop watch törlést nem lehet gombra vagy hotkey-re tenni ?
(#) kit6263 hozzászólása Márc 7, 2016 /
 
__STATIC_INLINE a headerben definiált függvényeknél pontosan mit jelent ?
Jól gondolom, hogy ez a függvényt azonnal beilleszti a kódba ( akár többször is ) és nem szubrutinként hívja ?
(#) kit6263 hozzászólása Márc 19, 2016 /
 
Mindenki a tavaszi kerti munkákat végzi ????

Esetleg van valakinek tapasztalata RTOS ügyben ?
Egyenlőre 2 maradt a szitán :
CMSIS RTOS RTX
Viszonylag sok oktató anyag van, elég jól tanulható. Keil támogatja a DEBUG-ot.
FRERTOS
ST ezt nyomja (CubeMx).
Dugdossák a doksit. Illetve jó pénzért megvehető. Nem találtam ingyen letölthető normális tutorial-t.

Csak azt ne írjátok hogy nem kell RTOS, mert a Bare Metal vagy Superloop.. a király..
Jelenleg fut egy PID PWM szabályzó, kitudja mennyi timer, kijelző, gombok kapcsolók , stb...
Mindezt grafikus TFT-re szeretném portolni és IOT-t is szeretnék.

Még nagy kérdés a grafika ! Eszméletlen meló lenne megírni egy saját rendszert.
Van uGUI, uGFX vagy a profibbak emWin illetve Microchip GFX.

Egyedi kinézetet szeretnék.
A Microchip widgetjei kifejezetten csúnyák és elavultak. Viszont ott a forrás ami szerintem nem túl nagy melóval portlható STM32-re.

Egyenlőre vettem egy F7 discovery-t illetve ebay-ról rendeltem egy olcsó 3.2 vezérlős resistive tft ( ehhez találtam FSMC driver minta példákat F4 discovery-hez ).
(#) icserny válasza kit6263 hozzászólására (») Márc 19, 2016 /
 
A Microchip szoftvereinek licenszében többnyire az a kitétel áll, hogy legálisan csak a Michrochip mikrovezérlőihez használhatod. Ha kereskedelmi terméket készítesz, akkor nem célszerű ezt figyelmen kívül hagyni...

A CMSIS RTOS API-nak az lenne a lényege, hogy a mögötte álló RTOS lecserélhető legyen. Hogy melyik a szimpatikus, az ízlés dolga.
(#) kit6263 válasza icserny hozzászólására (») Márc 20, 2016 /
 
Köszi az infót a Microchip-ről. Erre nem is gondoltam......biztosan nincs az a pénz amiért megengednék.
Végül is az uGFX nagyon tetszik. Jól dokumentált...igaz ez is fizetős kereskedelmi termékben.
Nem is olcsó!
JPEG-et még nem tud. Viszont a fontokat nagyon jó kezeli van élsimítás és kerning is.
Kicsit kutakodtam és már van jópár "CMSIS compilant RTOS".
Olvashatóbbak és nekem jobban megjegyezhetők a CMSIS függvények. Kicsit lassabb a plusz hívások miatt, de a szabványosítás sokat jelent.
A Keil-ben ( csak STM32 procikat néztem ) már megvan a CMSIS driver API is.
(#) kit6263 hozzászólása Márc 21, 2016 /
 
Megjött az F7 DISCO. Kipróbáltam az uGFX-t. Szépen működik CMSIS RTOS RTX alatt de nem az ST HAL libeket használja.
(#) Piroskislabda hozzászólása Ápr 14, 2016 /
 
Sziasztok!
Kaptam egy stm32f429i-disco boardot. Most kezdtem el ARM-mel ismerkedni, eddig AVR-rel és FPGA-kkal foglalkoztam belépő szinten.

Az a gondom, hogy nem tudok életet lehelni egy sima kis villogóba sem, olyan mintha a while(1){} ciklusom csak egyszer futna le, ugyanis próbálgattam olyan kódot is írni, amikor a gombnyomásra gyullad ki valamelyik LED (lenyomom piros, felengedem zöld). Ha reset mellett lenyomom a gombot, akkor megfelelően a piros világít, vagy ha felengedve resetelek, akkor a zöld, ebből arra következtetek, hogy a feltételek jól értékelődnek ki. Néztem millió meg egy oktatóvideót, oktató cikket, de nem sikerül. Kezdi nagyon a kedvem szegni. Tudnátok segíteni? Valami beállítási probléma lehet?
Toolchain: MDK_ARM
uVision5.18a-t használok

Ez a villogó kódom, a for ciklusban lévő értéken is változtatgattam, hátha az a baj:
  1. #include <stm32f4xx_hal.h>
  2.  
  3. void LEDInit(void);
  4.  
  5. int main(){
  6.  
  7.         uint32_t i;
  8.        
  9.  
  10.         HAL_Init();
  11.         LEDInit();              //init LEDs
  12.         __HAL_RCC_PWR_CLK_ENABLE();
  13.  
  14. while(1){      
  15.        
  16.                 HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_13);
  17.                 for(i=0;i<4000000;i++);
  18.         }
  19.        
  20. }
  21.  
  22. void LEDInit(void){
  23.        
  24.         GPIO_InitTypeDef LEDInit;
  25.        
  26.         __HAL_RCC_GPIOG_CLK_ENABLE();
  27.        
  28.        
  29.         LEDInit.Pin = GPIO_PIN_13 | GPIO_PIN_14;
  30.         LEDInit.Mode = GPIO_MODE_OUTPUT_PP;
  31.         LEDInit.Pull = GPIO_NOPULL;
  32.         LEDInit.Speed = GPIO_SPEED_FREQ_LOW;
  33.        
  34.         HAL_GPIO_Init(GPIOG,&LEDInit);
  35.        
  36.        
  37. }
A hozzászólás módosítva: Ápr 14, 2016
(#) kapu48 válasza Piroskislabda hozzászólására (») Ápr 14, 2016 / 1
 
Lehet, hogy az üres for ciklusodat optimalizálja ki a fordító?
Próbálj valmit rakni a ciklusba.
  1. for(uint32_t i=0;i<4000000;) {i++;} // ???
(#) Piroskislabda válasza kapu48 hozzászólására (») Ápr 14, 2016 /
 
Köszönöm a gyors választ!
Megpróbáltam úgy, hogy létrehoztam egy változót, for ciklusban inkrementáltam, de így sem jó sajnos.
Bár a gombnyomós-világítós programomban sem volt for ciklus, és az sem működött megfelelően.
Youtube-os oktatóvideókban amiket néztem működik a kód, ők is Keilel csinálták.

Szerk: Sőt while ciklust is próbáltam a for helyett
A hozzászólás módosítva: Ápr 14, 2016
(#) kapu48 válasza Piroskislabda hozzászólására (») Ápr 14, 2016 /
 
Akkor mégis tudni kellene, hogy mit telepítettél?

Ajánlanám: STMicroelectronics STM32F4 Series Device Support, Drivers and Examples

Telepítését!
(#) cpt.zoltan.simon válasza Piroskislabda hozzászólására (») Ápr 14, 2016 /
 
Simán fel-le kapcsolni tudod egyébként?
Lépésről-lépésre végrehajtás esetén mit mutat?
Először csak kapcsolgasd magad. KEIL-ben nyomod?
(#) cpt.zoltan.simon válasza Piroskislabda hozzászólására (») Ápr 14, 2016 /
 
Egyébként meg hagynám a fenébe a CMSIS-t elsőre.
Nyisd ki az adatlapot és bare-metal programming.
(#) benjami válasza Piroskislabda hozzászólására (») Ápr 14, 2016 / 1
 
Ha azt szeretnéd, hogy a várakozási ciklusodat ne optimalizálja ki a fordító, akkor használj volatile változót:
  1. volatile uint32_t i;
(#) Piroskislabda válasza kapu48 hozzászólására (») Ápr 14, 2016 /
 
Installáltam a uVisiont, azon belül pedig az alap ARM-es dolgokat, amiket magától feltelepített, utána pedig leszedtem a boardomhoz tartozó package-eket (így letöltötte az egész stm32 F4 szériához tartozó packot).
STM32CubeMX-et feltettem, ott pedig a STM32CubeF4 releases közül a legújabb firmware packaget, bár ezt a progit nem használom.
Feltelepítettem az St-Link driverét.
(#) Piroskislabda válasza cpt.zoltan.simon hozzászólására (») Ápr 14, 2016 /
 
Nem tudom sajnos simán fel-le kapcsolgatni sem, csak úgy működik, ahogy az első hozzászólásomban írtam, hogy resettel együtt nyomva/nem nyomva választom ki melyik LED-et kapcsolja fel. Ezért tűnik úgy, mintha csak egyszer futna le a while() ciklus.
Igen Keil-ben próbálkozom.

Ehhez tudsz valami jó doksit ajánlani? Néztem az oldalon a datasheetet, csak 200 oldalas volt, de konkrét regiszterekről, mi mit csinál nem nagyon találtam infót.
(#) Piroskislabda válasza benjami hozzászólására (») Ápr 14, 2016 /
 
Megpróbáltam volatile változóval is, de sajnos így sem működik.
(#) benjami válasza Piroskislabda hozzászólására (») Ápr 14, 2016 /
 
Lásd a melléklet.
(#) kapu48 válasza Piroskislabda hozzászólására (») Ápr 15, 2016 /
 
Szerintem kimaradt a main() elején az órajelek beállítása!

  1. //valami ehez hasonló:
  2.  SystemCoreClockUpdate();                      /* Get Core Clock Frequency   */


???
STM32F429I-Discovery Board
A hozzászólás módosítva: Ápr 15, 2016
(#) rolandgw hozzászólása Ápr 16, 2016 /
 
Üdv! LPC-ket hol szoktátok beszerezni?
(#) killbill válasza rolandgw hozzászólására (») Ápr 16, 2016 /
 
fdh.hu
(#) rolandgw válasza killbill hozzászólására (») Ápr 16, 2016 /
 
Köszönöm!
(#) kapu48 válasza Piroskislabda hozzászólására (») Ápr 16, 2016 /
 
Getting Started
Create Applications with MDK Version 5 for ARM® Cortex®-M Microcontrollers
]Bővebben: Link
(#) Piroskislabda válasza benjami hozzászólására (») Ápr 26, 2016 /
 
Köszönöm szépen, hasznos kis ppt!
(#) Piroskislabda válasza kapu48 hozzászólására (») Ápr 26, 2016 /
 
Köszönöm! Az órajel beállításokkal lehetett valami gond, mert az Stm32cubeMX-el grafikusan beállítottam az órajeleket, és az általa generált templatet használva működik.
(#) don_peter hozzászólása Ápr 26, 2016 /
 
Uraim, most kezdtem el ARM-el foglalkozni..
Jelenleg egy STM32F103ZE ARM-el rendelkező fejlesztő panelen gyakorolgatok: Bővebben: Link
Ez csak tényleg gyakorlásra van, és a végeredményt amit fejlesztek, egy STM32F103VCT6-os MCU-n akarom használni.
Több kérdésem is lenne, ha tudtok segíteni benne.
Az első az maga a programozás, illetve a lábak amiket ki kell hozni.
Vissza fejtettem és 20lábas csatlakozóban ezek vannak sorrendben:
VCC - VCC
GND - NJTRST
GND - JTDI
GND - JTMS
GND - JTCK
GND - NC
GND - JTDO
GND - NRST
GND - NC
GND - NC

Ez ha jól tudom, akkor JTAG-nak nevezik.
Van ennek egy egyszerűbb bekötése, vagy ezek a lábak mind kellenek a sikeres programozáshoz?
Foglalkozott már valaki kimondottan STM32F103VCT6 típusú ARM-el?
Van róla tapasztalat?
Elsődlegesen NOR Flash memóriát akarnék vele kezeltetni, de ügye ez csak 100lábú, és a memória címbitjei nincsenek maradéktalan kihozva.
Ilyen esetben, valamelyik protra kell bekonfigurálnom a kimaradt 16bit címbitet?
Azért ez a kérdés, mert amin gyakorlok 144 lábú ARM a hiányzó címbit lábak megvannak.
Mire érdemes figyelni ennél az MCU-nál?

Az elsőre nyilvánvalóvá vált, hogy kicsit nehezebb konfigurálni mint a PIC-eket, van valami bevált forrás ahonnét gyűjthetek alapokat a regiszterek megfelelő kezeléséhez?
Pl.: SPI, I2C, beépitett RTC, ilyesmik...
Előre is köszi a segítséget.

ui: jaj majdnem lemaradt.
IAR Embedded Workbench-el fejlesztek.. :Bővebben: Link
(#) icserny válasza don_peter hozzászólására (») Ápr 27, 2016 /
 
Nem foglalkoztam még ilyen mikrovezérlővel, de Geoffrey Brown: Discovering the STM32 Microcontroller jegyzete biztosan segít az alapozásban.
Következő: »»   66 / 177
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem