\ Zkušební deska

Zkušební deska
K vývoji USB řadiče v AVR mikrokontroléru je vhodné vytvořit si desku s plošnými spoji (PCB). Je nutné se rozhodnout, jaký typ mikrokontroléru zvolit, které podpůrné obvody na desce realizovat, jaké porty vyvést na jaké konektory a podobně. Zvolil jsem použití typu ATmega128 z následujících důvodů:
  • velký počet IO - 23 programovatelných pinů na portech A-F
  • 128kB programové flash paměti
  • 4kB interní SRAM
  • možnost připojit externí RAM
  • frekvence až 16MHz
  • množství periferií, použitelnost i pro jiné úlohy
Podpůrných obvodů jsem na desce realizoval pouze nezbytně nutný počet:
  • pulzní zdroj napětí 5V s obvodem MC34063
  • konektory USB rozhraní typu B (female) a A (female) s pull-up rezistorem pro volbu rychlosti
  • konektory portů A-F v 5x2 headerovém provedení (obr. 1)
  • 8x LED s předřadníkem
  • resetovací tlačítko, blokovací kondenzátory, 15MHz krystal
Schéma zapojení (OrCAD), layout desky, masky (pdf) a doplňující informace jsou k dispozici v souboru atmega128.usb.deska.zip (1,3MB). Samotné zapojení desky ve formátu PDF je v souboru schema.pdf (19kB).
Obr. 1 - zkušební deska ATmega128

Programování obvodu

Z celé řady programovacích postupů jsem vybral sériové nízkonapěťové programování obvodu přes SPI rozhraní. Kombinace programového vybavení PonyProg a hardwarového převodníku úrovní SI-prog je konstrukčně nejjednodušší a nejlevnější. Vyvstává zde problém, který nelze bez předchozí zkušenosti s programováním odhalit a tím je doba programování obvodů. ATmega128 disponuje 128kB programové paměti, kterou PonyProg programuje pokaždé celou a tím zpomaluje programovací proces. Doba trvání je asi 30 sekund, ale v téměř polovině případů se programování nepovede a musí se opakovat. Podstatného zlepšení se dosáhne nahráním bootloaderu do horní části programové paměti a programování obvodu vnitřní rutinou procesoru.

SI-prog

Omezovač úrovní SI-prog je hardwarové vybavení adaptující napěťové úrovně rozhraní RS-232 na TTL úrovně. Účelem je buzení dvou třech výstupů (RESET, SCK, MOSI) a čtení jednoho vstupu (MISO). Na to jsou využity čtyři piny sériového rozhraní počítače (COM port) plus jeden jako indikace přítomnosti zařízení. Konektor je devítipinový dvouřadý DB9 (female). Je třeba si uvědomit, že ATmega128 má dvě SPI brány, jednak programovací (piny 2 a 3) a také uživatelskou (piny 12 a 13). Hodinový signál SCK je společný (pin 11).

významCOM názevDB9 pinAVR názevATmega128 pin
MISO - master in, slave outCTS8PDI - PE02
MOSI - master out, slave inDTR4PDO - PE13
SCK - serial clockRTS7SCK - PB111
RESET - programovací režimTxD3RESET20
indikace zařízeníDSR spojeno s RTS6 a 7--

Omezovač úrovní jsem realizoval jako součást konektoru DB9 (obr. 1). Spojení s testovací deskou je provedeno 10 žilovým plochým vodičem s lisovacími konektory 5x2 (obr. 2).
Obr. 1 - SI-prog jako součást konektoru

Obr. 2 - plochý desetižilový vodič

Při pohledu ze strany součástek je konektor číslován takto (obr. 3):

2

4

6

8

10

1

3

5

7

9


Obr. 3 - číslování headeru 5x2


Obecný význam pinů, který se snažím dodržovat je:

2

GND

4

DATA1

6

DATA3

8

DATA5

10

DATA7

MSb

1

Vcc

3

DATA0

LSb

5

DATA2

7

DATA4

9

DATA6



SI-prog definuje vlastní pinout, ale na desce není použit. Místo toho je použit doporučený pinout pro ISP (in-system programming) zařízení od Atmelu:

2

4

MOSI

out

6

MISO

in

8

SCK

out

10

RESET

out

1

Vcc

3

5

7

GND

9

GND



Nepájivé kontaktní pole

V případě, že není konstrukce vlastní desky myslitelná, může být řešením použití kontaktního nepájivého pole (obr. 4). Kontaktní pole se skládá ze zdířek, které jsou spolu v řádcích vodivě spojeny. Řádky jsou očíslovány 1 až 63. Sloupce jsou označeny písmeny a-e a f-j. Zdířky a-e jsou v každém řádku spolu vodivě spojeny a totéž platí pro zdířky f-j. Mimo to jsou v kontaktním poli čtyři sloupce (všechny zdířky jednoho sloupce jsou spolu spojeny) určené pro rozvod napájení (červená a modrá linka). Kontaktní pole tedy obsahuje celkem 63x2+4 uzlů. Do pole je možné umístit DIL pouzdra integrovaných obvodů s celkovým počtem 126 nožiček. Na obrázku 4 je v poli umístěn obvod ATtiny13 v pouzdře DIL8. Kontaktní pole je vynikající pomůcka pro začínající návrh, protože umožňuje velmi rychle realizovat jednoduchá zapojení aniž by bylo nutné cokoliv pájet.

Typy procesorů, které přicházejí v úvahu jsou ATmega8, ATtiny13, ATtiny2312, ATmega168 a jiné typy, které jsou k dispozici v pouzdře DIL. Nejvhodnější zřejmě bude použití ATmega8 nebo ATmega168, protože disponují největší SRAM a programovou pamětí.

SI-prog v kontaktním poli
Elegantní řešení připojování a odpojování programátoru je ukázáno na obrázku 5. Integrovaný obvod se s programátorem spojí pomocí kontaktního nástavce zabírajícího sloupce d a g. Nástavec je jistým specifickým zakončením plochého vodiče. Pro každý typ procesoru je potřeba vytvořit jiný nástavec, který však bude na druhém konci zakončen vždy stejným plochým vodičem s lisovacím konektorem se standardním pinoutem. Programátor (SI-prog) tedy může zůstat pro různé procesory stejný, měnit se budou pouze kontaktní nástavce.
Obr. 4 - kontaktní pole
Obr. 5 - kontaktní programovací nástavec