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   118 / 175
(#) Peppe válasza kapu48 hozzászólására (») Ápr 14, 2018 /
 
Köszi szépen,
Valami van nagy b...meg van, mert ez sem akar menni.
(#) Peppe válasza benjami hozzászólására (») Ápr 14, 2018 /
 
Köszi neked is,
Ma már nem gyötröm magam tovább.
Holnap kipróbálom tiszta fejjel mindkettőtök kódját.
(#) Peppe válasza Peppe hozzászólására (») Ápr 15, 2018 /
 
Szia benjami,

Köszönöm a kódot. Végre működik.
Most próbálom vissza varázsolni FLASH-be a kódot és a printf redirect-et vissza állítani.

Még egyszer köszönöm
(#) Peppe válasza benjami hozzászólására (») Ápr 15, 2018 /
 
Szia benjami,
Hova dugtad el a printf redirect részt?
stdio.h ban nem találom mit írtál át.
Segítenél még egy picit?

Köszönöm
(#) Peppe válasza kapu48 hozzászólására (») Ápr 15, 2018 /
 
Szia kapu84,

Sikerült a te kódodat is életre kelteni. Pihenés csodákra képes
Köszönöm neked is a kódot.
(#) benjami válasza Peppe hozzászólására (») Ápr 15, 2018 /
 
Ott van a main.c vége felé
(#) Peppe válasza kapu48 hozzászólására (») Ápr 15, 2018 /
 
Annyi szépség hiba van a dologban, hogy a
06. ----- SD_SetDeviceMode Status:42<CR><LF>
Set SD card mode successfully!<CR><LF>
után megfagy a program.
Te tapasztaltál ilyet?
(#) kapu48 válasza Peppe hozzászólására (») Ápr 15, 2018 /
 
Ez a program csak a jól működő állapotokat írja ki!
Ami nem működik, azt átugorja.

Mikor végzett, villogtat 4 LED-et. Ha ez nem történik meg?
Akkor vagy rosszul címzed a LED-eket, vagy tényleg el akadt (bár ez nem valószínü!).

És remélem a boardra építet, foglalatban van az SD! Mert az 4 bites adatvonallal rendelkezik.
A hozzászólás módosítva: Ápr 15, 2018
(#) Peppe válasza kapu48 hozzászólására (») Ápr 15, 2018 /
 
Ledeket átportoltam.
Soros porton látom mi történik. És a 07. résznél megáll.
(#) don_peter hozzászólása Ápr 16, 2018 /
 
Uraim, végül neki estem a az IAR környezetnek és az "első" önálló LED billegtető programomnak, amely STM32F407-re íródik.
Viszont a késleltetéssel van egy kis gond.
Tudna nekem valaki segíteni, hogy miszerint vagy miképpen lehetne jó delay_ms és delay_us függvényeket írni a megadott MCU-ra?

Van egy ilyenem amit még 103-on használtam:
  1. /*********************************************
  2. +               Késleltetés
  3. **********************************************/
  4. void Delay_Ms(unsigned int ms){ //Bemenet*ms várakozás
  5.    unsigned int i=0;
  6.    for (i=0;i<=ms;i++) DelayResolution100us(10);
  7. }
  8.  
  9. /*************************************************************************
  10.  * Function Name: DelayResolution100us
  11.  * Parameters: Int32U Dly
  12.  *
  13.  * Return: none
  14.  *
  15.  * Description: Delay ~ (arg * 100us)
  16.  *
  17.  *************************************************************************/
  18. void DelayResolution100us(Int32U Dly)
  19. {
  20.   for(; Dly; Dly--)
  21.   {
  22.     for(volatile Int32U j = 450; j; j--)
  23.     {
  24.     }
  25.   }
  26. }
Előre is köszi..
(#) icserny válasza don_peter hozzászólására (») Ápr 16, 2018 / 1
 
Használhatod a SysTick időzítőt. Az alábbi függvény ugyan Keilhez és a FRDM-KL25Z kártyához készült, de könnyen adaptálható. A 20970 érték az 1 ms-hoz tartozó óraütések száma (nálam 20,97 MHz volt a rendszer órajele). Ha nálad más a frekvencia, akkor írd át ezt az értéket! Bővebben: Link

  1. void delayMs(int n) {
  2.     int i;
  3.     SysTick->LOAD = 20970 - 1; // Újratöltési érték 1 ms késleltetéshez
  4.     SysTick->VAL  = 0;         // Számláló törlése
  5.     SysTick->CTRL = 0x5;       // Engedélyezés, nincs interrupt, rendszer órajel
  6.     for(i = 0; i < n; i++) {
  7.         while((SysTick->CTRL & 0x10000) == 0);   // A COUNT jelzőre várunk
  8.     }
  9.     SysTick->CTRL = 0;         // SysTick leállítása
  10. }
(#) don_peter válasza icserny hozzászólására (») Ápr 16, 2018 /
 
Még nem teszteltem, de ezt találtam és nézegettem, talán ez is jó lesz, de a tiéd azért egyszerűbbnek néz ki.
  1. void Delay_Init(void) {
  2.         RCC_ClocksTypeDef RCC_Clocks;
  3.  
  4.         /* Get system clocks */
  5.         RCC_GetClocksFreq(&RCC_Clocks);
  6.  
  7.         /* While loop takes 4 cycles */
  8.         /* For 1 us delay, we need to divide with 4M */
  9.         multiplier = RCC_Clocks.HCLK_Frequency / 4000000;
  10. }
  11. void DelayUs(uint32_t micros) {
  12.         /* Multiply micros with multipler */
  13.         /* Substract 10 */
  14.         micros = micros * multiplier - 10;
  15.         /* 4 cycles for one loop */
  16.         while (micros--);
  17. }
  18.  
  19. void DelayMs(uint32_t millis) {
  20.         /* Multiply millis with multipler */
  21.         /* Substract 10 */
  22.         millis = 1000 * millis * multiplier - 10;
  23.         /* 4 cycles for one loop */
  24.         while (millis--);
  25. }
Mitől függ, hogy mennyin megy az MCU?
Nekem elvileg 168MHz-es és tán ennyin is jár alapból.
A sztenderd periféria könyvtárakat használom.

ui: közben megtaláltam a beállítást. 168MHz-en ketyeg a kicsike.
A hozzászólás módosítva: Ápr 16, 2018
(#) icserny válasza don_peter hozzászólására (») Ápr 16, 2018 /
 
Rendes helyeken a SystemCoreClock változó értéke mondja meg, hogy mennyi.
(#) Szasza9668 hozzászólása Ápr 17, 2018 /
 
Sziasztok!

Tudna valaki egy általános leírást linkelni erről az arm-ről?
Avr-hez konyítok picit. Illetve avr égetővel lehet arm-et programozni?

Köszönet!
(#) kapu48 válasza Szasza9668 hozzászólására (») Ápr 17, 2018 /
 
(#) csatti2 válasza Szasza9668 hozzászólására (») Ápr 17, 2018 /
 
Csak egy gyors magyarázat. Az ARM-ra ne úgy gondolj, mint az AVR-e. Ezek a mikrokontrollerek egy Cortex-M (M0, M0+, M3, M4, M7,stb.) alapú maggal rendelkeznek (itt is gyártófüggő opciókból adódó különbségek lehetnek, pl. van e hardveres lebegőpontos egység), illetve egy a gyártók által adott perifériával / memóriával / buszrendszerrel kiegészítve. Épp ezért nagy különbség van pl. egy Atmel által gyártott mikorkontroller illetve egy ST vagy NXP által gyártott között.
Van olyan AVR "égető", ami tudja az Atmel ARM-ját (pl. Atmel ICE), de a házi készítésűek nem tartoznak ide. Viszont ne ez legyen a döntő szempont. Hobbistaként, az STM32 sorozatot ajánlanám az olcsó, bő és elérhető kínálat miatt és a programozó is nagyon olcsó pl. az Atmel-hez képest. Az AVR tudásod úgysem ér semmit az Atmel ARM-hoz.
A hozzászólás módosítva: Ápr 17, 2018
(#) kapu48 válasza csatti2 hozzászólására (») Ápr 17, 2018 /
 
Idézet:
„Az AVR tudásod úgysem ér semmit az Atmel ARM-hoz.”

Miért ís? Mindketőt C-ben programozzák általában.
(#) csatti2 válasza kapu48 hozzászólására (») Ápr 17, 2018 /
 
Itt nem a programozási nyelvre utaltam, hanem a regsizterek közti átjárásra.
(#) Szasza9668 válasza csatti2 hozzászólására (») Ápr 17, 2018 /
 
Köszönöm. Nos maradok az avr-nél.
Szerintem az igényeimet kiszolgálja még sok-sok évig.

És tényleg hobbista vagyok.

Köszönet!
(#) csatti2 válasza Szasza9668 hozzászólására (») Ápr 17, 2018 /
 
Hát, én pedig biztos nem térnék már vissza. A legegyszerűbb feladatok kivételével, nálam az AVR már szóba sem jöhet. Olyan érzés most AVR-t programozni, mintha visszaülnék egy 20 évvel ezelőtti PC elé...
(#) Szasza9668 válasza csatti2 hozzászólására (») Ápr 17, 2018 /
 
Sajnos a C-vel hadilábon állok.
Bascom idét használtam mindíg.

Ráadásul én ezeket dip tokozásnál kissebbeket képtelen vagyok forrasztani, nagyon remegős a kezem.
Meghagyom nektek fiataloknak a lehetőséget! Volt olyan AVR projektem ami kettő évig készült.
(#) csatti2 válasza Szasza9668 hozzászólására (») Ápr 17, 2018 /
 
Hát, akkor valóban nem jöhet szóba az ARM (legfeljebb előre elkészített modulként). Nem igazán léteznek DIP tokozással. A bascom szintén nem jó választás hozzájuk.
(#) benjami válasza Szasza9668 hozzászólására (») Ápr 17, 2018 /
 
Egy bluepill board gyakorlatilag megfelel egy DIP40-es IC-nek. Az ára is teljesen barátságosnak mondható. A hozzá való programozó megvételéhez sem szükséges milliomosnak lennünk. A C nyelvet meg szerintem mindenképp érdemes megtanulni, ha mikrovezérlőkkel szeretne az ember foglalkozni, függetlenül attól, hogy éppen AVR, ARM, PIC vagy egyéb más eszközről van szó.
A hozzászólás módosítva: Ápr 17, 2018
(#) cimopata hozzászólása Ápr 18, 2018 /
 
Sziasztok.

Jártatok már úgy STM32 procival hogy a kimenet nem akart magasba ugrani PWM módban?

Timer3 egyik csatronjája(1-2) sem ugrik szkópon nézve mV-os felbontással látom hogy valamicske négyszög kijön a prociból de marad a GND szintjén.

Mellette fut a TIM1 TIM16 TIM17 további 6 PWM kimenettel gond nélkül de ez a kettő a PB4 PB5 porton nem akar.

Nézegettem az output controll biteket elvileg be van kapcsolva.
(#) csatti2 válasza cimopata hozzászólására (») Ápr 18, 2018 /
 
Feltételezem STM32F103-as sorozatról van szó (írjátok már légyszi mindig oda milyen mikrokontrollert bűvöltök ).

A timer3 alapértelmezett kimenetei a PA6 és PA7. Átirányítottad őket a PB4 és PB5-re?
A hozzászólás módosítva: Ápr 18, 2018
(#) cimopata válasza csatti2 hozzászólására (») Ápr 18, 2018 /
 
STM32F030.

PB 4-5

így van beállítva:

  1. else if(htim_base->Instance==TIM3)
  2.   {
  3.   /* USER CODE BEGIN TIM3_MspPostInit 0 */
  4.  
  5.   /* USER CODE END TIM3_MspPostInit 0 */
  6.                  /* Peripheral clock enable */
  7.     __HAL_RCC_TIM3_CLK_ENABLE();
  8.     /**TIM3 GPIO Configuration    
  9.     PB4     ------> TIM3_CH1
  10.     PB5     ------> TIM3_CH2
  11.     */
  12.     GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;
  13.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  14.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  15.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  16.     GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;
  17.     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  18.  
  19.   /* USER CODE BEGIN TIM3_MspPostInit 1 */
  20.  
  21.   /* USER CODE END TIM3_MspPostInit 1 */
  22.   }
(#) csatti2 válasza cimopata hozzászólására (») Ápr 18, 2018 /
 
A HAL-t nem használom, de úgy tűnik át van irányítva... Azért nézd meg online a regisztereket, tényleg átkapcsolta-e. Lehet bugos.
(#) kapu48 válasza cimopata hozzászólására (») Ápr 18, 2018 /
 
Órajelet kap a PB?

Jól van az CPU típusa beállítva?
Mert a : TSSOP20 20-pin tokosnak nincsenek Ilyen PBx pinjei.
A hozzászólás módosítva: Ápr 18, 2018
(#) kapu48 válasza cimopata hozzászólására (») Ápr 18, 2018 /
 
Az összes VDD/ VSS pin bevan kötve?
(#) cimopata válasza kapu48 hozzászólására (») Ápr 18, 2018 /
 
Minden láb be van kötve. TIM1, TIM 16, TIM 17 működik jól.
K6T6-os procim van ha sima kimenetnek deklarálom a PB4-5 lábat akkor működik.

Ami nagyon furcsa:
Betettem az alábbi kódot amivel engedélyezem a kimenetet:

  1. TIM3->CCER = 0x0011; // CH1 CH2  kimenet bekapcsolása
  2.                 TIM3->CCER |= TIM_CCER_CC1E;
  3.         TIM3->CCER |= TIM_CCER_CC2E;
  4.                        
  5.                 if(TIM3->CCER & 0x0001)
  6.                 {GPIOA->BSRR = 0x0800;}


Ez gyakorlatilag 2 módja hogy bekapcsoljam a CC1E, CC2E biteket.

A parancsok után rögtön megnézem átírta e a biteket a kimeneten jelezné a LED, de nem írja át.
Ugyan ez a parancs a TIM1, 16,17-re visszajelzi hogy átírja a biteket tehát maga a parancs jó. Olyan mintha az a regiszter nem lenne írható.

Nem értem az egészet, hogy most mi a franc van.
Következő: »»   118 / 175
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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