Tak si vemte skoro libovolné STM32. Třeba takové STM32F103 v populárním vývojovém kitu "BluePill" má vyvedených 10 ADCček a periferií má dost podobně jako ten RP2040.
Programovat se to dá nejlépe v čistém Cčku s pomocí ST HALu (pak člověk dokáže využít nejvíc potenciálu toho procesoru), ale pro začátečníky je dopsaná i podpora do "Arduino IDE"...
S tím jak to funguje v Arduino IDE bohužel neporadím, já to programuju v Keil uVision v Cčku s pomocí STDPeriphLib (dřívější verze HAL knihoven od ST).
Má to rozhodně hodně velkou "vstupní bariéru" (naučit se co kde najít, jak se používají perfierie, jak nakonfigurovat clock/PLL, atd), ale na druhou stranu to je strašlivě silné. Programátor v sobě má debuger, který se v reálném čase může koukat do libovolného paměťového místa procesoru, takže krokovat program a koukat při tom na jednotlivé proměnné jde out of the box. Oproti standardnímu "arduino debugování" stylu "přidám printf, zkompiluju a spustím" to je naprosto jiný kafe...
Chápu, že máte důvod k nepoužití programátoru - minimálně je to další krabička a dráty. Viděl jsem to stejně a bránil se STM32. Pak jsem koupil na ebay STLink v2 za nějakých 60-80 Kč, destičku s STM32F407 a zjistil jsem, že do desky mi stejně vede USB na napájení a komunikaci, převodník TTL RS232 kvůli ladícím výpisům a ten programátor s nějakým čtyřmi fousy mi už nijak nezavazí. Ale to je můj případ.
STM32 má docela dobrou podporu a spoustu příkladů jak na netu, tak vpřímo ve svém IDE co je zdarma - STM32CubeIDE. Mě toto prostředí na 100% nevyhovuje, ale dá se s tím jako hobby pracovat mnohem lépe, než s Arduino IDE, které je dobré opravdu tak pro hraní. STLink navíc umožňuje ladění přímo v IDE. No a až uvidíte možnosti konfigurace převodníků, po ATMega328 už ani nevzdechnete. :-) IRQ, DMA, řetězení převodů z různých vstpů.. Viz např. https://deepbluembedded.com/stm32-adc-tutorial-complete-guide-with-examples/ Prostě STM32 je o level výš, než ATMega. A většina pinů řady STM32F je 5V tolerantní. Tak neváhejte, krásný nový svět čeká! :-) (Dokud jde nakupovat v číně..)
UART funguje dobře, bez programátoru se to programuje blbě. Jednak musíš furt mačkat čudlík a možná přehazovat jumpery, protože na rozdíl od atmegového Arduina to nemůže přepnout čip do resetu pomocí DTR linky hardwarového sériáku, jednak až tam uděláš chybu (a to uděláš, protože třeba inicializace hodin je, jak píše bkralik, ne úplně triviální), tak to potřebuješ debugovat přes SWD.
Programátor bitbanguju přes GPIO…
To, ze pouzitie je jednoduche, podla mna plati aj o bare metal AVRku. Akurat clovek musi vyvinut trocha viac vlastnej iniciativy. Ale to podla mna nie je na skodu, ak sa chce clovek aj nieco naucit a nie sa len hrat. V skutocnosti si myslim, ze Arduino podporuje lenivost, pretoze clovek v konecnom dosledku dostane vsetko hotove pod nos, staci do toho pustit stavu a nahrat nejaky soft.
> Akurat clovek musi vyvinut trocha viac vlastnej iniciativy.
Tohle může taky skončit odrazením začátečníka. Když jsi lama a nedokážeš v rozumné době rozchodit ani nějaké demo, tak je to dost demotivující.
> pretoze clovek v konecnom dosledku dostane vsetko hotove pod nos, staci do toho pustit stavu a nahrat nejaky soft
Pak záleží, jestli člověk má cíl používat dobře MCU, nebo to jenom používá jako prostředek k dosažení něčeho jiného, že.
ja som roky rokuce fical na AVR8 (bare metal, ziadne arduino) a teraz pomaly swapujem na STM32. nejake veci mam este rozrobene pre atmel, ale nove projekty uz budem riesit na STM32, pokial by sa nenaslo nieco vylozene uchylne.
ja na to vzdy idem takym hardcore sposobom, takze mam vsetko vybuildovane z 0. ako pre AVR tak pre STM32. pre AVR mam dokonca aj DIY ghetto style programator.
to STM je pohodlnejsie a ked si clovek zriesi/zozenie nejaky bootloader schopny flashovania (na AVR otazka tak 4-5 hodin casu), programator uz nepotrebuje. vie to potom natlacit hoc aj po seriaku.
> to STM je pohodlnejsie a ked si clovek zriesi/zozenie nejaky bootloader schopny flashovania (na AVR otazka tak 4-5 hodin casu), programator uz nepotrebuje. vie to potom natlacit hoc aj po seriaku.
Problém je, že „atmegová arduina“ mají sériák jako samostatný čip, který umí MCU resetnout. Zatímco „armové desky“ (a možná to Arduino s AtMega32U4) mají sériák jako softwarově implementované USB CDC. Pokud si ve svém firmware omylem rozbiješ USB (a nemáš nastavený watchdog), tak už se do bootloaderu nedostaneš a musí někdo fyzicky zatahat za reset. Stejně tak pokud si ve svém firmware <b>neaktivuješ</b> (v tom co generuje CubeMX je defaultně vypnuté!!!) SWD, tak se tam už nepřipojíš debugerem. Doufej že tvoje deska má vyvedené BOOT piny a jejich přehozením to dostaneš do vestavěného bootloaderu.
Co máte furt s tim sériákem? Když se na něj vykašleš, nemusíš ve firmwaru mít zakompilovaný USB. Ušetří se RAM, Flash, zjednoduší program. Navíc přes USB se nedá rozumně debugovat. Pokud máte nějaký osobní problém s OpenOCD, tak STM32 programátory se dají přeflashovat na Black magic probe. Ta pak poskytuje přímo GDB přes virtuální sériovku.
A ta halda vykřičníků je celkem zbytečná. SWD se dá vypnout jenom dvěma způsoby. První je nastavit ochranu paměti na nejvyšší úroveň, pak je zakázaný debug nevratně. To, o čem se tu ale bavíme, je vratná a dokonce snadno opravitelná záležitost. CubeMX totiž způsobí vypnutí SWD pomocí AFIO. Jenže to je softwarová záležitost. Jakmile proběhne boot procesoru, SWD je zapnuté, dokud nedojde na to softwarové vypnutí. Řešení? Přenastavit si programování, aby se programovalo během resetu. Pak to jde naprogramovat normálně znova. Druhá možnost je probudit to do bootloaderu pomocí BOOT pinu. Třetí možnost je probudit to do bootloaderu a naprogramovat přes sériovku. Překvapivě - když je v datasheetu napsaný, že bootloader umožňuje programování po sériovce, tak to jde. Jak nečekané.
Diletantství ardujínistů je, zdá se, neomezené. Počet vykřičníků v jedné řadě nikoli.
Prvy a zasadny problem je v tom, ze my o voze a vy o koze. Ja som arduino vo svojom prispevku nespomenul ani raz (a v zivote som ho ani nedrzal v ruke). Neodkazujem sa nanho a je mi ukradnute, pretoze by mi zavadzalo. Pouzivam AVR vo forme bare metal navrdo a s Vimom, gcc a avr-libc. Tam si to clovek nadratuje, ako chce. Uplne to iste plati o STMku.
> "Pokud si ve svém firmware omylem rozbiješ USB (a nemáš nastavený watchdog)"
v takomto pripade je clovek v prvom rade blbec.
Do disablovaneho SWD se da dostat kratce po resetu, bezne jsem to tak praktikoval na vice ruznych STM32 a celkem casto (dosly piny, tak se pouzivaly i ty SWDIO/SWCLK).
A na nedostupnost bootloaderu jde celkem snadno udelat hack kdy se nejaky pin kde jinak nemuze byt pull-up zkontroluje na svoji napetovou uroven, takhle to resim ja, z bootloaderu se do aplikace v takovem pripade nepreskoci.
Minimalisticky seriovy bootloader se vleze do prvniho sektoru, vektory jde pak presmerovat do aplikace.
Ta podpora je dost špatná. Například bez LTO to v image nechává spoustu bordelu (stringy - plné cesty k souborům…), s LTO to odstraní interrupt vector table. (je na to už dva roky bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83967#c14) Dále pro to není Arduino Makefile, takže se to musí kompilovat z toho jejich IDE (nebo pomocí arduino-cli, které je úplně nekonečně pomalé), přičemž já to IDE moc nerad a chtěl bych používat svůj textový editor. A i v tom IDE trvá build několik sekund, což mi přijde dost. A samozřejmě tím nejdou využít různé funkce procesoru, se kterými API Arduina nepočítalo, ale to je očekávané.
ST HAL pro změnu v podstatě vyžaduje ten jejich non-free generátor kódu, to někomu může vadit.
HAL se bez generátoru projektu (STM32CubeMX) používat dá, ale opravdu to vyžaduje celkem boj - chce to prostudovat strukturu example projektů a zjistit, co za všeljaké startup a linker soubory si vypůjčit, jaké soubory z HALu kde #includovat, co kde #definovat, a jak povolit a inicializovat jednotlivé drivery (To už jde *relativně* snadno podle dokumentace v kódu, nebo přibaleného manuálu v *.chm (Ten je strojově vyexportovaný z komentářů v kódu, ale mě se v tom orientuje líp).
To je tedy jen pro zajímavost - nikdy bych to ani nezvažoval jako něco relevantního, když je řeč o Arduinu.
Jakkoli nejsem úplně nadšenec do Arduino IDE, mají můj respekt za to, že nestojí v cestě souběžné úpravě kódu v jiném editoru.
Když píšeš kód třeba ve vimu, a Arduino IDE je už jednou dobře nastavené na komunikaci s deskou, tak pro rekompilaci a nahrání do ESP32 stačí Alt+Tab, Ctrl+U (a počkat docela dlouho, asi 20 vteřin).
Já proto používám pořád ještě STDPeriphLib, který už nemá ofiko support (a není pro nové Hčkové řady, ke stáhnutí pro starší furt je), ale na druhou stranu to je jenom balík Cčkových souborů a člověk co potřebuje, tak si prostě na#includuje.
Jinak co se týká programátoru - každý "devkit" (v řeči ST Discovery Kit) v sobě má zabudovaný programátor s vyvedeným konektorem. Takže stačí zainvestovat dvě (STM32F0 disco) až čtyři kila (STM32F4 disco) a člověk dostane devkit i s programátorem, který si není problém připojit k čemukoliv jiného...
Tak HAL taky můžete jen na#includovat, a jen uděláte pár #define aby se povolily správné drivery, a běží to. Akorát je toho víc, a je to těžkopádnjší, ale v nic tomu vyloženě nebrání a hlavně to není nikde rozumně zdokumentované.
Disca jsou hlavně starší evalboardy - dnes je lepší použít Nuclea, jejichž integrovaný STlink má i sériový převodník.
Já o zastaralosti nic neříkal, jen že jsou vývojově starší, a že je lepší sáhnout po ekvivalentním Nucleu.
Integrovaný UART, u kterého člověk nemusí bojovat s převodníkem a hledat RX a TX piny na konektoru, je podle mě hodně silná výhoda.
Samozřejmě se nebavíme o tom, co využít, když jdete navrhovat elektroniku, pak každý inženýr přijde na to, co je zrovna nejlepší pro jeho use-case, ale jsme ve vláknu, kde se řeší spíš alternativy k Arduinu.
obejde bez operačního systému
Znamená to, že tam nejde dát, nebo tam nemusí být?
Jinak já si před cca rokem a půl pořídil desku s F1C100s (Lichee pi nano, ARM926EJ-S ARMv5TE) vypadá dost podobě. Dá se do ní dostat Linux. Bohužel se mi nikdy nepovedlo zkomplikovat jádro 5.x a starší mi nenajela i když by to všechno mělo fungovat, tak to celé skončilo v šuplíku "na potom až bude víc času"...
Nemá to MMU, takže si myslím že jediná věc co by na tom mohla fungovat je https://en.wikipedia.org/wiki/%CE%9CClinux
Nějak mi uniká smysl toho, proč vyvíjet/produkovat další "moderní" mikrokontrolér, když už tu máme STM32, PIC32, Renesasy, NXP, ESPčka a určitě hromadu dalších. Co to přináší krom posílení tržní pozice Raspberry foundation? Jediná věc, která na tom stojí za řeč je ta "generic input output" periferie...
Na Risc-V zase nic tak super nevidim, krome 'killer' feature ze je otevreny (k cemu to ale zatim je, kdyz se skoro nepouziva?). A idea ze si lide navrhnou vlastni risc-v do FPGA nebo primo nechaji udelat kremik mi prijde prinejmensim usmevna*.
No a prave popularita veci od RPi by mohla posunout kupredu i ten Risc-V, ze by to treba nekdo adoptoval, vznikla by vetsi diverzita na trhu.
* na prvni je potreba hodne znalosti, je to naprosto marginalni zlomek open-source komunity, na druhe potrebujete jeste balik penez a zkusenosti. Lide, kteri neco opravdu umi obvykle nemaji cas resit "projekt pro projekt", mozna protoze "yes I can" umi vyjadrit i komercne uspesne.
ESP32-S2 má RISC-V koprocesor. Nové ESP32-C3 je celé RISC-V. Kendryte K210 je RISC-V s koprocesorem pro neuronové sítě. BeagleV má dvoujádro RISC-V s DSP pro strojové vidění, NPU a nějaký akcelerátor pro strojové učení + 4/8 GB RAM. Alibaba uvedla šestnáctijádro RISC-V. GigaDevice už nějakou dobu prodává RISC-V drop-in náhrady procesorů STM32 jako GD32VF... Western digital vyvinulo RISC-V pro SSD.
Podstatné není to, že je otevřený. Podstatné je to, že není zatížen licenčními poplatky.
Ano, zatím není RISC-V na trhu nějak příliš významné, ale je poměrně dobře možné, že časem zcela nahradí ARM. Počet produktů obsahující RISC-V v nějaké podobě roste. Pro potřeby bastlířů je K210 poměrně levný overkill a až bude dostupné ESP32-C3, tak bude i low-cost RISC-V s WiFinou.
Ty licencni poplatky "vyresi" velci hraci na trhu se svym patentovym minovym polem. Navic primarne jde o chytry design core, takze sice nezaplatite per-unit poplatek ARMu, ale zaplatite si ho nekde jinde nebo zaplatite vlastniho vyvojare.
Ja to co pisete jednoduse zatim nevidim, sice ty obvody existuji, ale tak nejak se moc nikde seriozne nenabizi, ani cenove to lepe nez napr. ARM nevychazi.
Kdyz se to zmeni, budu jen rad.
Zas maj k tomu cipu alespon dokumentaci - jsem zvedavej jestli se to dostane do bezne distribuce - a kolik to bude stat.. treba pro me aplikace, kam vsude cpu Xmega32, by to mohla byt vhodna nahrazka (hlavne kdyz preferuji pristup "jeden cip vladne vsem", nez tisice kombinaci mcu napr. od stm32 - v podstate duvod proc je nepouzivam je ze je tam moc siroka nabidka a neda se v tom pomalu orientovat).
Skoda ze tam neni onboard flash pro kod (predpokladam ze ji udelat spolehlivou vyzaduje prisnejsi/drazsi procesy, nez u logic only cipu)
Spekulaci proc to udelali bych videl ve smeru - "mame uz dost toho, ze nam lidi porad rikaj d*vky od broadcomu".
Pak obdivuji ten Appli pristup - udelame "nahodne" zarizeni a lidi to budou milovat, nebo snad vedel nekdo ze tohle prijde? Ty NDA museli byt slusny ze se to neprovalilo - takze pro tvorbu klonu zacina sprint az ted :)
U starších ESP32 to ADC bývalo příšerné, zřejmě chyba v návrhu. U novějších ESP32 z r. 2019 jsem už pozoroval šum na úrovni "jen" zhruba posledních dvou bitů. Takže efektivně 10 bitový převodník. To na levný jednočip ujde, a kdo potřebuje pořádně vzorkovat data, ten si může za pár korun dokoupit třeba MCP3202.
Zhruba o dva řády rychlejší (41.7 Msps) a o řád dražší (500 Kč+) je pak soustava raspberry pi zero & AD9226 & AD8138: https://iosoft.blog/2020/07/16/raspberry-pi-smi/
Zbývá mi otestovat třídolarový ESP32-S2 WROOM modul. Papírově to vypadá jako přesně to, co potřebuju, hlavně díky zabudovanému rychlému USB už na té malé desce.
25. 2. 2021, 23:17 editováno autorem komentáře
Tady tyto čipy si vystačí s 256 nibbly (polovina bajtu) a přitom se pořád používají: https://www.root.cz/clanky/ctyrbitove-mikroradice-rady-epson-s1c60/#k02
PS: Pravda, Python ani MicroPython na tom nejede :-)
V predpredaji to ponúka rpishop.cz: https://rpishop.cz/pico/3352-raspberry-pi-pico-0617588405587.html?SubmitCurrency=1&id_currency=2 za cca 4 eurá/109 Kč.
Ono bude jeste celkem zajimave sledovat patenty velkych hracu, az zacnou trollit a kosit produkci R-V SoC novacku. Mezi sebou to nedelaji, protoze si je crosslicencuji. Ale viz ruzne spory typu Cyrix/Via apod (nepamatuji se presne o koho slo, neberte mne za slovo).
R-V sice muze byt free, ale v dusledku se budou nektere enhanced vlastnosti blbe uvadet na trh.
Konkretne tento procesor nie je nejako extremne zaujimavy, podobne parametre a pouzitelnost asi dosiahne aj ESP8266 alebo ESP32, co sa IO schopnosti tyka, sa to pohybuje na urovni nejakeho toho Arduina.
Ale mozno z toho vznikne zaujimavy format so zaujimavymi procesormi. Keby v tom bol nejaky RISC-V, tak si to hned aj kupim.