Smazat příspěvek

 Chystáte se smazat zprávu (se všemi případnými odpověďmi) z kategorie Hlavní diskuze:


13.11.2016 (18:20:58)
Choze:
Tak už i STM32 je na úrovni mrduína jako doma. Svět je v zajetí generátorů kódů o kterých "vývojáři" vůbec netuší co dělají, ale "fungují". Nějaký týpek poslal dotaz na pwm i s kódem a jediná odpověď: "
I can recommend a working example from the StdPeripheralLibrary.
There is a "TIM_PWM_Output" called project, that does exactly this for 4 channels at once.
It is based on the Periph.DriverLib however."
**34
13.11.2016 (18:39:38)
Alesh obalka :
tArduino IDE už nějakou dobu umí STM32F103, Nucleo F103RB a asi i nějaký discovery. Dokonce nějaká pseudofabrika dělalla vlastní tarduino compatible kity s STM32 ale myslim že už se na to vysrali. Akorát to nemá moc podporu v knihovnách.
13.11.2016 (18:49:00)
Choze:
Já nepsal o arduino ide, ale o spl, hal a podobných monstrech a když pak člověk chce poradit s jednoduchou pičovinou tak se mu dostane fundované odpovědi, že má použít aparát jak JETE.
13.11.2016 (19:50:30)
VroutekB:
Jestli ti STDPeriph připadá jako bloatware, tak si to jdi programovat pro mě za mě registrama, vole.

Nevim co se ti na tom nezdá, dopyči. **18

TIM_TimeBaseStructure.TIM_Period = PeriodValue; TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = PulseLen; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIMx, &TIM_OCInitStructure);
Nebo myslíš, že takle je to lepší?
TIM3->CR1 = TIM_CR1_URS; TIM3->CR2 = 0; TIM3->SMCR = 0; TIM3->DIER = 0; TIM3->EGR = 0; TIM3->CCMR1 = 0; TIM3->CCMR2 = TIM_CCMR2_OC3CE | TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1; TIM3->CCER = TIM_CCER_CC3E; TIM3->CNT = 0; TIM3->PSC = 1875-1; TIM3->ARR = 255; TIM3->CCR1 = 0; TIM3->CCR2 = 0; TIM3->CCR3 = 0; TIM3->CCR4 = 0; TIM3->DCR = 0; TIM3->DMAR = 0; TIM3->CR1 = TIM_CR1_CEN;

Nebo fakt teď nepobírám, co tu Choze vyzvracel.
13.11.2016 (21:25:15)
8-bit obalka (web) :
Já jsem různým HAL pro mikrokontrolery taky nikdy nepřišel na chuť, protože ty periferie jsou natolik odlišné, že abstrakce nikdy nemůže zajistit vyšší kompatibilitu. Každá série procesorů má zkrátka jinou HAL, protože to jinak ani nejde. Tím pádem podle mě postrádá význam tohle vůbec používat. Nezmění se v zásadě nic, akorát člověk musí místo registrů studovat struktury a funkce v HAL, tj. vyměnit jeden manuál za jiný.
13.11.2016 (22:04:57)
VroutekB:
No jako nezlob se na mě, ale obsluhu timerů máš třeba stejnou pro všechny STM32. A rozhodně si teda pamatuju spíš pět položek ze struktůry, než 15 registrů.
13.11.2016 (22:23:30)
8-bit obalka (web) :
Tak to prr, vidím, že cheatuješ! Těch 12 registrů cos nastavil do 0 bylo určitě vynulovaných už po resetu a struktura má pravděpodobně víc položek, než 5 **23

A myslel jsem samozřejmě kompatibilitu mezi procesory, co nemají stejné registry Třeba STM32 vs. STM8. Tady se samozřejmě nikdo neshodne na kompatibilní HAL už z principu, pač se ani neví, jaké funkce kdo implementuje.
14.11.2016 (00:18:22)
VroutekB:
Ta první struktura má skutečně jen těhle 5 položek, ta druhá pro nastavení PWM jich má víc, ale to použiješ jen na PWM kanálech s komplementárními výstupy a timeru s BREAK vstupem (na HWové uvedení výstupů do definovaných stavů).

Ano, registry jsou vynulované po resetu. To první sem napsal z fleku, to durhé jsem vykradl ze svého druhého programu, co sem kdy na ARM stvořil. Nechtělo se mi to vymýšlet znova **02
14.11.2016 (08:58:26)
milan obalka :
Tak jako to je stejný jako s Cčkem na AVR... Taky to je přenositelné pro většinu AVR, ale jen do doby, než bude mít daný MCU jinou konfiguraci periferií. třeba, že má jen dva čítače a nebudou sedět registry a jmena čítačů...
14.11.2016 (12:10:58)
RayeR (web) :
BTW neni nahodou STDPeriph u novejch STMek uz ukonceny? Ted je prece na vsecko Cube. Kery sice umoznuje taky low-level pristup nebo hal, ale prej proti STDPeriph je to zas naky predelany. Kolega si holt musel ty herdy pro STM32L4xx prechroustat rucne, aby to bylo kompatabilni se stavajicim systemem co pouzivame v OS...

>milan
Tak to holt na MCUckach chodi, tam ses HW bliz nez na PC ci javomobilu. Jedine se da doporucit psat dostatecne modularne, abys musel pri prechodu na jiny typ prepisovat co nejmene kodu. Ale porad je to 100x lepsi proti ASM, kde bys musel prepsat lautr vsechno...
14.11.2016 (16:36:23)
Choze:
RayeR: Je to tak. Máš pravdu. Při tom prohlížení diskuzí jsem právě na tohle narážel.
Nejčastější odpověď na konkrétní otázku je - všechno to vyhoď a použij SPL. Jinde zase všechno to vyhoď a použij HAL. SPL je zastaralý, používej HAL. Ale ne... Použij Cube...

No a odpověď na otázku v záhlaví fóra - nikde.
A přitom je chyba třeba jen v nastavení jednoho bitu. Ale to nikdo neřeší, protože má SPL a pro jiného je chuj protože ten má zase HAL a poslední se jim směje, protože má Cube...
Mrdník horší jak na arduinu.**02
14.11.2016 (19:37:58)
RayeR (web) :
Tak ono malo kdo ma cas na to zacit kvuli tomu procitat nakej 1000 strankovej manual, pokud to zrovna nahodou nekdo nedavno neprogramoval na urovni registru, ze by to mel jeste v hlave, coz je zda dost ojedinele. AVRko uz taky davno nemam v hlave, ale zorientuju se v tom radove rychleji...
15.11.2016 (11:59:28)
Peťus (web) :
Tak ono to: "Tohle nepoužívej, použij tohle" tu bylo vždycky a úplně jedno, co to bylo...
Když někdo na AVR používal nějakou (C) knihovnu třeba na ty timery a něco mu nefungovalo, odpověď na to bylo: "tuhle knihovnu nepoužívej, použij tamtu"...

Nastavení timeru v HAL může být pro někoho blbost (ano, je to o nastavení pár registrů), ale nastav s registrama CAN, USB, Ethernet...
promiň, ale dělat něco x hodin/dní/týdnů co vymyslel někdo ve firmě, která má podporu a slušnou komunitu je, podle mě, ztráta času...
15.11.2016 (14:30:34)
Choze:
Ach jo... To je pořád dokola... Já přeci nepsal nic o tom, co se má a nemá používat. Samozřejmě, že knihovny mají své opodstatnění.
Celý můj povzdech od začátku diskuze je jen o FUNDOVANOSTI ODPOVĚDÍ.
Napíšu to tedy polopatě:
Když někdo neumí poradit ať radši drží piču. Než psát kraviny "ty jsi kokot, použij tohle a tamto"
To je přeci odpověď na úrovni: vyser se na STM, vyhoď celej HW, navrhni si novou desku a hoď tam SAM a to všechno jenom proto, že já ti to radím.
15.11.2016 (14:55:41)
8-bit obalka (web) :
>Peťus
Ale no tak. Inicializovat Ethernet mi zas tolik práce teda nedalo (kód ale není pro STMko):
ETHERC.ECMR = 0; // zakazat vysilani/prijem, protoze behem resetu by ta vec mohla vysilat sracky EDMAC.EDMR = EDMAC_EDMR_SWR_msk; // vyresetovat volatile BYTE w = 255; while(w --); ETHERC.ECSR = ETHERC_ECSR_BFR_msk | ETHERC_ECSR_PSRTO_msk | ETHERC_ECSR_LCHNG_msk | ETHERC_ECSR_MPD_msk | ETHERC_ECSR_ICD_msk; // vycistit vsechny stavy ETHERC ETHERC.ECSIPR = 0; // zakazat interrupty od ETHERC ETHERC.RFLR = 1518; ETHERC.IPGR = 0x14; // 96b intergap ETHERC.MAHR = revl(*(DWORD*)&macaddr); // (0x) 01-23-45-67 ETHERC.MALR = revw(*((WORD*)&macaddr + 2)); // (0x) xx xx 89-AB EDMAC.EESR = 0x47FF0F9F; // vycistit status EDMAC.RDLAR = &erxdesc; EDMAC.TDLAR = &etxdesc; EDMAC.TRSCER = 0; // kopirovat RFE & TFE do deskriptoru EDMAC.TFTR = 0; // threshold Tx_FIFO EDMAC.FDR = 7 << EDMAC_FDR_TFD | 7 << EDMAC_FDR_RFD; EDMAC.EDMR = EDMAC_EDMR_DE_msk; // little endian, 16B deskriptory ETHERC.ECMR = (physta & PHY_FD ? ETHERC_ECMR_DM_msk : 0) | (physta & PHY_100M ? ETHERC_ECMR_RTM_msk : 0) | ETHERC_ECMR_TE_msk | ETHERC_ECMR_RE_msk; EDMAC.EDRRR = EDMAC_EDRRR_RR_msk;


Přezdívka:*
Heslo:*

  █   ███   ███   
 ██   █ █     █   
█ █   ███   ███   
  █   █ █   █     
  █   ███   ███   
Opiš:*

Zde můžete smazat vlastní vlákno nebo kteroukoliv odpověď v něm. Můžete smazat vlastní odpověď v cizím vlákně, pokud na ni ještě nikdo jiný nereagoval. Mazat cizí vlákna a odpovědi v nich mohou pouze admini. Smazání příspěvku je nevratná operace! Smazáním vzkazu se smažou i odpovědi na něj.
Seznam uživatelů
Zpět na knihu