Vlákno názorů k článku STM32: mikrokontrolér vstřícný k amatérům od me - Shodou okolnosti si zrovna hraji s procesory STM8....

  • Článek je starý, nové názory již nelze přidávat.
  • 20. 9. 2017 22:30

    me (neregistrovaný)

    Shodou okolnosti si zrovna hraji s procesory STM8. A mam nekolik problemu.

    1) ST zapomelo definovat rozlozeni pinu na tech 4-pin ISP konektorech, coz v praxi znamena, ze kazda deska to ma trosku jinak a clovek porad musi zkoumat, jak zapojit ISP kablik. Ocekavam, ze u STM32 to bude stejny chaos. Porovnam-li toto s ISP pro ATMEL, tak tam je to snadne, prakticky se pouizvaji jen dva konektory, starsi 10-pinovy a novejsi 6-pinovy, ktery se dnes pouziva na vsech novych deskach;

    2) Licencni politika ST. Prakticky vse je chraneno nejakou neprijemnou licenci; bez registrace si s webu ST moc nestahnete, i pro stazeni blbeho ISP programatoru musite ST sdelit platnou emalovou adresu; Potreboval jsem novy firmware pro STLINK-V2; dva dny mi trvalo, nez jsem se k tomu dostal; nevim, zda byla chyba na me strane, nebo tam meli nejakou chybu a posilali mi spatny link. Proste peklo, ktere Vam zacatek neusnadni.

    3) SDCC; z nejakeho duvodu nejsou v SDCC knihovny pro STM8 procesory; nenasel jsem ani definice registru (adresar /usr/share/sdcc/in­clude/stm8 neexistuje). Toto muze byt dusledek licencni politiky ST. Takze si vse musim najit v datasheetu a napsat vlastni definice HW. Take je mozne, ze ty definice jsou tak rostristene, ze nema smysl to psat obecne (nikdo nemel potrebu s tim ztracet cas). Anebo jen je ta podpora v SDCC prilis cerstva, ze se tam tyto soubory casem objevi.

    4) Chybi C++ prekladac (gcc STM8 nepodporuje), coz je pry duvod, proc Arduino nebylo portovano pro STM8. Existuje nejaky pokus, ktery stavi na SDCC, a autor vysvetluje proc nemuzu udelat plnohodnotny port; chybi C++; takze vytvari nedokonalou kopii v SDCC; problemem jsou moduly.

    5) Nevyrabi se STM8 procesor v DIP pouzdru; na eBay lze levne sehnat ruzne male modulu vcetne regulatoru napeti, tlacitka reset a nekolika LED, ale to je rozmerne v porovnani s DIP pouzdrem.

    6) Obecne povedomi o STM8 je nizke; temer kazdy zna a pouziva Atmel AVR, pripadne PIC; STM8 je exotika. Chybejici pozdro DIP muze byt zasadnim duvodem, proc jsou tyto MCU amatery ignorovany.

    Nejaka pozitiva? Ano, ten STLINK programuje procesory rychle, to se mi libi stejne jako to, ze k programovani staci pouhe 4 piny. A ty procesory jsou velmi levne a maji dost RAM a z Ciny lze levne sehnat ruzne moduly ktere tyto procesory pouzivaji. Zatim jsem nasel jen same regulatory teploty a podobne zamerene moduly a nenasel zadnou hracku, ktera by byla rizena STM8, treba hodiny s LED displejem, analogove hodiny s LED, nebo jednoducheho robota (treba sledovani cary); vsechny hracky na eBay pouzivaji procesory ATMEL nebo casteji, cinske verze vylepsene 8051 (STC15Wxxx, STC15Fxxx, STC89Cxx, atd).

    A proc pouzivat STM8 a ne STM32? Treba proto, ze STM8 lze provozovat i na 5V... ;-) Teoreticky by to mohla byt zajimava alternatova k AVR od Atmelu, ale bylo by treba vyladit nekolik detailu, treba to C++...

  • 21. 9. 2017 7:48

    Petr M (neregistrovaný)

    Ale to H8S se dá taky používat na 5V, programovat pomocí čtyř pinů (zem, reset, rxd, txd),... A má to podporu v GCC. Akorát to nikdo nezná...

    Osmibitů jsou tři zadnice a kousek. Jenomže je tam několik průšvihů, pomalostí výpočtů počínaje (násobení 16b * 16b se provádí na čtyři části a ty je ještě třeba složit), malý rozsahy adresování a z toho plynoucí odrbávky při potřebě větší paměti, pomalost, špatná podpora (protože nikdo neodladí pořádně tool, který používají 2% lidí),...

    Přitom ARMy nasadily výkon x-krát vyšší, odladěný tooly, jednotnou HW/SW platformu pro několik výrobců*) a cenu často nižší, než stejně vybavený osmibit. No není o čem (v profi projektu)...

    *) Výjimkou je třeba SAM-ICE, verze JLINKu zamčený jenom pro Atmely

  • 21. 9. 2017 16:57

    BlackRider

    Ja osobne nevidim jedinej duvod proc na 8-bit cpat C++. Osobne se mi dost ulevilo, kdyz sem se zbavil Arduino balastu na AVR a zacal psat ciste v C.
    DIP a 5V to je ciste historicka zalezitost od ktery se upousti. Dnes holt vede 3.3V a SMD komponenty. Clovek se s tim musi smirit podobne jako se musel smirit s prechodem z mini USB na micro USB (a dnes USB-C) u telefonu.

  • 21. 9. 2017 21:21

    PetrM (neregistrovaný)

    Technická poznámka. Na osmibitu NEJDE používat C++ ve smyslu toho, co jako C++ definuje ANSI standard. Tam je tak šílený overhead, že tolik ramky nejenom nebývá na čipu, ale ani by jí tolik nezvládl adresovat.

  • 21. 9. 2017 21:56

    mrazík (neregistrovaný)

    Arduino je co ? C++ na osmibitu. C++ může být trochu náročnější na paměť, ale pokud v něm píšete trochu umravněně, je to v zásadě stejné jako čisté C. Výhoda 32-bit architektur je jen v tom, že používají zpravidla jednotný adresní prostor, což velmi usnadňuje vývoj překladačů z vyšších jazyků. Takže pro ARM můžete použít třeba clang a tím pádem i vše co je postaveno nad LLVM. Jsou různí podivíni a ti si tak můžou poměrně snadno stvořit vlastní kompilovaný jazyk a ten pak používat.

  • 22. 9. 2017 1:08

    me (neregistrovaný)

    DIP neni historicka zalezitost. A SMD pouzdro neni jen o pripajeni na desku; pro vyvoj je DIP super. DIP obvod lze dat do levne patice a velmi snadno vyjmout, vymenit. Pripajet SMD umim, na vymenu SMD nenam vybaveni, takze takovy pokus konci poskozenim PCB. Asi jsou i patice pro SMD pouzdra...

    Chapu ze vetsina tech obvodu je v SMD provedeni, pro masovou vyrobu je to jedina rozumna moznost. Ale STM8 nema jediny obvod v provedeni DIP pouzdra, obvod ktery by byl vhodny pro vyvoj a pro DIY. Z meho pohledu je to dulezity faktor, proc se zatim neprosadil v amaterskych projektech. Srovnejte s PIC & AVR & C51.

    Co se tyka C++, mozna to neni jen o C++; duvodem muze byt, ze GCC generuje lepsi kod nez SDCC. Cinan to neresi, vsechny zdrojaky co jsem sehnal pro 8051 byly psane pro KeilC a ten rozdil proti SDCC je videt, KeilC kompiluje lepe; pokud je kod na hranici velikosti FLASH, tak se musi udelat hodne rucni optimalizace, aby se tam vesel i po prelozeni SDCC. Neocekavam ze pro STM8 bude SDCC generovat lepsi kod...

  • 22. 9. 2017 10:18

    BlackRider

    DIP je historicka zalezitost. Driv proste byly obvody tak staveny. Udrzovat DIP jen kvuli protypovani se nevyplati, zvlast kdyz dev kit k prototypovani urcenej stoji zrovna pro STM8 $0.63 i s postovnym. I Atmel a Microchip (dneska uz vicemene jedna firma) delaj DIP chipy spis jen ze setrvacnosti. Dnes super oblibene chipy jako nrf24 nebo ESP8266 se uz ani jinak nez jako hotovy moduly v DIY nedaj pouzit.

    SDCC sem zatim pouzival jen u nrf24LU1 (8051) a to ma flash velkou dost, takze sem to neresil. Ale i u AVR a GCC sem musel delat rucny optimalizace kodu. Ne ze bych mel problem se dostat do velikosti flash (2kB u ATTINY2313A), ale kvuli minimalizaci poctu instrukci kvuli power managementu.

  • 22. 9. 2017 21:42

    PetrM (neregistrovaný)

    DIP je těžká historie. Nevyřešíš u něho chlazení (PowerPad), je to velký, max. 48 nožiček (nebo PLCC, kde je taky možnost patice do 84 nožiček), takže z toho ani nevytáhneš dost GPIO a musíš cpát brouky kolem.

    Výměna odpálenýho brouka v protoypu? To obvykle znamená, že někdo pohnojil zdroje, nebo rve do GPIO co nemá a po výměně to zařve zase. Tohle neřeší patice, tohle řeší při návrhu myslet a než dám desku do výroby, tak si projít jednu cestu po druhé a zkontrolovat, že ti neuteče dým. Když si tohle ověříš, jsou obvody nesmrtelný bez ohledu na pouzdro.

  • 21. 9. 2017 17:23

    dustin (neregistrovaný)

    Jaká je výhoda 5V provozu? Většina periferií funguje na 3.3V, kromě těch speciálně dělaných pro základní arduina.

  • 21. 9. 2017 20:55

    PetrM (neregistrovaný)

    To je hodně dobrá otázka. Asi aby se mu to líp napájelo z 3.7V LiIonky :)

    Ve skutečnosti opravdu není důvod řešit velikost napájecího napětí.

    Logika kolem - 74HC a 74AC jedou od 2V do 7V. S 3V3 nemají sebemenší problém.

    Pokud potřebuju výstup na 5V, pokužiju 74HCT - vstupní úrovně sedí, výstup je v 5V TTL.

    Vyšší napětí a proudy (12V/1A) musím tak jak tak řešit tranzistorama a 3V3 na saturaci tranzisotru stačí s přehledem.

    5V vstup do 3V3 procáku taky není problém, stačí odpor na omezení proudu do vstupu a klampovací diody se postarají o zbytek.

    Získat 3V3 je stejně easy jako získat +5V, u buck konvertoru stačí vyměnit dva odpory za jinou hodnotu, u lineární stabilizace třeba hloupá LE33 místo 7805.

    Jediný rozdíl je, že pokud klesne napětí tak, že už neutáhne zdroj 5V, 3V3 jedou vesele dál.

  • 21. 9. 2017 22:02

    dustin (neregistrovaný)

    S mikročipy si jenom hraju doma, ale 5V už skoro nepoužívám. Jenom když potřebuju rychlejší arduino, pak vezmu 5V klon mini pro (atmega328) na 16MHz a pustím jej na 3.3V. Běží sice mimo specifikaci, ale zatím vždy OK.

  • 22. 9. 2017 0:48

    me (neregistrovaný)

    Ale ty STM8 procesory umi i 3.3V, tech 5V je bonus, ktery STM32 nema. Treba USB ma 5V, lze to tedy pripojit primo, neni treba regulator na 3.3V.

  • 22. 9. 2017 9:06

    Petr M (neregistrovaný)

    Kristova prostřední noho... LE33 seženeš za 16Kč v drahým obchodě. Stojí ti regulátor za míň jak dvacku za to, aby se drbal s optimalizacema, řešil shift registrama za půl sta míň GPIO,...?

    Navíc ten stabilík je i jako ochrana proti přepětí, takže si hned neodstřelíš MCU.