16F877A mi již nestačí, s čím pokračovat? Výkonnější model?

jaromir: Já budu někdy v budoucnu nahrazovat nějakým tím dsPICem hradlový pole Lattice LSI1016. Když je ten dinosaurus v PLCC44 nažhavenej tak do něj de něco kolem 400mA při 5V. Taky správné topení.

Není problém u 3,3V PIC mírný problém s A/D? Kvůli nízké impedanci vstupu A/D tam mám sledovač s OZ a na výstupu mám pouze napětí od cca 0,7 do 4,3V - za podmínek že OZ napájím nesymetricky 5V. zřejmě na to jdu asi úplně blbě.

Žádného problému si nejsem vědom. Přizpůsobit vstupní signál musíš u každého AD převodníku, s tím zase nic nenaděláme. Zkus sem hodit schéma zdroje toho signálu, co chceš měřit + popis signálu a uvidíme …

V 16-bitoch sa lahsie algoritmuje (viac instrukcii, adresovacich modov), v 8-bitoch sa lahsie pise (menej instrukcii, je to prehladnejsie).

Presne tak, dsPIC33 je podstatne lepsie nez dsPIC30 - viac pamate, lepsie periferie, PPS (co je sama o sebe feature pre ktoru by sa oplatilo prejst na iny model), nizsia spotreba.
Dnes by som dsPIC30 nepouzil do nicoho, jedine ak by niekde ine ako 5V napajanie velmi komplikovalo design, inak nie. To, ze poukazujem na dsPIC30 je ten, ze s nim mam skusenosti z minulosti, pre konkretnu aplikaciu - o ktorej bola rec.
Inak som sa po dsPIC30 nepoohliadol uz nejaky ten rok a urobil niekolko aplikacii na dsPIC33.

S nizkou impedanciou AD vstupu som sa prilis nestretol, ale stretol som sa s tym, ze Vref cucalo trochu vacsi prud, nez som ocakaval, lebo som sa nepozrel do datasheetu.
Mimochodom buffery na vstupoch AD prevodniku su bezna vec, hoci nie vzdy su potrebne. Obcas postaci aj kondenzator (resp. integracny clen), obcas netreba nic. Zavisi to od aplikacie, od toho, ako presne treba merat a aku impedanciu ma to, co meriam.

tema se rozrostlo ale tak do opravdy jaký 16bit ? s 3V logikou problém mít nebudu ! ale ta zmínka o spotřebě mně zaujala ! mněřil to někdo objektivně kolik to papá při normalním provozu pár AD k tomu obsluha LCD a trocha přepočtů pro zobrazení ? jeto stejné jako u 8bitu nebo je to markantně větší ?

Spotreba zavisi od konkretneho typu MCU. To je asi nieco ako spytat sa, aku spotrebu ma auto. No od 4l/100km (nejake nove “green” auto) az po 50l/100km (30 rocna volga s deravou nadrzou).

Ta spotreba 200mA/5V (teda 1W/30MIPS) je extrem pre dsPIC30F2020, ked mu bezi naplno rychly PWM, ADC a vsetko. Ine dsPIC30F zeru desiatky mA/5V @ 30MIPS, detto dsPIC33FJ, ale s vykonom 40MIPS a na 3,3V. Na nizku spotrebu je PIC24F, napriklad PIC24FJ64GA102, ktory mam teraz v aplikacii na stole - ma spotrebu necelych 10mA/2,5V @ 16MIPS (teda 25mW/16MIPS) a prepinam ho kvoli spotrebe na vykon 1MIPS, kde nezerie ani 500uA.

dsPIC33F - DSP procesor, vysoky vykon(40MIPS), pomerne vysoka spotreba
PIC24F - general purpose MCU, nizsi vykon (16MIPS), mala spotreba
PIC24H - nie DSP, ale vysoky vykon(40MIPS), spotreba ako dsPIC33

dsPIC30F - stara 16 bitova vetva, bez komentara

EDIT - pre tu aplikaciu typu nejaky ADC a nejaky LCD Vam bude stacit PIC24F naclockovany 1MIPS so spotrebou 0,5-0,7mA podla napajacieho napatia. Mimochodom, 1MIPS dava PIC18 na 4MHz, pricom samozrejme PIC24 bude vo vyhode svojim vyssim vypocetnym vykonom, takze PIC24 na 2MHz (1MIPS) so spotrebou pod 1mA bude na tom vykonovo podobne ako PIC16 na povedzme 8MHz (2MIPS), cize priblizne rovnako.
U PIC24 mate vyhodu vacsej pamate, lepsich periferii, PPS…

Spotřeba: stačí se podívat do datasheetu příslušného MPC, jednou jsem si ověřoval spotřebu ve sleep režimu při různých zapnutých funkcích a perifériích a z prstu si ty čísla necucaj, takže jim můžeš věřit:)

to jaromir
Výkon: provnávat výkon procesorů s odlišnou architekturou bych si takhle snadno netroufnul, někdy bude rozdíl třeba 2x jindy 20x, možná si se snažil uvést jakýsi průměrný rozdíl ve výkonech, ale to takhle snadno také nejde…nezle obecně říct, že 16bit MPC je 2x výkonější než 8bit…třeba v násobení čísel >8bit nebo v dělení bude ten rozdíl několikanásobně vyšší a podobných případů je daleko více…

Jinak pokud by měl někdo chuť udělat nějaký benchmark MPC, připojil bych se, určitě by to bylo zajímavé a přínosné…napsal by se nějaký kód, mohlo by jich být i více (třeba přesun určitého množství dat, násobení, dělení atd…) a každý z nás by ho otestoval na MPC, se kterým momentálně pracuje… (a nemusely by to být jenom MPC od Microchipu)

Určitě by to bylo lepší, než se jen dohadovat, který MPC je lepší a který horší, jak podobné diskuze většinou končí:)

Sháněl jsem nějakej dobrej dsPIC v TQFP44 s komparátorem a DAC a našel jsem dsPIC33FJ16GS504:

4MSPS ADC
650kHz DAC
250kHz PWM
20ns Komparátor

…hodně slušný parametry:)

přesně jak psal Jaromir je to otázka zatížení . ale je to odpověd podle mých představ pokud to nepošlape na vydr tak se to bude chovat stadartně . Já pošilhávám po 24fFJ64GB002 akorát mi tam chybí vnitřní eeprom co děláte stímhle ? zápis přímo do flash ?

No, ten dvojnasobny vykon som si samozrejme necucul z prstu, ale ide o konkretny vysledok z konkretnej aplikacie, ktoru som portoval z PIC18 na PIC24 a na ktoru som si v tej chvili spomenul. Chapem, ze sa neda zovseobecnovat, pretoze ta aplikacia bola nejaka a konkretna, v inej by to dopadlo inak. Takisto, ako sa neda napisat benchmark, ktory by bol uplne vseobecny. To je problem uplne vsetkych benchmarkov.

Takze to zdvojnasobenie vykonu som napisal preto, aby bolo jasne, ze k nejakemu zvyseniu vykonu pride a preto, aby som naznacil, ze to zvysenie nebude o 5%, ale ani nebude 20-nasobne, pri danej rychlosti v MIPS.

Absenciu vnutornej EEPROM u niektorych rodin MCU riesim bud zapisom do FLASH alebo externou EEPROM (FLASH), ak ju vobec treba.
Typicka EEPROM-ka v MCU ma niekolko desiatok az tisic bajtov, to je asi tak objem dat, do ktorych sa daju narvat nejake meracie konstanty, identifikacne retazce a podobne kravinky. Ak nie je EEPROM, postaci aj zapis do FLASH, pretoze nie je velmi casty, hoci maju normalne FLASH-ky udavany pocet E/W cyklov radovo 10-100 tisic.
Ak potrebujem logovanie dat, alebo nieco podobne, tak tam by som FLASH-ku uz nepouzival, ale zas normalne EEPROM-ky v MCU maju na toto pomerne malu kapacitu, tak tam by som tak ako tak pridal externu pamat.

Cize doteraz som na problem chybajucej vnutornej EEPROM-ky prilis nenarazil. A vobec, vnutornu EEPROM pouzivam dost malo, aj u typov, ktore ju maju.

Dobře chápeš, že se nedá srovnávat výkon na nějaké konkrétní (která je ke všemu jistě komplexní: výpočty, čekání, sleep, komunikace s rychlostí omezenými periferiemi atd) a pro toho, kdo to čte, neznámé aplikaci…to opravdu může dopadnout tak, že poměr výkonů může být 2x nebo 20x a vypovídací hodnotu to nemá žádnou.

Samozřejmě také nemá cenu dělat benchmark na rychlost togglování pinů nebo na frame rate displeje…to si každý celkem rychle vypočítá sám a usoudí jaký poměr výkonů z toho vyplývá.

Ani nemá cenu se pokoušet o benchmark, který bude všeobecný a posoudí výkon daného procesoru komplexně…a i kdybyby se to povedlo, vnitřních výsledků benchmarku budeš mít několik, které budeš muset opět nějak váhovat na konkrétní nasazení MPC.

Benchmark musí být jednoduchý (krátký) na zápis a složitý na výkonání mikrokontrolerem, hlavně musí být na jednu stranu konkrétní, na druhou jeho výsledky musejí jít nějakým způsobem generalizovat. A samozřejmě napsaný v C, pro snadný přenos mezi MPC.

Kde má benchmark zásadní význam jsou výpočty, dobu jejich trvání uživatel těžko odhadne bez složitějších a dlouho trvajících rozborů. A tady je použití výsledků benchmarku přínosnou a efektvní možností, jak výkon MPC přesněji odhadnout.

Nebo ty si troufneš odhadnout jaký poměr výkonů mezi 16bit a 8bit MPC bude třeba u výpočtu 100 hodnot exponenciely, korelace dvou signálů nebo několikabodové FFT…ale i třeba u méně komplexníxh výpočtů jako je odmocňování nebo dělení? Tady opravdu může být poměr výkonů 2násobný, 20násobný, nebo ještě větší…

Vsetky tie srandicky okolo benchmarkov su take bla bla pre nezasvatenu mladez a znudenych akademikov, ktori zahanaju nudu porovnavanim cisel a diskutovanim o tom, kto ma vacsieho - vysledok v benchmarku. Samozrejme, tak bezvysledne ako diskutovanie o tom, ci je lepsie AVR alebo PIC na zaklade cien a dostupnosti obvodov v GM.

Dobre, uznavam, ze to cislo 2x bolo zvolene velmi nestastne a mal som len vagne napisat, ze 16-bity maju plusminus rovnaku spotrebu ako 8-bity.

Na benchmarky nie som odbornik a snad ani nikdy nebudem.

Dobře, tak jinak :slight_smile: …využíval jsi už někdy MPC na nějaké složitejší výpočty?..jako je třeba zdánlivě jednoduché dělení nebo odmocňování (složitější zde už nebudu radši zmiňovat :slight_smile: )?..a byl jsi nucen mít výsledek v nějakém konečném čase?
To jsou problémy, které se opravdu řeší v reálných aplikacích a nejsou záležitostí pouze nezasvěcené mládeže nebo znuděných akademiků :slight_smile:
Jak jsi potom získal představu o tom, jestli tvůj konkrétně vybraný MPC je schopen splnit uvedené požadavky?
Ono ty benchmarky, pokud jsou provedeny kvalitně, mají svou vypovídací hodnotu…ale jestli víš o lepším přístupu, určitě bude dobré, pokud ho zde zveřejníš :slight_smile:
Samozřejmě pokud je nejsložitější operace tvých projektů násobení 8-bit číslem nebo zobrazení znaku na displeji, potom chápu, že zatím tak úplně nevidíš význam benchmarků :slight_smile:

k těm benchmarkům - je to trochu složitější u různých procesorů - mají ruzné dostupné prostředky !? pak je obtížné srovnat jejich výkonost ! jeto jako srovnat procesor s matematickým koprocosorem a bez něj ! V zásadě u výpočtu nejde a ni o srovnání nýbrž o efektivitu práce , mcu s hardwarovou matem.(div & ad - 16bit) bude rychlejší ne 1x ale více než 20x proti mcu bez . Pak ta porovnání stráci vlastně smysl ! Výkoná dostupnost prostředku vlastně říká že mcu je prostě výkonojší a za ten výkon je třeba zaplatit - dodáním energie !

k té EEPROM nešlo mi o logování zpravidla mi stačí 16 konstant - ale ty potřebuji bezpečně uložit a při startu zas bezpečně načíst , a nelze vyloučit i zněny během chodu programu , na tohle je ale zbytečné mít externí pamět ,a do interní ram není jostota že ta data tam vždy budou , a ta interní flash jak je uvedeno má jistý omezený počet zápisu i když kvota 10000 by asi vystačila na životnost zařízení ! a přidávat externí baterii a posílat mcu při vypnutí do sleep je také trochu složité řešení .

Tak toto ma pobavilo, ako aj cely ten post je velmi vtipny :smiley:

No nic, je cas pustit sa do serizonej prace (zobrazovanie znakov na displeji, nasobenie 8-bitovych cisel) a nie vykecavat na fore.

Srovnávat výkonost procesorů např. s hardwarovou násobičkou 16b*16b a bez ní na komplexnějších úlohách (např. výpočet diskrétních hodnot exponenciely) není nesmyslné ale naopak nutné. Přitom samozřejmě lze očekávat, že procesor s násobičkou zpracuje výpočet rychleji, ale mě zajímá kolikrát rychleji, za násobičku přeci platím a tak mě zajímá, co mi tato přidaná hodnota přinese.

Příklad: potřebuju každou 1ms spočítat 100 hodnot exponenciely, samozřejmě mohu vybrat výkonný MPC a dát za něj třeba 500,- ale to určitě není nejlepší cesta, vždyť je možné, že stejný výpočet by do stejného času zvládnul i MPC za 50,-, ale jak rychle získám odhad, že to opravdu zvládne?

…ale mužu chtít třeba v určitém čase jen odmocňovat 16bit číslo, opět je jasné, že 16bit MPC to zvládne rychleji, ale zvládne to můj 8-bit MPC v čase 1ms? a kolik bych ušetřil času, kdybych použil 16bit MPC?

Proto mi nepřipadá bezvýznamné vědět, že MPC xxx1 za 500,- zvládne odmocnit 16bit číslo za 1us a MPC xxx2 za 50,- to zvládne za 50us.

Samozřejmě, až bude na světě všechno zadarmo, potom takovéto diskuze budou zbytečné:)

To neměla být narážka na nic a na nikoho…i když jsem tak trochu čekal, že se toho chytíš :slight_smile: Jinak, nemám nic proti tomu, kdo si hraje s diplejem…je spousta lidí, co nezvládne ani to :slight_smile:

…doufám, že se zase nechytíš něčeho, co budeš považovat za narážku :slight_smile:

:arrow_right: administrator: příspěvek byl upraven
Citace byla pozměněna.

Ahoj,
myslím, že tyhlety debaty ohledně srovnání výkonnosti jednotlivých tříd uC jsou čas od času docela zajímavé a užitečné. Ne každý má zkušenosti z používání více typů a ne každý je natolik zkušený, aby dokázal rozdíly mezi nimi postřehnout a zhodnotit.

Já bych však přidal ještě jeden názor, který tu, pokud vím, nezazněl.

Určitě existuje spousta obyčejných amatérů (jako já :slight_smile:, kteří nepotřebují programovat složité aplikace, kvůli kterým by potřebovali znát výpočetní výkon, Benchmark testy a podobné věci. Já třeba často používám mikrořadiče v úplně jednoduchých aplikacích typu přepínání kanálů v kytarovém zesilovači jedním nožním spínačem, přepínání efektů v efektovém zařízení pro kytaru, řízení krokových motorků, čítání impulsů, dálkové ovladače, různé hlídání teploty nebo vlhkosti prostředí s jednoduchým alarmem, tvořeným jedinou LED diodou, termostaty, různé hračky pro děcka (blikátka na vánoční stromeček) atd.

Na tyto aplilkace nepotřebuji nic jiného než mikrořadič s max. 8 I/O dráty (často i méně) a bez jakýchkoliv nároků na výpočetní výkon.

Důvod pro použití mikrořadiče je jasný - jednoduchost, spolehlivost, jednoduchá případná změna vlastností nebo funkce a hlavně C E N A ! ! !

Cena je asi to, co mne v tu chvíli zajímá ze všeho nejvíce.
Takže si srovnejme ceny u tří našich “dostupných” prodejců (GME, TME a Farnell)

Nejlevnější PIC18xx = PIC18F87: 130,- Kč u GME nebo 4,20E u Farnella.
Nejlevnější PIC16Fxx = PIC16F887: 62,- Kč GME, 65,- TME, 2,7E Farnell.
Nejlevnější PIC12Fxx = 12F629: 27,- Kč GME, 28,- Kč TME, 1,02E Farnell.
Nejlevnější PIC10Fxx = 10F202: 20,- Kč GME, 14,- TME,- 0,74E Farnell.

Možná mi tam někde lítá DPH, ale pro toto srovnání to není podstatné.

Je mi jasné, že výkonově nejsou srovnatelné, ale z pohledu jednoduchých aplikací, pro které se mikrořadiče velmi často používají, je to jedno - zde rozhoduje cena.

Takže já z těchto důvodů rád sáhnu po jednoduchých a levných obvodech tam, kde výkonné a drahé prostě nepotřebuji. A myslím, že stejně budou uvažovat i profesionální výrobci hraček, dálkových ovladačů, blikátek na kola a podobných blbůstek, kde jim stačí to nejjednodušší a nejlevnější řešení.

Vlasťa Vlček

Cena sice taky hraje svou nedílnou roli při výběru ,ale raději nepřeskakuji mezi typy .Důvod je jeden raději budu mít v šuplíku 10 procosoru jednoho typu a použiji byt jen malou část periferii , ale mohu hned vyrobit další či opravit co odejde - bez objednávání !? Pak se člověk snaží držet jistou univerzálnost - nedělám to takto sám jak vidno z internetu .To srovnání je ovšem zajímavé a hlavně pro zamyšlení s novými typy nové funkce i periferie .Je proto dobré znát praktické postřehy od někoho kdo to již použil - z vlastních pokusů mi již pár procesoru zbylo - a nikde je již asi nepoužiji ! Nerad bych se s takovým zařízením potkal za pár let a divil se co že jsem to tam dal !