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   108 / 176
(#) roleez hozzászólása Dec 18, 2017 /
 
Sziasztok!

Az alábbi beállítással kérdezem le an lábakat: (stm32f103rbt, Coocox 1.7.8)
  1. void setupADC()
  2. {
  3.         ADC_InitTypeDef ADC_InitStructure;
  4.         GPIO_InitTypeDef GPIO_InitStructure;
  5.         RCC_APB2PeriphClockCmd(ANALOG_PORT_CLOCK, ENABLE);
  6.         ADC_DeInit(ADC1);
  7.         GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AIN;
  8.     GPIO_InitStructure.GPIO_Pin = _ch1pin | _ch2pin | _ch3pin | _ch4pin | _ch5pin | _ch6pin; // annyi bemenetre, amennyi van
  9.     //GPIO_InitStructure.GPIO_Pin = _ch1pin | _ch2pin; // annyi bemenetre, amennyi van
  10.     GPIO_Init(ANALOG_PORT, &GPIO_InitStructure);
  11.     RCC_ADCCLKConfig(RCC_PCLK2_Div8);
  12.     ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
  13.     ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  14.     ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  15.     ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
  16.     ADC_InitStructure.ADC_NbrOfChannel = 1;
  17.     ADC_InitStructure.ADC_ScanConvMode = DISABLE;
  18.     ADC_Init(ADC1, &ADC_InitStructure);
  19.     ADC_TempSensorVrefintCmd(ENABLE);
  20.     ADC_RegularChannelConfig(ADC1, _1ch, 1, ADC_SampleTime_55Cycles5);
  21.  
  22.     ADC_Cmd(ADC1, ENABLE);
  23.     ADC_ResetCalibration(ADC1);
  24.     while(ADC_GetResetCalibrationStatus(ADC1));
  25.     ADC_StartCalibration(ADC1);
  26.     while(ADC_GetCalibrationStatus(ADC1));
  27.  
  28.     ADC_Cmd (ADC1,ENABLE);
  29.     ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  30. }


A ch4 (3 pin) értéke 5 körül ugrál, a többi 0 vagy 1- amikor az adott bemenetet lekötöm GND-re.
Lekérdezés:
  1. uint16_t readADC(uint8_t channel)
  2. {
  3.   ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_55Cycles5);
  4.   // Start the conversion
  5.   ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  6.   // Wait until conversion completion
  7.   while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); // vagy SET?
  8.   // Get the conversion value
  9.   return ADC_GetConversionValue(ADC1);
  10. }

Mitől lehet az AIN3 bemenet nem nulla körüli értéke, annak ellenére, hogy GND-n van.
Köszönöm.
A hozzászólás módosítva: Dec 18, 2017
(#) gtk hozzászólása Dec 18, 2017 /
 
Kaphato a 32H7, gondoltam szolok
(#) csabeszq hozzászólása Dec 20, 2017 /
 
A blue pill panelnél rendszeresen belefutok abba a problémába, hogy a panel túl magas. A probléma oka, hogy a BOOT0, BOOT1 jumperek 1 cm-rel csúcsosodnak a panel fölé, ami ugye eléggé gáz.

Jelenleg általában kiforrasztom a BOOT0, BOOT1 jumpereket és szimplán összeforrasztom GND-vel, bár láttam olyan megoldást is, hogy a tüskesorról leszedik az aljzatot, csak a jumpert rakják rá. Még így is 6 mm a jumper, ami magasabb, mint kellene. 4-5mm-mel kiegyeznék.

Van értelme a BOOT0, BOOT1-nek? Idáig egyszer kellett használnom, amikor AFIO-val véletlenül kikapcsoltam az SWD debugging-ot és a PA13-PA14-ből GPIO-t csináltam. Egyébként szerintem inkább feleslegesen foglalja a helyet. Ha van alacsony megoldás, azért érdekelne.
A hozzászólás módosítva: Dec 20, 2017
(#) vargham válasza csabeszq hozzászólására (») Dec 21, 2017 /
 
Én is kiforrasztom.
(#) Topi válasza csabeszq hozzászólására (») Dec 21, 2017 / 1
 
Nagyon hasznos tud lenni a boot ROM. De én sem láb boot configgal használom. Ha szeretném elindítani a gyári boot ROM-ot, akkor azt is programból teszem.

  1. __disable_irq();
  2.  
  3. SysTick->CTRL = 0x04;
  4. SysTick->VAL = 0;
  5.  
  6. typedef  void (*pFunction)(void);
  7. pFunction Jump_To_Bootloader = *(pFunction*)0x1FFFF004;
  8. __set_MSP(*(volatile unsigned int *)0x1FFFF000);
  9. Jump_To_Bootloader();


És máris használhatod az STM32 Flash Downloadert, vagy a gyári CAN ROM-ot, stb. Ezt a lehetőséget én meg szoktam hagyni sorozatgyártott cuccaimnál is, nem csak bluepill esetén jó.
(#) csabeszq válasza Topi hozzászólására (») Dec 21, 2017 /
 
Köszi az információt. Akkor nem vészes, ha kiforrasztom a jumpereket.
A hozzászólás módosítva: Dec 21, 2017
(#) Topi válasza csabeszq hozzászólására (») Dec 21, 2017 /
 
Nem, egyáltalán nem. Én tőben szoktam elcsípni műanyag felett, és alul összehúzom ónnal, így nem sérül a via.
(#) roleez hozzászólása Dec 23, 2017 /
 
Sziasztok!

Úgy tűnik az ADC és az USART is hardveresen nyűglődik...
Tudtok stm32f103 alapú mini boardot, aminek az USART egy USB (pl. CP2102) átalakításon
"megy ki"?

Áldott, Békés, Boldog Karácsonyt!
Roland
(#) csabeszq válasza roleez hozzászólására (») Dec 24, 2017 /
 
Ez így elég érdekes, mert az stm32f103 USART-ja hardveresen jobb, mint ami a CP2102-ben van.
A CP2102 1 mbaudnál többet nem bír el, miközben a hardveres USART simán 9 mbaud-ig felmegy.

Az STM32F103 USART-jával semmi gond, rendszeresen használom, az ADC-vel sincs baj, elég pontos 12 bites felbontás mellett. Miniszkópot is csináltam vele.

Az ADC-vel a probléma STM32F103-on:
- nincs külső referencia feszültség kivezetve
- nincs programozható erősítése (gain)
- nincs differenciális módja, bár ezt a 2 párhuzamosan működő ADC egység ellensúlyozza

Semmi baj nincs sem az USART-tal, sem az ADC-vel.

A netről emellett letölthető USB CDC driver, ami virtuális soros portot hoz létre. Van USB portja a blue pill-nek, ami képes tetszőleges USB eszközt emulálni.

Egyik sem egyszerű, de az USB CDC driver a leggyorsabb, nálam vitte a 6 mbit/s-et, amit egyetlen piacon kapható USB-USART átalakító nem vitt.
(#) tbutuza hozzászólása Dec 26, 2017 /
 
Sziasztok!
Boldog karácsonyt kívánok!

Ha esetleg valaki kicsit unja már a karácsonyfát és hozzám hasonlóan el kezdett gondolkodni valamilyen arm-es problémán, megköszönném ha tudna segíteni.

STM32L433 mcu-val próbálkozom. PWM-et szeretnék generálni a TIM1 mind a 4 csatornáján. Az első 3 csatornán megjelenik a jel, a negyedik csatornán nem. Korábban egy másik panelon, másik mcu-val a TIM4-en gond nélkül ment mind a 4 csatornán.
A TIM4 general purpose timer, a TIM1 viszont advanced timer, és több extra funkciója is van, amikre pluszban oda kellene figyelni. A TIM1 képes 3 fázisú módban is dolgozni, ezért is gyanús hogy pont a 4. csatorna nem megy, az első három viszont igen.
Az ST-től le lehet tölteni egy "General purpose timer cookbook"-ot, az elég hasznos olvasmány a general purpose timerekhez, de nem találtam hosonlóan használható leírást az advanced timerekhez. A mikrokontroller kézikönyve ehhez túl száraz.

Itt van a programkód részlet, hátha valaki meg tudja mondani, mi hiányzik:

static void initTimer1InPwmMode () {
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // Enable TIM1
TIM1->CR2 = 0;
TIM1->SR = 0; // Clear flags.
TIM1->BDTR = TIM_BDTR_MOE; // Main output enable (Feature of advanced timers (TIM1, TIM8))
TIM1->CCMR1 = (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1);
TIM1->CCMR2 = (TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1);
TIM1->CCER |= (TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E);
TIM1->ARR = 255;
TIM1->CCR1 = 0x20; // Low inital duty
TIM1->CCR2 = 0x20; // Low inital duty
TIM1->CCR3 = 0x20; // Low inital duty
TIM1->CCR4 = 0x20; // Low inital duty
TIM1->CR1 |= TIM_CR1_CEN; // Enable counter
}

Előre is köszönöm, Tamás
(#) ZsoltyFM hozzászólása Dec 26, 2017 /
 
Sziasztok!
Egy villanyszerelő vagyok, és adódott egy kis problémám.
Használok egy NUCLEO-F446RE modult, és egy W5500-as wiznet chip-el szerelt modult.
Sikerült SPDIF, és I2S portjait forrásként használva RTP PCM stream -et közvetítenem amit egy VLC médialejátszóval meg lehet nyitni. Ez csupán csak sztereó 44,1KHz minta 16 Bit. A tervem, hogy majd két ilyen összeállítás között az RTP szabványtól eltérően akár 192KHz-s mintavételű sztereó adatfolyamot is képes legyek továbbítani. Aminek az átviteléhez közel 13Mbps sebesség szükségeltetik. A W5500-as modult az SPI1 -es buszra kötöttem ami 45Mbps átvitelre képes. Fúl duplex módban DMA2-es vezérlővel használom. Természetesen az adatátviteli sebességet is ennek megfelelően konfiguráltam. Lehetséges e az, hogy a gyakorlatban mégsem érhető el ezzel a wiznet chippel a tényleges 13Mbps átvitel a hasznos vonalon. Ugyanis erre gyanakszom. Vagy csak én szúrok el mégis valamit. Esetleg mégsem jól használom a DMA-t.
A hozzászólás módosítva: Dec 26, 2017
(#) csatti2 válasza ZsoltyFM hozzászólására (») Dec 26, 2017 /
 
Tipikus villanyszerelő probléma, a cégnél a mi villanyszerelőinknek is mindig ilyen gondjai szoktak lenni.

Az IC leírásában az szerepel, hogy akár 80MHz-es SPI-al is megbirkózik, így én inkább arra gyanakodnék, hogy 10Mbites módban működik a modulod valamiért. Olvasd ki az aktuális státuszt és ellenőrizd a sebesség konfigurációt.
(#) roleez válasza csabeszq hozzászólására (») Dec 27, 2017 /
 
Szia!

Nem az mcu ADC ill.USART moduljával van a gond, hanem a "kici kínai" board forrasztásaival...

Most pont azon "győzködöm" magam, hogy kell-e nekem USART RX, TX DMA.
Néhány 10 byte megy ki, jön be. Véletlenszerű időkben. Nincs időkritikus jellege.
Csak a DMA tanulása miatt. Bár még nem alakult ki, hogy az RX változó byteszámot
fogadjon. Talán cirkulár buffer?! A csomagok eleje jól meghatározható.
(#) csabeszq válasza roleez hozzászólására (») Dec 29, 2017 /
 
Az oszcilloszkópnál küzdöttem hasonló problémával. Körkörös pufferbe írtam az adatokat, amikor trigger jelet észleltem, a pufferből X bájtot előre Y bájtot utána kellett olvasni.

Durván 200 pontot rajzoltam ki, a trigger jel előtt 100-at és utána 100-at, vagy ahogy beállítottam.

Magyarul: a körkörös puffer határainak az ég világon semmi köze nem volt ahhoz, hogy mit mikor olvastam ki.

A DMA írásmutató elérhető, azt mondja meg, hogy hány adat van még a pufferből hátra (ez az adatok száma, semmi köze ahhoz, hogy byte, word, vagy dword adatot DMA-zol):
  1. dmaAddr = DMA1_Channel1->CNDTR;


Amikor az ADC logika észlelte, hogy a jel kilépett egy sávból, interruptot hívott, elmentettem a DMA csatorna írásmutatóját, a program főciklusa meg azt nézte, hogy a szükséges mennyiségű mintavétel meglett-e, vagy sem. Megfelelően nagy puffer esetén működött is. Nem volt belőle probléma, ha lassan reagált a program és kicsivel többet mintavételezett, mert volt elég hely a pufferben.

Figyelni kellett a program főciklusából, hogy merre jár éppen a DMA mutató.
A hozzászólás módosítva: Dec 29, 2017
(#) cimopata hozzászólása Jan 9, 2018 /
 
Üdv.

uVision-ban hogyan tudom kikapcsolni a piros hullámos aláhúzást? Pontosabban hasznos ha hibázok de valahogy nem jól működik mert a TAB-ok ra és minden új részt amit írok aláhúz akkor ha vannak bezárt függvények vagy feltételek illetve elágazások. nagyon zavaró tud lenni.

hiba.jpg
    
(#) icserny hozzászólása Jan 13, 2018 / 2
 
Az STMicroelectronics felvásárolta az Atollic céget, s azt ígérik, hogy a True Studio Pro 9.0.0 kiadása (várhatóan az első negyedévben jelenik meg) már ingyenes lesz. Bővebben: Link1 és Link2
A hozzászólás módosítva: Jan 13, 2018
(#) Peppe válasza icserny hozzászólására (») Jan 13, 2018 /
 
Egy használható IDE végre. Tuti lesz valami funkció, ami fizetős marad.
(#) csatti2 válasza Peppe hozzászólására (») Jan 13, 2018 /
 
A sajtóközleményben azt írták, hogy teljesen ingyenes lesz.
(#) vargham válasza csatti2 hozzászólására (») Jan 13, 2018 / 1
 
Teljesen ingyen lesz. Viszont csak STM32 eszközöket fog támogatni. A többit kiveszik belőle.
(#) csatti2 válasza vargham hozzászólására (») Jan 13, 2018 /
 
Ez természetes, melyik konkurens adna oda belsős infókat nekik ezután (IDE fejlesztői), illetve ők maguk miért is támogatnák a versenytársaik termékeit.
(#) cpt.zoltan.simon hozzászólása Jan 13, 2018 /
 
Már csak az volna jó, ha dobnák az Eclipse-t és a sokkal egyszerűbb és szerintem szebb NetBeans-re állnának át.
(#) rolandgw válasza cpt.zoltan.simon hozzászólására (») Jan 13, 2018 /
 
Renesas, NXP, Novuton, Infineon, Silicon Labs, Texas ...ez mind Eclipse alapot használ. Nem tudom az okát, de gondolom nem véletlen.
(#) cpt.zoltan.simon válasza rolandgw hozzászólására (») Jan 14, 2018 /
 
Oké, értem. De akkor mi a helyzet a KEIL-el?
(#) vargham válasza cpt.zoltan.simon hozzászólására (») Jan 14, 2018 /
 
Keil?
Drága.
(#) rolandgw válasza cpt.zoltan.simon hozzászólására (») Jan 14, 2018 /
 
Gyártók által biztosított fordítókra gondoltam. Keil, IAR, Rowley stb. más kategória.
(#) cross51 válasza cpt.zoltan.simon hozzászólására (») Jan 14, 2018 /
 
Annyira nem vagyok otthon STM32-ben, (inkább PIC32-vel szoktam foglakozni, de melóba EFM32 (silabs) kontrollereket használok).
Nekem az eclipse katasztrófa volt állandóan ki crash-elt, a NetBeans egy fokkal jobb amíg a kód mérete nem haladja meg az 500 sort nálam szét szokott esni, nem igazán megy benne megfelelően a code completion (i5, ssd mellet).

Próbáltam a Keilt is első nagyon tetszett a végén úgy zártam le, hogy ez egy elbas... visual studio.
Nem próbáltam sok mcu-t, de az eddigi érzés, hogy nem igazán tudnak a gyártok IDE-t csinálni.

De mivel ARM-hoz van Visual Studio (visual gdb, (atmel studio)) hátha valaki ki tudja fejteni itt, hogy miért oly buták a cégek, hogy a java-t nyomják ami többnyire arra nem képes mcu IDE szinten, hogy egy rendes sötét háteret rá lehessen dobni.
Erre két dolog jut eszembe VS nincs almára és pingvinre vagy egyszerűbb a plugin-eket fejleszteni.

Valakinek sejtése erre?
(#) SBahadurD hozzászólása Jan 14, 2018 /
 
Hát nem tudom, én az eclipse-nél gazdagabb funkcionalitással rendelkező kód szövegszerkesztőt még nem láttam (igaz, már évek óta nem is nagyon használok mást). Igaz, az elején kicsit lassú, meg néha nehézkesek a beállítások egy projektnél, de tapasztalatom szerint, ha ezen túl van az ember, akkor nagyon jól használható. Könnyen tudok navigálni a projektben, könnyű keresni benne, sok funkciót enged, és könnyű integrálni különböző rendszerekkel együtt. Ha valaki ismer olyan rendszert, ami nem eclipse alapú, mégis tudja azt a csomó kényelmi szolgáltatást, akkor kíváncsian várom a tippeket.
(#) cpt.zoltan.simon válasza cross51 hozzászólására (») Jan 15, 2018 / 1
 
KEIL-ben azt szeretem, hogy eszerű mint a faék. 3-nál nem mélyebb a menürendszere és ez pont jó. Ehhez képest Eclipse rettentő bonyolult.
A NetBeans-ed, érdekes, nekem sose hullott szét. Egyszer volt valami gondom, de az egy speciális egy bizonyos verzió volt. SZépen működött, 3 az 1-ben is, mert egyszerre ment rajta ESP8266-Xtensa, Rasperry-Pi "minden remote-ba (PI-n a compiler, és Pi-n a project maga is), és még mellé ARM-GCC STM32-vel.

Nem volt gond.
(#) cross51 válasza cpt.zoltan.simon hozzászólására (») Jan 15, 2018 /
 
Jó bár nálam megbuheráltan fut a Netbeans(MPLABX), mert abból fárasztónak tartottam nyomkodni a ctlr+space-t a code completion-hoz és át lett állítva, hogy elvileg 1 ms várakozással dobja fel, meg a pop up keyword-nek a-z A-Z + . -> lett beállítva lehet ez okoz neki némi problémát, bár szerintem nem kéne.

Szerk.:
Szerintem bonyolultságban egy a jó, ha egyszer átlátod sok minden testre tudsz szabni.
A hozzászólás módosítva: Jan 15, 2018
(#) cpt.zoltan.simon válasza cross51 hozzászólására (») Jan 16, 2018 /
 
Úgy érted az MPLABX-et használod mondjuk STM32-höz? Hogyan?
Következő: »»   108 / 176
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