Začínáme s dsPICem (1) - úvod

dsPIC je poměrně výkonný 16ti bitový Digitální Signální Procesor (DSP) firmy Microchip. Cílem této mojí minisérie článečků je předat zájemcům informace posbírané z různých zdrojů Internetu tak, aby se jim s těmito procesory začínalo co nejjednodušeji.

Podíváte-li se na stránky firmy Microchip, pak zjistíte, že vyrábí hned tři rodiny výkonných 16ti bitových procesorů až do výkonu 40MIPS (Mega Instructions per Second).

V těchto článečcích se zaměřím na procesory z rodiny PIC30, ale většina informací je velmi podobných i pro ostatní rodiny.

Který procesor tedy vybrat? Odpověď na tuto otázku záleží samozřejmě především na tom, kam směřuje naše snažení a co má nakonec procesor dělat. Pro prvotní pokusy a většinu jednoduchých aplikací ale doporučuji některý z typů vyráběných v pouzdru pro klasickou montáž (v tabulkách typů označeno PDIP). Není problém pro ně sehnal levné patice a je s nimi při ruční výrobě celkově daleko jednodušší manipulace než se součástkami pro povrchovou montáž.

Ovšem ani v případě, že je z jakýchkoliv důvodů nezbytné použít některý z typů pro povrchovou montáž nenastává při promyšleném návrhu hardwaru problém, protože všechny obvody PIC se dají programovat sériově a při zachování určitých podmínek i přímo na desce v cílové aplikaci (říká se tomu In Circuit Programing (ICP)).

Já osobně mám rád součástky s malým počtem nožiček, takže jsem pro své pokusy zvolil nejvýkonnějšího člena rodiny PIC30 v 18ti vývodovém pouzdru dsPIC30F3012.

Blokové schéme procesoru Prohlédneme-li si blokové schéma obvodu (převzato z datasheetu) vypadá díky tomu, že máme tu čest s DSPéčkem na první pohled strašně složitě, ale pokud máme nějakou představu o tom, co a jak digitální signální procesor dělá, brzy se v něm zorientujeme. V obrázku jsem pro lepší orientaci jednotlivé části podbarvil.

Modře podbarvené části jsou uživateli nejblíže, protože představují vývody (nožičky integrovaného obvodu) a jim přiřazené funkce. Je třeba si hned na začátku uvědomit, že možnosti a funkce obvodu jsou skutečně bohaté a bylo by značně neefektivní, kdyby měl mít pro každou funkci samostatnou nožičku. Proto je na většině vývodů řada funkcí sdružena a teprve nastavením v programu se určí, co který vývod má konkrétně dělat. Například hned první vývod na pravé straně může zastávat některou z těchto funkcí:

Žlutě podbarvený blok představuje hardwarové moduly jednotlivých vstupně/výstupních jednotek. Vidíme zde například modul A/D převodníku, sériové rozhraní UART atd.

Zeleně jsem podbarvil podpůrné obvody, se kterými se uživatel může programově dostat do přímého kontaktu. Patří sem například watchdog časovač, řadič přerušení atd.

Červeně jsou podbarvené dostupné typy pamětí. Patří sem paměť programu Flash, paměť dat EEPROM, datová paměť typu RAM ale i 256 registrů v šestnácti sadách.

Paměť programu může být u všech výše uvedených tří rodin procesorů PIC programována dvěma odlišnými způsoby.

Prvním z nich je osvědčená metoda ICSP In Circuit Serial Programming, která fungovala i u starších rodin procesorů PIC. Programování se provádí za pomoci pěti vodičů (Vcc, Vss, data, hodiny a Vpp) a pokud je zapojení aplikace navrženo vhodně, dá se provádět až přímo na desce osazené procesorem. Poslouží k tomu téměř libovolný sériový programátor jednočipových mikroprocesorů, ať už profesionální nebo postavený amatérsky podle některého z návodů na Internetu.

Druhou metodou je RTSP Real-Time Self-Programming. Tato metoda umožňuje zapisovat do paměti programu přímo samotným programem, který v procesoru běží. Program tedy například může klidně přepsat sám sebe. V praxi se toho využívá spíše tak, že se metodou ICSP do procesoru nahraje malý zavaděč, který je schopen zbytek programového vybavení sám zapsat metodou RTSP bez nutnosti mít programátor.

Fialově je podbarvené samotné jádro procesoru. Protože se jedná o DSP, musí toto jádro vedle běžné ALU obsahovat i výkonnou jednotku násobení a dělení a adresní generátory (AGU).

Zbylé moduly bez podbarvení jsou podpůrné bloky, se kterými uživatel nepřichází programátorskz téměř do styku.

Vzhledem k tomu, že jednotlivé vývody součástky mohou zastávat zpravidla jednu z několika funkcí, je třeba při návrhu schématu zapojení začít od nejméně standardních periférií, které mají vývody pevně dané (v našem případě například rozhraní I2C) přez periférie s možností volby (například u sériového portu UART je možno volit standardní nebo alternativní vývody). Obecnější periférie (například standardní digitální vstup/výstup nebo vstup A/D převodníku) pak umístíme na nožičky které zůstaly volné.