Začínáme s dsPICem (2) - hardware
V tomto článku najdete několik postřehů k návrhu jednoduché desky pro první pokusy s dsPICem.
Hodiny
Mikroprocesor je složitý sekvenční obvod, takže ke své činnosti potřebuje zdroj taktovacího signálu. Procesory dsPIC mají velmi propracovaný blok generování hodin s mnoha různými režimy činnosti. Každopádně instrukční cyklus procesoru trvá vždy čtyři takty hodinového signálu. Proto se také počet instrukcí za sekundu obvykle značí jako Fosc/4. Zdrojem kmitočtu pro taktování může být:
- Primární oscilátor řízený krystalem nebo vnějším zdrojem hodinového signálu
- Sekundární oscilátor 32kHz (zpravidla řízený krystalem)
- Vnitřní rychlý RC oscilátor FRC Fast RC oscilator
- Vnitřní pomalý RC oscilátor pro režim nízké spotřeby LPRC Low Power RC oscilator
Je-li zdrojem kmitočtu primární oscilátor nebo vnitřní rychlý oscilátor, může být jeho kmitočet vynásoben PLL násobičkou 4x, 8x nebo 16x. Hodinový signál procesoru řady dsPIC30 může mít kmitočet maximálně 120 MHz (z čehož vychází maximální výkon procesoru 30 MIPS). Při použití PLL 16x na dosažení tohoto výkonu tedy stačí krystal o kmitočtu 7,5 MHz. V praxi se ovšem častěji používá krystal s kmitočtem 7,3728 MHz, se kterým procesor dosahuje maximálně 29,4912 MIPS. Výhodou tohoto zvláštního kmitočtu je jeho dělitelnost mocninami dvou (7372800 / 215 = 225) a z toho vyplývající snadné odvozování různých celočíselných kmitočtů vhodných například pro odvození přenosové rychlosti sériového rozhraní UART atd.
Proto doporučuji použít právě krystal 7,3728 MHz, který je běžně dostupný v obchodech se součástkami. Nezbytné dva kondenzátory mají mít podle datasheetu k tomuto krystalu hodnotu 22 pF.
Obvody resetování
Podobně jako obvody hodin i obvody resetování nabízí v procesoru dsPIC širokou škálu možností. Všechny možné zdroje resetu jsou v nich skombinovány do jediného signálu SYSRST, který pak vyvolá samotný reset součástky. Zdroje pro vyvolání SYSRST jsou následující:
- POR Power On Reset - detekuje náběh napájecího napětí a tak vyvolá reset při zapnutí napájení
- EXTR EXTernal Reset - reset vyvolaný logickou nulou na pinu MCLR
- SWR SoftWare Reset - reset vyvolaný instrukcí RESET
- WDTR WatchDog Timer Reset - reset vyvolaný přetečením watchdog časovače - používá se pro ošetření chyb v programech
- BOR Brown-Out Reset - reset vyvolaný kolísáním napájecího napětí pod stanovenou mez
- TRAPR TRAP conflict Reset - reset vyvolaný současnou aktivací (konfliktem) několika zdrojů resetu najednou
- IOPR Illegal OPcode Reset - reset vyvolaný snahou o vykonání neplatné instrukce - používá se k ochraně datových částí paměti
- UWR Uninicialised W-register Reset - reset vyvolaný v určitých situacích použitím neinicializovaného W registru
To, který ze zdrojů reset fakticky způsobil, můžeme v programu zjistit podle obsahu registru RCON po vzniklém resetu. (První přečtení tento registr zároveň vynuluje, takže opakovaným čtením se už zdroj resetu nedozvíme.)
Z výše uvedeného je vidět, že pro běh procesoru není nutné se resetem příliš zabývat. Stačí vhodně nastavit konfigurační slovo tak, aby byla aktivní možnost POR a obvod se vždy po zapnutí zresetuje bez nutnosti dalších vnějších součástek. Druhým snadným řešením je připojit pin MCLR přímo na napájecí napětí a aktivace EXTR v konfiguračním slově. Ani jedna z těchto možností ovšem není příliš vhodná na desce určené pro hrátky s procesorem a ladění aplikací.
Přímým připojením MCLR na napájecí napětí si totiž zablokujeme možnost ICSP In Circuit Serial Programming, která tohoto pinu využívá pro vstup programovacího napětí Vpp = 13 V. Pokud je nutné použití MCLR a zároveň ICSP, musí se MCLR na napájecí napětí připojit přez vhodně zvolený rezistor nebo ještě o něco komplikovanějším obvodem viz doporučení v datasheetu.
Navíc na desce pro pokusy a ladění je velmi vhodné mít tlačítko umožňující pohodlný reset procesoru, kdykoliv je to potřeba. Navíc se externí reset dá využít v souvislosti s použitím zavaděče (bootloaderu) k ovládání resetu z počítače PC.
Sériový port
Na pokusné/vývojové desce s procesorem dsPIC je z několika důvodů velmi vhodné využít jeho sériový port (UART). Prvním důvodem je možnost využití bootloaderu. Ten umožňuje nahrávání programů do procesoru přímo z počítače PC aniž by musel být používán nějaký programátor. Cyklus překladu programu a jeho nahrání do součástky a spuštění se tak zkrátí na několik sekund. Dokonce se dá i zcela zautomatizovat (po odkliknutí překladu ve vývojovém prostředí se nejprve spustí kompilátor, pak linker a pak bootloader, který si sám procesor zresetuje (viz minulý odstavec), nahraje do něj novou verzi softwaru a provede jeho spuštění).
Druhým důvodem k použití sériového portu je možnost komunikace s počítačem PC přímo za běhu vyvíjeného programu. Tato možnost se nevylučuje se současným využitím portu pro bootloader a velmi zpříjemní ladění programů, protože si z nich můžeme do PC posílat například různé chybové hlášky atd.
Procesory dsPIC mají možnost volby vstupu a výstupu rozhraní UART mezi standardními a alternativními piny, takže pravděpodobnost konfliktu sériového portu s jiným specializovaným vstupem/výstupem je minimální.
Vstupně/výstupní piny procesoru dsPIC samozřejmě používají běžné logické úrovně TTL logiky. Proto je potřeba pro realizaci sériového rozhraní s PC desku osadit některým z běžně používaných převodníků úrovní RS232, například známý obvod MAX232.
Vstupy a výstupy
Pokusnou desku je vhodné osadit nějakými vstupními a výstupními periferními zařízeními. Zde již samozřejmě hodně záleží na vyvíjené aplikaci. Pokud se jedná o desku čistě na hraní si s procesorem, doporučuji alespoň jeden vstup opatřit tlačítkem a alespoň jeden výstup LED diodou. Vzhledem k tomu, že se jedná o digitální signální procesor, je velmi pravděpodobné, že se budete zabývat vývojem nějaké DSP aplikace. V takovém případě je samozřejmě vhodné využít i A/D převodníků a případně desku doplnit některým sériovým D/A převodníkem s rozhraním SPI nebo I2C.
Na mojí vývojové desce je vstup RD0 opatřen tlačítkem (pozor RD0 nemá vnitřní pull-up rezistor a je tedy potřeba ho zrealizovat externí součástkou). Dvoubarevná LED dioda je pripojena na výstupy RB6 a RB7.
Příklad pokusné desky
Na tomto schématu (po kliknutí se zobrazí velký obrázek) je příklad jednoduché pokusné desky s procesorem dsPIC30f3012. Pro zpřehlednění jsou jednotlivé oblasti podbarveny:
- červeně - samotný procesor
- zeleně - obvody sériového portu
- žlutě - obvody krystalu a resetu (včetně resetu z počítače PC - žlutý blok úplně vpravo)
- modře - primitivní periférie procesoru
- Verze pro tisk
- Pro psaní komentářů se musíte přihlásit
- 10774 x přečteno