Blog:Postavte si PMD 32-SD

Z PMD 85 Infoserver

Revízia z 18:07, 12. september 2009; Rombor (Diskusia | príspevky)

Obsah

Postavte si PMD 32-SD

PMD 32-SD
PMD 32-SD

PMD 32-SD je zariadenie, ktoré nahradzuje disketovú jednotku PMD 32, s tým rozdielom, že namiesto 5,25" diskiet sa používajú obrazy týchto diskiet (súbory typu P32) uložené na SD karte formátovanej na FAT16. PMD 32-SD obsahuje jednoduchý "ovládací panel" pozostávajúci z displeja a štyroch tlačidiel. To umožňuje voľbu práve používaných obrazov diskiet.

PMD 32-SD sa od pôvodnej disketovej jednotky PMD 32 líši v niekoľkých detailoch:

  • poskytuje možnosť používať 4 diskové jednotky A: až D: (u pôvodnej PMD 32 sú iba A: a B:) - vyžaduje to upravený CP/M BIOS
  • nevykonáva alebo ignoruje povely U, C, J, * a @ - dôvodom je odlišný hardvér a spôsob implementácie
  • poskytuje naviac nové povely G, H, K, L, M a N - umožňujú softvérovú voľbu vložených obrazov diskiet bez použitia ovládacieho panelu
  • odlišný prepojovací kábel - pôvodná PMD 32 má konektor FRB M-30, PMD 32-SD zas Cannon F-15


Schéma PMD 32-SD
Schéma PMD 32-SD

Hardvér

Zapojenie je pomerne jednoduché. Základom je mikrokontrolér ATMEL ATmega32 taktovaný na maximálnych 16 MHz - X1, C1 a C2. Napájanie mikroprocesora je filtrované kondenzátorom C3. Na pin -RESET je pripojený iba pull-up odpor R3.

SD karta je pripojená štandardne na SPI interfejs ATMELu. Keďže SD karta je 3,3V zariadenie, výstupné signály do SD karty sú upravené deličmi z odporov R4 až R9. Napájanie SD karty je zrazené z 5V iba dvoma diódami D1 a D2 na približne 3,3V a filtrované kondenzátormi C8 a C9. I keď mnohé zdroje uvádzajú, že je vhodnejšie použiť 3,3V stabilizátor, zvolil som toto riešenie a nezaznamenal som žiadny problém. Červená LED D3 (s odporom R10) je pripojená na signál -CS karty a tak indikuje prístup na kartu. Na piny PB0 a PB1 ATMELu sú pripojené spínacie kontakty konektora SD karty pre detekciu vloženej karty, resp. detekciu blokovania zápisu. Na oba piny je softvérovo nastavený pull-up. SPI interface ATMELu, spolu so signálom -RESET, je vyvedený aj na osobitný konektor J2 (pinovú lištu) ako ISP - In-System Programming.

Pripojenie LCD displeja I1 (2 riadky po 16 znakov) je opäť štandardné - použité sú iba dátové signály DB4 až DB7 a riadiace signály E a RS. Displej teda pracuje v 4-bitovom režime a je umožnený iba zápis do registrov displeja. Zaujímavosťou je, že DB4 až DB7 sú, v záujme zjednodušenia plošného spoja, pripojené na port-D ATMELu v obrátenom poradí. Podsvietenie displeja je spínané pomocou T1, R1 a R2. Kontrast displeja je možné nastaviť trimrom P1. Tlačidlá TL1 až TL4 spínajú proti GND a pull-up je zavedený programovo.

Schéma prepojovacie kábla medzi PMD 32-SD a PMD 85
Schéma prepojovacie kábla medzi PMD 32-SD a PMD 85

Komunikácia s nadradeným počítačom (v našom prípade s PMD 85-3) je prostredníctvom obojstranného paralelného kanála, ktorý pracuje ako protipól pre PIO 8255 a jeho port PA v móde 2. Je vyvedený na konektor J1 (CANNON F-15) a všetky signály sú oddelené odpormi R12 až R24. Tieto odpory chránia porty ATMELu, ak sa GPIO0 v PMD 85 naprogramuje tvrdo na výstup. Okrem dátového portu a riadiacich signálov -OBF, IBF, -ACK a -STB je vyvedený aj signál DIR, ktorým sa nastavuje smer budiča 8286, pripojeného na porte PA 8255 v GPIO0 PMD 85. Ak bude PMD 32-SD ovládaná iným systémom, ktorý takýto budič neobsahuje, signál DIR sa nepoužije.

Vstupné napätie 9V je stabilizované na potrebných 5V obvodom U2 7805 a filtrované kondenzátormi C4 až C7. Ak sa použije LCD displej bez podsvietenia, ako U2 postačí verzia L, pretože odber sa v tomto prípade pohybuje maximálne okolo 90mA. Ak sa použije displej s podsvietením, bude potrebný U2 minimálne vo verzii S, pretože odber vystúpi maximálne do 150mA (pri verzii displeja uvedeného na schéme). Zelená LED D4 (s odporom R11) indikuje zapnutie prístroja.

Pre nakreslenie schémy a návrh plošného spoja bol použitý program ExpressPCB. Plošný spoj je obojstranný a obsahuje iba jedinú súčiastku v SMD púzdre a tou je "konektor" pre SD kartu, osadený zhora zo strany súčiastok.

Keďže som nikdy nebol schopný "zžiť" sa s programom Eagle, nebránil by som sa tomu, keby sa našiel niekto, kto by plošné spoje prekreslil do Eaglu, ktorého výstupy sú zrejme použiteľnejšie z pohľadu "hromadnej" výroby DPS (i keď pravda, nechystám sa na nejakú sériovú výrobu!). Prototypové DPS som si nechal vyrábať vo firme pbSpoj, kde už síce nanášajú aj nepájivú masku, avšak bez prekovených otvorov, čo je pri osadzovaní dosť nepríjemné. pbSpoj som si zvolil z viacerých dôvodov: sú na slovensku, cena DPS je celkom prijateľná a hlavne, boli ochotný vyrobiť DPS z predlohy práve z programu ExpressPCB, čo bola pre mňa dosť podstatná vec.


Firmvér

Firmvér je napísaný v jazyku C a kompilovaný pomocou WinAVR. Na editáciu bol použitý Programmer’s Notepad. Toto uvádzam pre prípad, že by si niekto chcel robiť vlastné úpravy firmvéru, a aby mohol použiť projekt ako celok, priamo v uvedenom editore. Prípadné ladenie a trasovanie je možné napr. v AVR Stuio 4.

Pre prácu s SD kartou je použitá knižnica MMC/SD/SDHC card library, ktorej zdrojové súbory sú súčasťou samotného projektu. V knižnici boli prevedené drobné úpravy. Jednak boli upravené konfiguračné hlavičkové súbory pre prispôsobenie daným požiadavkám, niektoré definície štruktúr boli presunuté, aby sa dosiahla kompilácia bez chýb a varovaní a nakoniec bola urobená zmena v porovnávaní mien súborov a adresárov tak, že sa nerozlišujú veľkosti písmen.

Napálenie firmveru do mikroprocesora

Schéma - list 1
Schéma - list 1
Schéma - list 2
Schéma - list 2
Schéma - list 3
Schéma - list 3