Nove pozice v nasem tymu (ST Praha, MCU support nebo FAE pro Cechy a Slovensko)

Tomas Dresler dresler na hw.cz
Pátek Leden 9 16:18:51 CET 2015


Jeste si dovolim jednu poznamku - od toho priklady jsou, aby se pomoci 
copy-paste co nejrychleji rozchodily a az potom adaptovaly na konkretni 
HW bez toho, abyste potreboval lezt po neznamych registrech. Ten priklad 
to jiz udelal a to je duvod, proc tam je.

Ja to beru jako stavebnici, kterou si poskladam z peripheral examples, 
a kdyz vse bezi, pak teprve pisu aplikacni kod. Klidne si rozchodte ADC 
bokem na tom prikladu, pak to vezmete jako modul a sup s tim do vaseho 
projektu.

Tomas

Btw. Hitex vydal genialni knizku o programovani STM32, podobnou a velmi 
hezkou psanou hebrejsky mam na stole, rikam ji STM32 bible :-)

On 2015-01-09 13:48, Fanda Kopriva wrote:
> Dobry den
> mel bych takovou prosbu (muzete-li to ovlivnit).
> Bylo by hezke udelat ukazky inicializace jednotlivych periferii.
> Napriklad philips ma v zahlavi popisu kazde periferie co je potreba
> udelat aby se
> periferie rozbehla.
> 1 - spustit hodiny a kde .
> 2 - nastavit porty a kde
> 3 - pripadne dalsi nastaveni
> 4 - nastavit registry u periferie pro nejaky zakladni rezim.
> Kdyz toto udelate tak se periferie spusti a muzete si s ni hrat.
> ST nabizi komplexni reseni ,ktere zahrnuje vsechny moznosti pro
> vsechny procesory.
>
> Bezne si prectu kapitolu o periferii a zacnu konfigurovat registry.
> Kdyz to nebezi tak to znamena cist vsechno ostatni a nebo se zacit
> hrabat v prikladu.
> To znamena skakat mezi radou souboru .c a .h a snazit se pochopit co
> chtel basnik rict.
>
> Priklad
> potreboval jsem rozchodit 16 bit sar AD prevodnik v f373.
> vysledek je nize.Je to par radku ,ale nikde jsem se nedocetl ,ze se
> musi zvlast zapnout
> napajeni prevodniku   PWR_CR |=  0x200; (nebo to prehledl)
> Cely se to chovalo ,ze to zije ,jenom data byly nulovy.
> Potom jsem ve vasem prikladu hledal dve hodiny ,ze tam ma byt ten 
> prikaz.
> A potom nasel ten registr v manualu v uplne jiny kapitole.
>
>
> void adcinit(void)
> {
>         RCC_CFGR      |= 0x90000000;   // 9 >> 48 deleno 8 = 6mhz pro 
> sdadc
>         RCC_APB2ENR   |= 0x07000000;   //zapne  hodiny adcdc
> toto jsem tam nadal       PWR_CR |=  0x200;
>        SDADC1_CR1     |= 0x80000000;        //ini
>         citac = 100;while ( citac ) citac--;
>         while (!( SDADC1_ISR & 0x80000000 )) ;  // cekej na ini
>        SDADC1_CR1    |= 0x00000008;        //interupt na konec extref
>         SDADC1_CR2    |= 0x01480000;        //fast,cont
>         SDADC1_CONF0R  = 0x00000000 | (gain<<20); //gain ofset
>         SDADC1_CONFCHR2 = 0;               //conf0 pro kanal8
>        SDADC1_CR1     &= ~0x80000000;        // konec ini
>         citac = 100;while ( citac ) citac--;
>         SDADC1_CR2     |= 0x00000001;        //adon
>         while ( SDADC1_ISR & 0x80004000 ) ;  // cekej na ini=0
>         citac = 100;while ( citac ) citac--;
>         SDADC1_CR2     |=  0x00800000;        //start konverze
>          NVIC_IntEnable(IVT_INT_SDADC1);
>
>         hodnotamin=0xffff;
>         hodnotamax=0;
>         citac = 0;
> }
>
>
> void sdacint() iv IVT_INT_SDADC1 ics ICS_AUTO {  //25us   7us
>         GPIOA_BSRR = tesd0A;
>         hodnota = SDADC1_RDATAR + 32767;citac++;
>         audiobufer[audiobuferinuk++]=hodnota ;
>         if (audiobuferinuk>6144) audiobuferinuk=0;
>         if (hodnotamin>hodnota) hodnotamin=hodnota;
>         if (hodnotamax<hodnota) hodnotamax=hodnota;
>         GPIOA_BSRR = tesd0A << 16;
>                                                }
>
> Techto par radku nahradite desitkama kilobytu textu a pritom prave
> techto par radku je podstatnych.
> Ty priklady od Vas spise zavadeji (aspon mne) .Malo kdo bude treba
> merit termoclanek a tak aby vyuzil Vas priklad tak musi
> projit a zahodit vetsinu programu z prikladu a napsat si vlastni.To
> co je potreba je prave jenom ta
> inicializacni cast.
>
> Pripada mi ,ze prave prilisna komplexnost ukazek je na skodu.
>
> Podobna byla ukazka usb VCP.Nikdo nebude  procesorem resit VCP s
> vystupem na USART.
> Na to pouzije FTD nebo neco podobnyho.Ocistit VCP od toho Usartu mi
> dalo dost prace a nez jsem to dodelal tak
> jste tam dali to reseni bez Usartu .Ale to bylo od zacatku zbytecny.
> Treba u USB si myslim ,ze by pro vetsinu aplikaci stacilo udelat neco
> jako USB stack jako je FTD.Jednoduchy rozhrani
> Prijde byte nastavi se flag a muzu ho vycist a mam-li volny bufr tak
> muzu zapsat.
>
> Omlouvam se za to postesknuti ,ale mozna je vic takovych staromodnich
> programatoru, co si program
> misto sestavovani pisou.
>
> Diky Fanda



Další informace o konferenci Hw-list