Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Otazky ohladom STM32

Otazky ohladom STM32

V┼íetko ─Źo sa t├Żka mikropo─Ź├şta─Źov + Sekcia Arduino

Moderátori: psichac, Moderátori

Otazky ohladom STM32

Odosla┼ąod bibibo » 24 M├íj 2020, 17:51

Ahojte, zalozil som toto vlakno pretoze sa ucim programovat STM32, konkretne STM32L011. Predpokladam, ze casom otazok bude viac bud ohladom HW alebo SW.

Mam otazku ohladom casovacov. Potreboval by som si naprogramovat casovac, ktory po urcitom case vyvola prerusenie. Ked vsak citam manual, tak tam pisu, ze napr. TIM2 ma 4 kanaly. Na a tieto TIM2_CHx su na niektorych konkretnych pinoch ako alternativna funkcia. Naco mi je casovac na pine ?
bibibo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 459
Zalo┼żen├Ż: 05.11.2009
Bydlisko: Bratislavsk├Ż kraj
Karma: 1

Re: Otazky ohladom STM32

Odosla┼ąod maskrtnik01 » 24 M├íj 2020, 18:19

To ak by ste chceli napr├şklad pwm. Ak tieto ─Źasti nenastav├şte, m├íte periodic interrupt. Takisto ak pin nenastav├şte na alternate function a nevyberiete AFx zodpovedaj├║cu timeru, tak timer ten pin nebude ovplyv┼łova┼ą a m├┤┼że sa pou┼żi┼ą inak.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1701
Vek: 23.64
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 7

Re: Otazky ohladom STM32

Odosla┼ąod bibibo » 24 M├íj 2020, 18:29

Myslel som, ze PWM sa robi prave v periodic interrupt a ovladanim niektoreho konkretneho pinu. To teda znamena, ze ak budem chciet v nejakom projekte pouzit PWM, tak obvod musim navrhnut tak, aby som pouzil niektory z kanalov casovaca a nie hociktory pin.
bibibo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 459
Zalo┼żen├Ż: 05.11.2009
Bydlisko: Bratislavsk├Ż kraj
Karma: 1

Re: Otazky ohladom STM32

Odosla┼ąod maskrtnik01 » 24 M├íj 2020, 18:31

Softwarov├ę pwm sa d├í aj v ISR cez gpio. Obvykle sa pou┼ż├şva hardwarov├ę pwm na kan├íloch timera, preto┼że cpu iba nastav├ş timer a potom u┼ż nemus├ş robi┼ą ni─Ź.

Tak┼że ├íno, tam kde sa predpoklad├í pwm, sna┼żi┼ą sa pou┼żi┼ą pin ktor├Ż m├í vo─żn├Ż kan├íl na niektorom timeri. Ak u┼ż je dps hotov├í a ned├í sa cez kan├íly timera, d├í sa to zachr├íni┼ą softwarov├Żm generovan├şm pwm, na ├║kor za┼ąa┼żenia cpu.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1701
Vek: 23.64
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 7

Re: Otazky ohladom STM32

Odosla┼ąod bibibo » 24 M├íj 2020, 20:35

ok, diky. Myslel som si, ze to tak asi bude.
bibibo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 459
Zalo┼żen├Ż: 05.11.2009
Bydlisko: Bratislavsk├Ż kraj
Karma: 1

Re: Otazky ohladom STM32

Odosla┼ąod maskrtnik01 » 24 M├íj 2020, 20:40

bibibo nap├şsal:Myslel som, ze PWM sa robi prave v periodic interrupt a ovladanim niektoreho konkretneho pinu.


Ale aby sme si rozumeli, preru┼íenie s pwm nijako nutne nes├║vis├ş. M├┤┼żete ma┼ą ─Ź├şta─Ź ktor├Ż generuje pravidelne preru┼íenie a negeneruje pwm. Takisto m├┤┼żete ma┼ą ─Ź├şta─Ź ktor├Ż generuje pwm sign├íl, a nie je k tomu v├┤bec treba preru┼íenia.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1701
Vek: 23.64
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 7

Re: Otazky ohladom STM32

Odosla┼ąod bibibo » 02 J├║n 2020, 09:07

Narazil som na dalsi problem s ktorym sa trapim uz treti den. Mam k LPUART pripojeny GPS modul, ktory vysiela NMEA protokol s rychlostou 9600bps a viem ho prepnut na binarny protokol OSP. OSP protokol na rychlosti 9600bps funguje bez problemov. Problem ma vsak ak nastavim LPUART a aj GPS modul na rychlost 115200bps. Vtedy mi ten OSP protokol dobre nefunguje a niekde sa mi to zasekne. MCU mi bezi na MSI 2.097MHz, tak podla manualu by rychlost 115200bps mal zvladnut. Prikladam kod.

K├│d: Vybra┼ą v┼íetko
void LPUART1_IRQHandler(void)

{
   led_on();
   char t;
   while (!(LPUART1 -> ISR & USART_ISR_RXNE)){}
      t = LPUART1 ->RDR;


      if ( t != 179 && t !='\n')
      {
         rxBuf_LPUART1[rxIndex_LPUART1] = t;
         rxIndex_LPUART1 ++;
         led_off();

         //rxIndex_LPUART1 = 0;


      }
         else if (t =='\n' ){//led_off();
            memcpy (command, rxBuf_LPUART1, rxIndex_LPUART1);
            //command[rxIndex_LPUART1] = 179;
            command[rxIndex_LPUART1] ='\n';
            command[rxIndex_LPUART1 + 1] = '\0';
            rxIndex_LPUART1 = 0;

            txFlag_USART2 = 1;
         }
         else if (t == 179) {
            memcpy (command, rxBuf_LPUART1, rxIndex_LPUART1);
            command[rxIndex_LPUART1] = 179;
            //command[rxIndex_LPUART1] ='\n';
            command[rxIndex_LPUART1 + 1] = '\0';
            rxIndex_LPUART1 = 0;

            txFlag_USART2 = 1;

         }



}





K├│d: Vybra┼ą v┼íetko
while (1)
  {


      if (txFlag_USART2 == 1)
      {

         USART2_write(command);
         txFlag_USART2 = 0;

      }
}


K├│d: Vybra┼ą v┼íetko
void USART2_write(char *Buffer)
   {

   while (*Buffer != 179){

      while (!(USART2 -> ISR & USART_ISR_TXE)) {}
         USART2->TDR = *Buffer++;

   }

}

NMEA data su zakoncene znakom '\n' a OSP su zakoncene 0xB3 = 179. Ten USART2_write nemam este doladeny, ale pravdepodobne sa mi to zasekne niekde v tom preruseni. Tak ako pisem, staci len ked zmenim vsetko na rychlost 9600bps a OSP protokol funguje. Ziadny iny zasah do programu nerobim. Poradite kde moze byt problem ?
bibibo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 459
Zalo┼żen├Ż: 05.11.2009
Bydlisko: Bratislavsk├Ż kraj
Karma: 1

Re: Otazky ohladom STM32

Odosla┼ąod Tribec Zacks » 02 J├║n 2020, 22:18

bibibo, pozri sa ako mas nastaveny prescaler na APB1, musi byt na 1, inak bude uart clocknuty nizsie ako core, /2 /4..., potom cekni ako mas nastaveny oversampling na uarte. a do tretice, z prerusenia volas led on/off funkcie, ak to seriozne potrdbujes, definuj ich ako inline. kodu mas v preruseni strasne vela (volanie inych funcii a specialne memcopy). z prerusenia by si nemal volat kod, ktory sa da volat z inych miest, tiez je velmi pravdepodobne ze ti ten handler nestihne skoncit ked primas data 12x rychlejsie ako na 9600baud rate.
ak ti mozem poradit, prestuduj DMA sekciu v datashite, specialne periperal to memory mod, taktiez pozri na uarte CMIE bit v CT1 registri :) mozes ho pouzit na stopnutie dma vtedy kedy treba (pozri do DS a dojde ti to). v preruseniach let setni flagy podla ktorych hlavny loop bude vedet co robit, nesnaz sa spracovat data v handleri. taktiez dma podporuje double buffer teda vie zapisovat do jedneho buferu kym ti cpu spracuje druhy, prerusenia ti oznamia co to robi a podla flagov budes vedet ktory bufer spracovavat dalej
neboj sa pouzivat hw toho mcu ;)
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 653
Vek: 37.88
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Cork IRL
Karma: 22

Re: Otazky ohladom STM32

Odosla┼ąod lucky62 » 03 J├║n 2020, 06:20

Na konfigur├íciu hod├şn doporu─Źujem STM32CubeMX.

Jednoducho vyberie┼í procesor, navol├ş┼í funkciu pinov:
STM32_Pinout.png


a potom sa hráš s hodinami.
Ak je v konfigur├ícii hod├şn chyba, program to uk├í┼że.
STM32_Clock.png
....m├┤j bazar....

...Nikdy sa nehádaj s blbcom...
lucky62
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1094
Zalo┼żen├Ż: 14.02.2012
Bydlisko: Liptovsk├Ż Mikul├í┼í, SK
Karma: 9

Re: Otazky ohladom STM32

Odosla┼ąod bibibo » 03 J├║n 2020, 14:52

No, prescaler APB1 nestaveny nemam a ani oversampling. Led on/off som tam dal len pre kontrolu. Vyhodim to odtial. Tiez som uvazoval, ze to skusim s DMA, ale nemam v tom ziadnu skusenost. Takze nic ine mi neostava len to nastudovat a skusat. Dam vediet ako to dopadlo.
bibibo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 459
Zalo┼żen├Ż: 05.11.2009
Bydlisko: Bratislavsk├Ż kraj
Karma: 1

Re: Otazky ohladom STM32

Odosla┼ąod maskrtnik01 » 03 J├║n 2020, 15:26

Tak potom by sa hodilo skontrolova┼ą reset hodnoty. Prescaler je nejako nastaven├Ż aj ke─Ć sa ho nedotknete, je to v reference manu├íli. Takisto v┼íetky parametre v┼íetk├Żch perif├ęrii maj├║ svoje reset hodnoty.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1701
Vek: 23.64
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 7


Nasp├Ą┼ą na Mikropo─Ź├şta─Źe

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 2 host├ş.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.49 sek├║nd