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   107 / 176
(#) vargham válasza rascal hozzászólására (») Dec 6, 2017 /
 
Idézet:
„itt van az asztalomon vagy egy hónapja egy stm32h743 Nucleo-144

Az nem jelent semmit, mert a fejlesztőeszköz már jóval hamarabb elérhető. Most járunk úgy egy másik stm32 mcuval, hogy megvettük a Nucleot, megterveztük a nyákot, de az mcu-ra 4 hónapos szállítást ígérnek mindenhol... Az első szériához kereshettünk másikat.
(#) cimopata hozzászólása Dec 6, 2017 /
 
Üdv

Azt miért lehet hogy ST32F030-on próbálom mérni a VDD-t belső freferencia feszültséggel, de más értéket kapok mint amit a multiméterrel mérek rajta. A lábak alatt közvetlenül 2 x 100nF + 10uF.
adc_store[8] az adc 17-es csatornája
VREFINT_CAL_ADDR pedig a gyárilag lementett mért feszültség 3,3v tápnál.

Multiméterrel 3,268V-ot mérek.
viszont 3,224-t +/-5 olvasok ki átlagosan
Multiméter szerintem jó mert szkóppal is 3,28-at mérek.
  1. vdd=((3300 * (*VREFINT_CAL_ADDR)) / adc_store[8]);
(#) cimopata hozzászólása Dec 6, 2017 /
 
Ezen a képen most melyik a 0x1FFF F7BA - 0x1FFF F7BB cím?

cím.png
    
(#) kapu48 válasza cimopata hozzászólására (») Dec 6, 2017 /
 
Sor: …7B8, Oszlop: 0, Érték 06DE
(#) cimopata válasza kapu48 hozzászólására (») Dec 6, 2017 /
 
Az nem a 0x1FFF F7B2 - 0x1FFF F7B3 cím?
(#) cimopata hozzászólása Dec 6, 2017 /
 
Nem így kell értelmezni: ?

cím.png
    
(#) kapu48 válasza cimopata hozzászólására (») Dec 6, 2017 /
 
E szerint:
..B8 = 05
..B9 = F9
..BA = 06
..BB = DE
..BC = FF
..BD = FF


2 Bytes felbontást nem tudsz beállítani?
A hozzászólás módosítva: Dec 6, 2017
(#) cimopata válasza kapu48 hozzászólására (») Dec 6, 2017 /
 
Jah értem, csak ez a program teljesen logikátlanul van megírva. Minek a 0-4-8-C oszlop ha nem az utolsó byte a beírt regiszter nevéből. Ok. Tehát 5F4 ref fesz 3,3v al. De akkor sem ok miért mér kevesebbet.
(#) rascal válasza vargham hozzászólására (») Dec 6, 2017 /
 
Nem tudtam, hogy ez így megy.
(#) cimopata hozzászólása Dec 7, 2017 /
 
Teljesen meghülyít ez a ADC.

Nem teljesen értem hogy mi mivel van összefüggésben de úgy tűnik mintha a referencia feszültség jeléül részben más bemenet érékét kapnám vissza.
Van egy adc_store[9] tömböm amibe elméletileg 0-8 ig körkörösen töltené fel adattal az adc bemenetekről. Elmélet szerint adc_store[8] lenne a 17es csatorna értéke ami a referenia de mégsem mert észrevettem hogy a chanel8 bemenet hatással van rá.
Külön a chanle_8 (amit az adc_store[7] ből olvasok szépen változik 0-4095 közt szóval azt jól beleírja, de ha az adc_store[8] at nézem akkor az meg a chanel_8 0 állásánál 1290-et mutat ha maximumra tekerem akkor pedig 2960 at. Állítottam a többi bemenetet is de ott nem volt semmilyen hatás a adc_store[8]-ra.

Rosszul állítottam volna be a csatornákat vagy a DMA-t?

  1. ADC1->CFGR1 |=  ADC_CFGR1_DMAEN |       // enable DMA mode
  2.                                         ADC_CFGR1_DMACFG;  // DMA circular mode
  3.                                         ADC1->CR =      ADC_CR_ADEN | // turn on ADC
  4.                                         ADC_CFGR1_CONT; // enable continuos mode
  5.                                                                                                                                                                                                                                                
  6.         ADC1->CHSELR =  ADC_CHSELR_CHSEL0 | //adc_store[0] narrow_in1
  7.                                                                         ADC_CHSELR_CHSEL1 | //adc_store[1]
  8.                                                                         ADC_CHSELR_CHSEL2 | //adc_store[2]
  9.                                                                         ADC_CHSELR_CHSEL3 | //adc_store[3]
  10.                                                                         ADC_CHSELR_CHSEL4 | //adc_store[4]
  11.                                                                         ADC_CHSELR_CHSEL5 | //adc_store[5]
  12.                                                                         ADC_CHSELR_CHSEL6 | //adc_store[6]
  13.                                                                         ADC_CHSELR_CHSEL8 | //adc_store[7]
  14.                                                                         ADC_CHSELR_CHSEL17 ; //adc_store[8]
  15.                                                                        
  16.                                                                        
  17.  
  18.         DMA1_Channel1->CPAR  = (uint32_t)(&(ADC1->DR)); // peripheral (source) address
  19.         DMA1_Channel1->CMAR  = (uint32_t)(adc_store);             // memory (desination) address
  20.         DMA1_Channel1->CNDTR = 9;                             //  DAM átvitt adatok mennyisége
  21.         DMA1_Channel1->CCR |= DMA_CCR_PL_0;     // dma priority
  22.         DMA1_Channel1->CCR |= DMA_CCR_CIRC |    // circular mode enable
  23.                                         DMA_CCR_MINC |    // memory increment mode enable
  24.                                         DMA_CCR_MSIZE_0  | // memory size 16 bits
  25.                                         DMA_CCR_PSIZE_0 ;  // peripheral size 16 bits
  26.         DMA1_Channel1->CCR |= DMA_CCR_EN ;      // Enable channel
  27.         ADC1->CR = ADC_CR_ADSTART;
A hozzászólás módosítva: Dec 7, 2017
(#) csatti2 válasza cimopata hozzászólására (») Dec 7, 2017 /
 
M0-át még nem programoztam. Itt nincs sample time állítás, mint az M3-aknál? Ha van, tekerd kicsit feljebb a referencia mintavételezését, olyan mintha nem tudná rendesen beállítani a mintavételező kondit (kevés idő).
(#) cimopata válasza csatti2 hozzászólására (») Dec 7, 2017 /
 
Ennél a programnál maximumon használom 239 ciklus.
(#) csatti2 válasza cimopata hozzászólására (») Dec 7, 2017 / 1
 
És be is kapcsoltad az ADC_CCR regiszter VREFEN bitjével, ugye?
(#) cimopata válasza csatti2 hozzászólására (») Dec 7, 2017 /
 
Nahát.

Nem volt ezek szerint bekapcsolva.
  1. ADC->CCR |=             ADC_CCR_VREFEN;


Már annyiszor megszívtam ezzel a HAL os CUBE-os generált kóddal. CUbe ban beállítok mindent de ezek szerint mégsem elegendő.

Köszi.
(#) csatti2 válasza cimopata hozzászólására (») Dec 7, 2017 /
 
Szívesen.

Én mindig bújom a kézikönyvet is, rengeteg apró-betűs rész van, amire fontos odafigyelni.
(#) cimopata hozzászólása Dec 8, 2017 /
 
Hogyan tudom kiolvasni rendesen a gyárilag beleírt referenciafeszültséget?

Próbáltam ezzel de állandóan változik a kiolvasott érték:
  1. #define VREFINT_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7BA))
  2.  
  3. uint16_t cucc;
  4. cucc= *VREFINT_CAL_ADDR ;
A hozzászólás módosítva: Dec 8, 2017
(#) csatti2 válasza cimopata hozzászólására (») Dec 8, 2017 /
 
  1. #define VREFINT_CAL_ADDR   (*((__I uint16_t*) 0x1FFFF7BA))
  2.  
  3. uint16_t cucc;
  4. cucc= VREFINT_CAL_ADDR ;


Így próbáld ki.
(#) cimopata válasza csatti2 hozzászólására (») Dec 8, 2017 /
 
Sikerül más volt a bajaz egyik változót kellett volatile nek deklarálni mert mindig elvesztette az értékét.
(#) csabeszq hozzászólása Dec 11, 2017 /
 
Érdekesség az SWO-val kapcsolatban:

- ST-Link alatt az SWO UART-ként funkcionál, amit kiküld az IC SWO-ra, továbbküldi a PC felé
- semmi konzisztencia ellenőrzés nincs benne, szimplán fogad és továbbít
- Eclipse/OpenOCD alatt probléma volt, hogy az ITM formátuma más, mint a mezei UART-é, azt ITM-ben benne van a port is, meg sok más is mellé

Ez a viselkedés simán kikerülhető, ha nem ITM-re kötjük az SWO-t, hanem USART-ra. Innentől ha beállítjuk, hogy

  1. tpiu config internal /dev/stdout uart off 72000000 2000000


Akkor az SWO-ra érkező UART adatok megjelennek az Eclipse console ablakában olvashatóan (Linuxon). Az ITM üzenetek nem olvashatóak, mert tele vannak vezérlő karakterekkel.
(#) csatti2 válasza csabeszq hozzászólására (») Dec 11, 2017 /
 
Én vagy rendes USART-ot használok (DMA-val), vagy pedig a Segger RTT-jét. Mindkettő jobb tapasztalatom szerint az SWO-nál, mert nem blokkolnak.
(#) kistigris hozzászólása Dec 11, 2017 /
 
Sziasztok
Segítséget szereték kérni Atmel AT 91sam programozásában ?
(#) csatti2 válasza kistigris hozzászólására (») Dec 11, 2017 /
 
Most már jó fórumon jársz, azonban ki kellene picit bővebben fejteni a kérdésed. Programozni szeretnéd megtanulni, van egy kérdésed az IC-vel kapcsolatban vagy pedig fel akarsz rá tölteni valahogy egy kész programot?
(#) kistigris válasza csatti2 hozzászólására (») Dec 11, 2017 /
 
Egy kész programot szeretnék feltölteni,és 1db proci van.
(#) Lucifer válasza kistigris hozzászólására (») Dec 11, 2017 /
 
Ha elárulod helyileg merre igényled a segítséget az sokat fog dobni a projekten.
(#) kistigris válasza Lucifer hozzászólására (») Dec 11, 2017 /
 
Nyiregyháza,de ha valaki komolyan segitene akkor akár el is postáznám.Előre is köszönöm.
(#) Lucifer válasza kistigris hozzászólására (») Dec 11, 2017 /
 
Milyen proci ez konkrétan?
Normális programozócsatlakozó van-e a panelon?
(#) kapu48 válasza kistigris hozzászólására (») Dec 11, 2017 /
 
Veszel arduino DUE alaplapot!
Azon rajtavan a AT91SAM benne van a bootloader.
És tudod programozni USB portón keresztül. Arduino IDE-vel.
(#) kistigris válasza Lucifer hozzászólására (») Dec 11, 2017 /
 
AT91sam7s256 2.54 egysoros tüskesoron van a panelon kivezetve
(#) vargham válasza kapu48 hozzászólására (») Dec 11, 2017 /
 
Idézet:
„Veszel arduino DUE alaplapot! Azon rajtavan a AT91SAM”

Nincs. Azon Atmel SAM3X8E ARM Cortex-M3 van.
De ha jól tudom, a kérdező egy bizonyos MCU-ra szeretne feltölteni egy bizonyos binárist.
(#) cimopata hozzászólása Dec 11, 2017 /
 
STM32 egyszerűen nem értem a DeadTime állítás helyes procedúráját márha egyáltalán létezik olyan..

Ha inicializációkor beállítom a TIM1->BDTR regisztert és LOCK-olom a regisztert akkor jól működik.

Ehhez ki kellett kapcsoljam a LOCK_LEVEL-1 et ami gyanús módon megjegyzésnek odaírnak hogy az esetleges szoftverhibák ellen van. De az a helyzet hogy szeretném állítani a Deadtime ot működés közben hogy épp mire van szükség 2 értéket váltogatnék.
Sajnos nem akar jól működni. Először azt hittem hogy az a baj hogy az átállítás folyamán beragad vagy ilyesmi, de nem mert ha csak működés közben LOCK nélkül 1x beállítom akkor szkópon nézve látszólag teljesen véletlenszerűen elfelejt rakni holtidőt a sima és a negált kimenet közé. Néha csak a felfutó élnél néha a lefutó néha mindkettő, kb 2-3 periódusonként van valami hiba.

Van valakinek tapasztalata erről?
A hozzászólás módosítva: Dec 11, 2017
Következő: »»   107 / 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