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   178 / 178
(#) sdrlab hozzászólása Jún 6, 2025 /
 

STM32F103, ADC gond

Adott egy STM32F103-as proci. Az egyik ADC csatornája szoftveres indítással mér. Azt vettem észre, néha kifagy a program, mégpedig azért, mert nem indul el a konverzió, hiába volt beállítva az SWSTART bit. Debuggerben ha ekkor bepöccintem kézzel ezt a bitet, akkor egy darabig fut megint rendesen a program, aztán egyszercsak megint megáll a futás, mert nem állítódott be az a bit.
Találkozott már valaki hasonlóval? Van erre valami épkézláb megoldás?
Jelenleg azzal próbálkozok, hogy egymás után kétszer állítom be a bitet..., egyelőre még nem volt egy fagyási eset sem így, de azért ez kicsit olyan elkenése a problémának érzetet vált ki bennem...
(#) icserny válasza sdrlab hozzászólására (») Jún 6, 2025 /
 
Nekem nem volt ilyen tapasztalatom. Sok évvel ezelőtt volt a kezemben STM32F103 (blue pill) és Keil alatt ilyeneket írtam:
  1. //--- ADC1 konfigurálása -------------------------
  2.   RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;    // ADC1 órajel engedélyezés
  3.   RCC->CFGR &= ~RCC_CFGR_ADCPRE_0;       // ADC prescaler = 6
  4.   RCC->CFGR |=  RCC_CFGR_ADCPRE_1;       // ADCCLK = 72/6 = 12 MHz
  5.   ADC1->CR2 =   ADC_CR2_EXTTRIG |        // External trigger engedélyezés
  6.                 ADC_CR2_EXTSEL;          // EXTSEL=111 SW trigger választása
  7.   ADC1->SQR3 = 1;                        // Ch 1-gyel indul a konverziós sorozat
  8.   ADC1->SQR1 = 0;                        // A konverzió sorozat hossza = 1
  9.   ADC1->CR2 |= ADC_CR2_ADON;             // ADC1 engedélyezése


A főprogram végtelen ciklusában így történt a mérés:
  1. ADC1->CR2 |= ADC_CR2_SWSTART;           // Konverzió indítása
  2. while(!(ADC1->SR & ADC_SR_EOC));        // Konverzió végére várunk
  3. result = ADC1->DR;                      // Az eredmény kiolvasása (törli az EOC bitet!)


Bővebb információ: A 2019/2020-as évadból a 2019. december 5. előadás anyaga
(#) pipi válasza sdrlab hozzászólására (») Jún 6, 2025 /
 
Beállítás után ellenőrzöd bebillent-e? (esetleg a tesztelés erejéig...)
(#) sdrlab válasza pipi hozzászólására (») Jún 7, 2025 /
 
Nem nagyon lehet ezt. A beállítás szoftveres, de amint el indult a konverzió, hardveresen törli is.
(#) sdrlab válasza icserny hozzászólására (») Jún 7, 2025 /
 
Lényegében ugyanezt csinálom én is...
Van még egy STRT bit is(ADC_SR), ami elvileg hardveresen áll be amikor elindul a konverzió. Most ezzel tesztelem...
(#) tki válasza sdrlab hozzászólására (») Jún 7, 2025 /
 
És ha nem kétszer írod a bitet, hanem az eredeti kódhoz képest csak raksz egy minimális időzítést, akár csak néhány utasítást a bit írása elé?

Biztosan nem vagy kezdő, de nincs másik task vagy interrupt, ami beleszól? Ha vannak taskok, akkor a driver vagy osztály, ami kezeli az ADC-t (feltételezem, nem te végzel mindent bitenként), ugyanazon a task-on lett inicializálva, ahol használod? Nincs valami ext trigger engedélyezve?
(#) sdrlab válasza tki hozzászólására (») Jún 7, 2025 /
 
A helyzet az, hogy mindent én kezelek bitenként )) Tudom, kicsit mazochista, de nekem így kényelmesebb kézben tartani mindent...
Természetesen vannak megszakítások is(ez egy viszonylag összetett project), de ez a mérés a főprogramból hívódik meg, időről-időre. Megszakításból ezt az ADC-t nem használom.
(#) tki válasza sdrlab hozzászólására (») Jún 7, 2025 /
 
És vajon eredeti az az ARM? : -) A Blue Pill miatt (meg ki tudja, még mi miatt) állítólag szeretik hamisítani, többször olvastam már... és az okozhat hasonló jelenségeket.
A hozzászólás módosítva: Jún 7, 2025
(#) sdrlab válasza tki hozzászólására (») Jún 7, 2025 /
 
Hát azt meg nem mondom neked )) Kínából vettem, ID-ek alapján az..., hogy a specifikációt mindenben teljesíti e, ki tudja...?!
(#) gtk válasza ColT hozzászólására (») Jún 11, 2025 /
 
Baremetal tapasztalat van. Ha nem mukodik a tap IC, akkor hogy mukodik a rendszered ?
(#) moltam válasza gtk hozzászólására (») Jún 11, 2025 /
 
Szerintem arra gondolt hogy nem éri el a power management ic regisztereit mert a linux modul nem működik, nem látja a rendszer.
(#) sszasza válasza sdrlab hozzászólására (») Jún 12, 2025 /
 
F103nál nem tudom hogyan van , de az F003-asnál az ADC frekijét trükkösen kell állitani. Hiába állitod be a megfelelő frekit, még arra is van egy külön bit hogy 14MHz felett vagy alatt. Na ott ha ezt elfelejtem, ilyesmiket csinál. Nálad valami ilyesmi nincs ? Egészen máshol, pl RCM-ben, ahol józan ésszel nem keresné az ember?
(#) icserny válasza sszasza hozzászólására (») Jún 13, 2025 /
 
Úgy tudom, hogy F103-nál 14 MHz a maximális megengedett ADC órajel.
(#) sdrlab válasza icserny hozzászólására (») Jún 13, 2025 /
 
Jól tudod! Nálam ez 13MHz-re adódott...
Az a fura, hogy csak az ADC1 csinálta ezt, az ADC2 nem. Viszont a legutolsó módosításom óta stabilan megy, néhány nap alatt egyszer sem akadt el az indítás...
(#) sdrlab válasza sszasza hozzászólására (») Jún 13, 2025 /
 
Az ADC órajele többnyire kisebb, mint a rendszer órajele, ezért van hozzá egy osztó is. A 103-asnál is van ilyen(2,4,6,8-as osztás), ami az APB2 előosztót tovább osztja...
(#) Barni87 hozzászólása Vas, 14:07 /
 

Kortek kapacitív érintőképernyő vezérlő panel Flash

Sziasztok!
Segítséget szeretnék kérni egy Kortek márkájú érintőképernyő vezérlő panellel kapcsolatban.
PC-hez csatlakoztatva felismer egy USB beviteli eszközt külső kezelőeszközök csoportjában, de nem működik az érintő felület.
Van mód a lapon található NUC122ZD2 ARM újra flashelésével érintőképernyőként megfelelő HID eszközként való felismerésére?
(#) vargham válasza Barni87 hozzászólására (») Vas, 19:39 /
 
Ha van hozzá szoftvered, akkor talán.
Érdeklődj a panel gyártójánál.
(#) toto hozzászólása Hé, 17:13 /
 

EBlink és újabb arm-none-eabi forditó ütközés

Sziasztok!
STM32G4 fejlesztéséhez Embitzet használok, beépített 9.3 GCC-vel. Tudom, hogy régi, de gyors és egyszerű. Most belefutottam egy olyan problémába, hogy az ST egyik minta-projektjét szeretném debugolni, ehhez újabb arm-none-eabi-gcc verzióra kellett váltanom. Az ST tündérbogyói nem adnak mindent forráskódban, hanem van pár előfordított lib (xyz.a), amit adott verziójú arm-none-eabi-val fordítottak, így nekem is ezt kell használnom, különben a fordításnál hibát kapok. A 13.1 verziót használom fordításhoz, és a beépített EBlink-et használnám debugra. Viszont az alábbi hibaüzenetet kapom:

EmBitz embedded firmware debugger for arm-none-eabi (Nov 13 2024/17:00:02).
Based on (GDB) 7.8.2 - License GPLv3+ by Gerard Zagema.
Reading symbols from bin/Debug/_STM32G473.elf...
(no debugging symbols found)...done.

Maximum debug infóval (-g3) és optimalizáció nélkül (-O0) fordítom, de mégsem működik. Arra gondoltam, hogy az újabb arm-none-eabi-ban más formátumú a debug információ (dwarf4 helyett dwarf5), és az EBlinkbe a GDB 7.8.2 be van drótozva, így esélytelen, hogy működjön. Az elérhető legújabb EBlinket használom (6.02). Valaki meg tudna ebben erősíteni, és inkább váltsak valami modernebb debuggerre? Vagy máshol van a hiba?
Tudom, hogy a CubeIDE kézenfekvő lenne, de inkább egy tüdőgyulladás.
Következő: »»   178 / 178
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