Stránka 1 z 4
výber mikrokontroléra - začiatočník
Napsal: 02 dub 2025, 20:47
od RudoSK
Zdravím, chcel by som sa opýtať na názory pre výber vhodného mikrokontroléra pre môj účel a schopnosti. Programoval som v jazyku C (učebnica Herout), obvodovú techniku zvládam, v programovaní mikrokontrolérov som začiatočník.
Aktuálne by som potreboval vyriešiť problém posielania I2C príkazov do TSA5511 napr. na základe voľby z DIP prepínačov. Neskôr možno z "klávesnice". Rovnako pomocou I2C ovládať napr. DVB-T tuner. Samozrejme, rád by som sa venoval neskôr aj iným projektom.
Otázka je výber vhodného mikrokontroléra. Na začiatok som pozeral PIC16F84 a Arduino Uno.
K PIC som našiel *.pdf knihu s asemblerom od začiatkov. K tomuto mikrokontroléru je treba aj programátor? Aké zhruba sú jeho výhody a nevýhody?
K Arduino Uno som našiel veľa projektov a dokonca aj priamo projekt na komunikáciu pomocou I2C - zrejme veľmi populárny MC. V doske je ATmega328P v DIP, ktorý je možné programovať priamo v doske UNO cez USB? Nie je potrebný žiadny programátor? Je potom možné vybrať MC z dosky UNO a aplikovať ho do finálnej dosky? Aké sú výhody a nevýhody?
Resp. uvažovať o výbere niečoho úplne iného?
Ďakujem za konštruktívne rady a pomoc!
Napsal: 02 dub 2025, 20:55
od rnbw
Zacni s Arduinom. Nepotrebujes nic, len pripojit USB kablom.
Procesor vybrat a pouzit mimo mozes, len mu musis zabezpecit rovnake podmienky ako ma na doske Arduina (krystal). Ak teda nechces menit fuse bity (na to potrebujes programator).
Napsal: 02 dub 2025, 21:25
od misocko
tiež suhlasim s Arduinom, vieš si to spraviť uplne amatersky, dosť knižnic, alebo možeš isť svojou cestou - podporuje priamo C. Možeš však dosť "zlenivieť" tým že si len budeš hľadať knižnice a neposunieš sa ďalej. Okrem toho, ak tomu nerozumieš, kombinacia knižnic nemusí fungovať. Ale na začiatok ..., ja by som s MCU inač vobec nezačal, ale ani sa už ďalej neposuniem - aktualne riešim Arduino, OBDII cez WiFi - knižnice už nefungujú

Napsal: 02 dub 2025, 21:30
od forbidden
Ač mrdujíno nemám rád, tak pro začátečníka klidně doporučím. Případně
PICAxe, ESP32, nebo Raspberry Pi Pico. Prostě něco, co je jednoduchý na naučení a má to nějaký schopnosti adekvátní k dnešní době. Má to nějaký IDE a komunitu uživatelů. Určitě nezačínat vykopávkama jako PIC16F84.
Napsal: 02 dub 2025, 21:33
od HF_Tech
STM Blue Pill. Za stejnou cenu můžeš mít oktávku místo trabanta (arduina).
Napsal: 02 dub 2025, 23:09
od Zaky
Nebo můj oblíbený PSOC od Cypress, dnes už Infineon. Velice, ale velice doporučuji si vybrat něco, co umožňuje debug na skutečném HW. PSOC5 je sice mocný kombajn kombinující ARM M3 s hradlovým polem, ale práce s tím je opravdu jednoduchá a mají k tomu kupy tutoriálů a příkladů. Já na tom v podstatě začínal po nějakém lehkém hraní s 89C2051 a AVR.
https://cz.mouser.com/ProductDetail/Inf ... Y8CKIT-059
Napsal: 02 dub 2025, 23:12
od rampage
RudoSK píše:V doske je ATmega328P v DIP, ktorý je možné programovať priamo v doske UNO cez USB? Nie je potrebný žiadny programátor? Je potom možné vybrať MC z dosky UNO a aplikovať ho do finálnej dosky?
Ano, je tomu tak.
Je tam jedna výnimka: ak by si zobral zbrusu čistý ATmega328P a osadil ho do sokla, s najväčšou pravdepodobnosťou nebude mať "Arduino" bootloader (závisí, odkiaľ ho kúpiš), takže Uno doska nebude správne fungovať.
Nahrať tento bootloader, ak nemáš po ruke programovacie zariadenie, sa môže i druhým Arduinom ako ISP, a pár drátovými prepojkami.
Návod je tu.
Samozrejme, keď pokročíš, nemusíš funkcie Arduina volať vôbec a môžeš to programovať ako normálne AVRko v C. Ak tam ponecháš Arduino bootloader (resp. nemáš dôvod navrhovať svoj), ten čip bude v Uno doske fungovať i naďalej.
Ja sa tiež nešpecializujem na mikrokontrolery či embedded, ale sem tam sa Arduinu povenujem, najmä pretože sa dá ľahko
napojiť na starý hardware, čo je jeden z mojich koníčkov.
Doska s funkčnou Mega2560 stojí nejakých osem eur od šikmáka, máš k dispozícii 54 vstupnovýstupných pinov, ADC a kadejaké serepetičky. Lenže už to je predsa len zastaralé... a je to osembiťák.
Viď ten dotykový (a starý) farebný displej - keby ten kód nebol dobre odladený, videl by si ako sa grafika "prelieva".
RPi a Pico sú výpočtovo už na inej úrovni, zato o úplne inej platforme. Pôvodné Arduino je ešte TTL kompatibilné, u RP už treba výlučne CMOS logiku (+3.3V). AVR v Arduine je jednoduchý osembitový mikrokontroler s pár kB pamäte a rýchlosťou lepšej kalkulačky.
RPčko už je hotový systém v jednom čipe, s 32bitovým dvojjadrovým mikroprocesorom.
Každopádne, zmenou platformy (systému) sa budeš vždy nanovo učiť špeciality a lakocinky toho konkrétneho systému, ktorý si si zvolil. PIC, STM, ARM, AVR, RP, všetko vzájomne odlišné. Nie je to ako navrhovať web...
Napsal: 03 dub 2025, 12:30
od samec
Skúsil som ESP aj Raspberry pico, lebo som chel ísť s dobou a perspektívou vývoja cien, ale veľmi rýchlo som sa vrátil k Arduinu. Totiž jednoduchosť práce s Arduinom nevynahradí nižšia cena výkonnejších procesorov. A zatiaľ som v oblasti merania, regulácie a automatizácie nenarazil na technický problém, ktorý by vyžadoval výkonnejší procesor.
Napsal: 03 dub 2025, 12:44
od pocitujlasku
ved esp vies tiez programovat ako arduino.
rampage: vidis, a mne ucitel na strednej hovoril presny opak. Princip programovania je stale rovnaky, len sa to inak zapisuje. Ale podmienky, cykly, algoritmus je vsade rovnaky.
A ked spominas web, tak tam tiez mas milion moznosti a roznych frameworkov na vytvorenie.
Napsal: 03 dub 2025, 13:03
od rampage
pocitujlasku píše:Ale podmienky, cykly, algoritmus je vsade rovnaky.
Ano, a potom som svedkom kódu, ktorý je "moderne" kompilovaný s C++20 toolsetom, aby akože držal krok s dobou.
Vovnútri absencia exception handling či cykly z ktorých breaky nestačia - dáme goto na oboje, aby to bolo prehladné. Miesto lámbd pointery na funkcie, veď načo. Polymorfné inštancie pretypujeme krásne cez okrúhle zátvorky, warning level kompilátora dovolí, veď on už ten pointer niekam nasmeruje. A načo templaty, keď stačí jedno veľké #define. Ideálne na celý header.
Pekne ďakujem za také "C++". Veď princíp programovania ostal stále rovnaký... Iba že by nie.
Prípadne z Arduina presedlá na RPi a skúsi adresovať GPIO odniekaľ z Pythonu. Zistí, že miesto stoviek ns to zrazu zaberie desiatky, stovky mikrosekúnd. Čím to je? Veď princíp je ten istý.
Napsal: 03 dub 2025, 13:14
od samec
pocitujlasku píše:ved esp vies tiez programovat ako arduino.
Hej, ale skús naprogramovať niečo čsovo kritické na low level úrovni bez použitia chrobačných knižníc. Nevravím, že sa to nedá, ale zožerie ti to 10x viac času. Lebo už len programovanie ESP hoc pod Arduino IDE, nie je tak intuitívne a samozrejmé, ako programovanie Arduino Uno. Svedčia o tom stovky tutorialov na internetoch. A potom prelistovať podstatne hrubší datašit, ak sa k nemu vôbec dostaneš. A nakoniec nastaviť množstvo registrov, aby si mal istotu, že ti do časovo kritického tasku nebabre nejaké prerušenie trebárs od WiFi...
Nie, ďakujem, radšej ostanem pri Arduino Uno. To, čo na Arduino Uno jednoducho múdro nakodim, bude rýchlejšie, než čo jednoducho hlúpo nakopirujem do rýchlejšieho ESP.
Napsal: 03 dub 2025, 13:21
od ondraN
To trochu mícháš programování (algoritmus a jeho popis jennotlivými jazyky) s vlastnostmi vývojových prostředí a s návyky programátora.
Napsal: 03 dub 2025, 13:37
od rampage
Nič nemiešam. Tu neriešim syntax jazyka či nastavenia prostredia, ale postupy. Očividne reagoval na moje
Každopádne, zmenou platformy (systému) sa budeš vždy nanovo učiť špeciality a lakocinky toho konkrétneho systému, ktorý si si zvolil. PIC, STM, ARM, AVR, RP, všetko vzájomne odlišné
kde jasne uvádzam, že sa menia špecifiká
systému, pod ktorým bude vyvíjať. Nech si programuje v čom chce.
Neriešim tu, že je niekde syntax bitového súčinu slovné "and" a niekde "&", prípadne že niektoré jazyky medzi bitovým a logickým ani nerozlišujú. Ani že narátať od jedna po desať for cyklom býva v jazykoch obdobné.
S výnimkou Brainfuck.
Už konkrétne algoritmy bude musieť vedieť patrične prispôsobovať a optimalizovať; s ohladom na architektúru mikrokontrolera, organizáciou a prístupe k RAM, k I/O portom, vôbec časovaním, a podobne.
Keď nebude vedieť adresovať jeden port (čo sa práve systém od systému vie líšiť), alebo nebude správne časovanie, tak na pripojený displej nevykreslí ani mäkké f.
A na takom osembiťáku ako Uno asi nebudem vykonávať tridsaťdvabitové operácie, kde netreba, že?
Tiež nie je pravda, že sa princípy programovania nemenia; napríklad medzi procedurálnym, objektovým a generickým programovaním sú rozdiely
obrovské, už v pseudokóde - nezávisle od jazyka.
Nebudem niekde na desktope v Jave naháňať každý jeden bajt deklarovaním kdejakých statických polí, keď viem, že mi kód beží vo virtualke, kde beží garbage collector, a všetko je tam inštancia objektu - vrátane toho "pola", o ktoré sa snažím. Takže nemám ako sa starať o správu pamäte, sme zase u systému. A že rozšafnosti si môžem dovoliť iba tam, kde to mám dovolené - nie v embedded prostredí, kde jedna chyba má potenciál zostreliť celý beh systému.
Rovnako ako sa nedá nazvať horeuvedený ilustrovaný pokus o "C++" modernými princípmi.
Láskavo tu neslovíčkarte.
Napsal: 03 dub 2025, 15:31
od mhepp
Samec: doporučovaním Arduina a jeho vývojového prostředí pro časově kritické aplikace je tak trochu střelení se do nohy, protože pokud si otevřeš knihovny, které jsou dodávané s Arduino prostředím, tak zjistíš, co je to za hnusy:
https://blog.root.cz/novacisko/rizeni-d ... ifi-jinak/
Napsal: 03 dub 2025, 15:44
od rampage
Finta je v tom, že on tie Arduino knižnice používať nemusí vtedy keď nechce, k registrom AVR vieš pristupovať napriamo. Zároveň nemusíš vymýšlať koleso tam, kde už vymyslené bolo, ak časovo stačí.
Jedno osembitové čítanie či zápis do portu je jedna in/out inštrukcia o dvoch taktoch, teda asi 126ns pri 16MHz. To vieš v pohode písať v inline asm, ak treba -
už som tak preskakoval pármikrosekundové zdržanie kompilátora pri obsluhe IRQ (push všetkého na stack) tak, že som sa o registre staral sám. Na Arduine sa to dá zbrusu. Veľa šťastia s takýmto niečím napríklad na Raspberry Pi...
A to ak by som mal kvôli pár riadkom časovo náročného kódu mal všetko ostatné zahodiť, lúskať datasheety a písať si všetko sám - tak by som sa na to celé akurát tak vysrаl. Zvlášť ako začiatočník.