Nove pozice v nasem tymu (ST Praha, MCU support nebo FAE pro Cechy a Slovensko)
Fanda Kopriva
info na elektronikavyvoj.cz
Pátek Leden 9 13:48:22 CET 2015
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ší část ---------------
A non-text attachment was scrubbed...
Name: info.vcf
Type: text/x-vcard
Size: 183 bytes
Desc: [žádný popis není k dispozici]
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150109/e75042f7/attachment.vcf>
Další informace o konferenci Hw-list