Diplomová Práce. Provozní Zapisovač Dat. 2009 Tomáš Kašný



Podobné dokumenty
PK Design. MB-ATmega16/32 v2.0. Uživatelský manuál. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 (21.12.

Rozhraní mikrořadiče, SPI, IIC bus,..

Měřič krevního tlaku. 1 Měření krevního tlaku. 1.1 Princip oscilometrické metody 2007/


Architektura počítače

enos dat rnici inicializaci adresování adresu enosu zprávy start bit átek zprávy paritními bity Ukon ení zprávy stop bitu ijíma potvrzuje p

Microchip. PICmicro Microcontrollers

Snímač barometrického tlaku T2314, T2414

FASTPort. Nová sběrnice pro připojení inteligentních karet* k osmibitovým počítačům. aneb. Jak připojit koprocesor

TENZOMETRICKÝ MĚŘIČ. typ Tenz

Programovatelný domovní zesilovač Avant 7

Elektronická kapacitní dekáda - BASIC


Miroslav Flídr Počítačové systémy LS /21- Západočeská univerzita v Plzni

Třífázové statické činné elektroměry

Grafický výtahový displej

GRAFICKÉ ROZHRANÍ V MATLABU PRO ŘÍZENÍ DIGITÁLNÍHO DETEKTORU PROSTŘEDNICTVÍM RS232 LINKY

Univerzální jednočipový modul pro řízení krokových motorů

MLE2 a MLE8. Datalogery událostí

POKLADNÍ DISPLEJ LCD. hotline: strana 1

1. ÚVODNÍ USTANOVENÍ 2. NAHRÁNÍ VLOŽENÉHO PROGRAMU

Komunikace modulu s procesorem SPI protokol

Návrh konstrukce odchovny 2. dil

PK Design. MB-S2-150-PQ208 v1.4. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 ( )

Maturitní témata - PRT 4M

Uživatelská příručka - diagnostický systém

Cílem této kapitoly je seznámit s parametry a moduly stavebnice NXT. Obr. 1: Brick s moduly [3]

CQ485. Opakovač a převodník linek RS485 a RS422. S aktivní i pasivní obnovou dat

Displej DT20-6. Update firmware řadiče. Simulační systémy Řídicí systémy Zpracování a přenos dat TM 2012_10_

Podstanice DESIGO PX Modulární řada s rozšiřujícím modulem

DM4.3 odmagnetovací modul

1 Podrobná specifikace Yunifly Datasheet

ŘÍDÍCÍ ČLEN GCD 411. univerzální procesorový člen pro mikropočítačové systémy. charakteristika. technické údaje

PC-D218-ID. pro 2-vodičový systém D2. Uživatelský návod.

Řídící jednotka AirBasic 2

Regulátor MaxVU. Stručný návod k použití

Ovládací PTZ klávesnice SC-3100 Uživatelský a instalační manuál

TCP2RTU. Transparentní převodník protokolu MODBUS TCP na MODBUS RTU/ASCII. Tři varianty: pro RS422, RS485 a RS232

Jízda po čáře pro reklamní robot

Směrová nn ochrana MEg51. Uživatelské informace

Rozhraní mikrořadiče, SPI, IIC bus,..

Datalogger Teploty a Vlhkosti

24 bitový AD USB modul AD24USB. Návod k použití

UDAQ-1216A UDAQ-1416A. multifunkèní modul pro rozhraní USB

DISTA. Technická dokumentace. Pokyny pro obsluhu a údržbu. Verze 2.5

Modul analogových vstupů M-AI4

TDL500. Systém elektronické evidence návštěvnosti TDL500

Řídící jednotka pro 2 čtečky SL20

Řídicí systémy řady 400 str.2 z 16 MICROPEL

PROCESNÍ KALIBRÁTOR M505 (D)

Úvod do mobilní robotiky AIL028

Technické prostředky počítačové techniky

Maticová klávesnice. Projekt do předmětu Subsystémy PC. Brno, Tomáš Kreuzwieser, Ondřej Kožín

Měření kmitočtu a tvaru signálů pomocí osciloskopu

LOGIC. Stavebnice PROMOS Line 2. Technický manuál

Paměti a jejich organizace

PROCESOR. Typy procesorů

1. MIKROPROCESOR ATMEGA A/D PŘEVODNÍK MÓDY PŘEVODNÍKU Single Conversion Mode Auto Triggering Start...

evodníky Univerzita Tomáše Bati ve Zlíně Ústav elektrotechniky a měření Přednáška č. 14 Milan Adámek adamek@fai.utb.cz U5 A

ELEKTRONICKÁ ČASOMÍRA

Úloha Ohmetr zadání úlohy


STŘEDOŠKOLSKÁ TECHNIKA 2013

Adresovatelný převodník rozhraní RS48/RS232 ELO E250. Uživatelský manuál

WLS používá tři baterie typu A-76 a WLS používá dvě lithiové baterie CR2032.

Návod k použití. Deska identifikace FASTOS IDENT AGROSOFT Tábor s.r.o.

Úloha č. 2: Měření voltampérových charakteristik elektrických prvků pomocí multifunkční karty

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

A4B38NVS, 2011, kat. měření, J.Fischer, ČVUT - FEL. Rozhraní mikrořadiče, SPI, IIC bus,.. A438NVS, kat. měření, ČVUT - FEL, Praha. J.

Rozšiřující modul s protokolem MODBUS

V případě potřeby lze snímače nakonfigurovat do kompatibilního režimu se staršími snímači REGMET P21M. Přehled typů: osvětlení

Detektor plynu. Srdcem zapojení je senzor plynu od firmy Figaro, která má v této oblasti dlouhou tradici.

PK Design. EVMS-mega128. Uživatelský manuál. v1.0. Výuková deska s mikrokontrolerem ATmega128. Obr. 1 - výuková deska s LCD displejem

Převodník na DIN lištu s frekvenčním výstupem typ RF1

DIGITAL PROCESSOR DIGITAL TERRESTRIAL COMPATIBLE

Operační paměti počítačů PC

Voděodolný tloušťkoměr MG-401 Obsah:

TEPL2344 Technická dokumentace PŘEVODNÍK TEPLOTY. typ TEPL2344 s rozhraním RS232.

CHARAKTERISTIKY MODELŮ PC

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Elektronická časomíra SH3

Převodník USB na RS232. Milan Horkel

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

AWGD 46 MWGD 46. Dveřní moduly APS mini / APS mini Plus s rozhraním WIEGAND s podporou zámků APERIO. Uživatelská příručka

FPC - Převodník pro čínské čtečky F17 a F18 - podrobný popis služeb a příkazů -

VELKOKAPACITNÍ PAMĚŤOVÉ ZAŘÍZENÍ PRO OBVODY FPGA

Paměťové prvky. ITP Technika personálních počítačů. Zdeněk Kotásek Marcela Šimková Pavel Bartoš

MK800. Signalizační a testovací panel

Detektor mobilní komunikace DMC - 3 popis a návod k použití Před použitím přístroje si prosím přečtěte tento návod

Registrační teploměr

Snímače teploty a vlhkosti s komunikací po RS485 protokolem Modbus RTU - řada PHM

Mikrokontroléry. Doplňující text pro POS K. D. 2001

SOUPRAVY PRO MĚŘENÍ ÚTLUMU/VÝKONU. UŽIVATELSKÝ NÁVOD přístrojů EPM-500/ELS-500 verze 1.0

Univerzální regulační systém TERM 4M. Technická data vstupy Pt100. proud (IMEA) binární (BIN) výstupy binární: (OUTPUTS)

SA-GSMALL. Instalační manuál

Zkouškové otázky z A7B31ELI

SCIO-11. Stavebnice PROMOS Line 2. Technický manuál

ULTRAZVUKOVÝ DÁLKOMĚR

Nový VRF systém. Řídicí systém. Divize technické podpory

Číslicové rozváděčové měřicí přístroje DIGEM prioritní program

Transkript:

Diplomová Práce Provozní Zapisovač Dat 2009

Anotace Práce se zabývá návrhem zapisovače, který ukládá data z inerciální navigační jednotky do externí paměti. Tato data se zpracovávají v aplikaci na PC a převádějí do textové formy vhodné pro import do dalších programů.

Annotation Thisworkdealswiththedesignoftherecorderwhichstoresdatafromaninertial navigation unit to the external memory. These data can be then processed in the PC application and modified into text forms fit for a usage within the other programs.

Poděkování Na tomto místě bych chtěl obzvláště poděkovat svému vedoucímu diplomové práce, panu Ing. Janu Roháči, Ph.D., za jeho vedení a trpělivost při psaní této diplomové práce, panu Ing. Michalovi Reinšteinovi za umožnění přístupu k inerciálně jednotce a nakonec bych chtěl poděkovat svým rodičům a celé rodině za jejích podporu a ohleduplnost během studia a práce na diplomové práci.

ČESTNÉ PROHLÁŠENÍ Prohlašuji, že jsem zadanou diplomovou práci Provozní zapisovač dat zpracoval samostatně a použil jsem podklady (literaturu, software atd.) uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 zákona č.121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne 22.5.2009 Podpis.

Obsah 1. ÚVOD...- 1-2. ANALÝZA PROBLÉMŮ A NÁVRH ŘEŠENÍ...- 2-2.1 INERCIÁLNÍ JEDNOTKA AHRS M3...- 2-2.1.1 Obecný popis...- 2-2.1.2 Připojení k zapisovači...- 4-2.1.4 Softwarové rozhraní...- 5-2.2 VÝBĚR PROCESORU...- 7-2.3 VÝBĚR PAMĚTI...- 8-2.4 OBSLUHA...- 9-3. HARDWAROVÁ REALIZACE...- 10-3.1 BLOKOVÉ SCHÉMA ZAPISOVAČE...- 10-3.2 POPIS MIKROKONTROLÉRU...- 11-3.2.1 Propojky...- 12-3.2.2 Paměťový prostor...- 13-3.2.3 Obecné vstupy/výstupy...- 13-3.2.4 SPI sběrnice...- 15-3.2.5 Rozhraní RS-232...- 16-3.2.6 Časovač...- 17-3.2.7 Reset...- 18-3.3 PROGRAMÁTOR...- 19-3.4 SD KARTA...- 20-3.5 LCD...- 24-3.6 KLÁVESNICE...- 26-3.7 RS-232...- 27-3.8 RESETOVACÍ OBVOD...- 28-3.9 NAPÁJENÍ...- 28-4. SOFTWARE...- 29-4.1 FIRMWARE...- 29-4.1.1 Struktura programu...- 30-4.1.2 Inicializační proces...- 33-4.1.3 Ovládání LCD...- 40-4.1.4 Funkce pro práci s FAT...- 41-4.1.5 Zápis měření...- 42-4.1.6 Odeslání měření...- 46-4.1.7 Ostatní funkce zapisovače...- 48-4.2 APLIKACE PZD.EXE...- 49-4.2.1 Hlavní dialogové okno...- 50-4.2.2 Nastavení...- 52-4.2.3 Grafy...- 54-5. TESTOVÁNÍ ZAPISOVAČE...- 55-6. ZÁVĚR...- 61 - LITERATURA...- 63 -

1. Úvod Již z názvu diplomové práce vyplívá podobnost s tzv. černou skříňkou. Ta se používá jako záznamové zařízení pro data ze senzorů, různých jednotek apod. Záznamové zařízení má dnes široké uplatnění v průmyslu, dopravě a jiných odvětvích, kde je potřeba zaznamenávat provozní data strojů, informace o stavech apod. Cílem této diplomové práce je navrhnout zařízení, které bude schopno komunikovat s inerciální jednotkou a číst z ní data z akcelerometrů asenzorů úhlové rychlosti. Zařízení bude vybaveno pamětí, kterou buď bude možné ze zařízení odpojit a připojit přímo k PC nebo zařízení bude vybaveno rozhraním, kterým se připojí k PC a odešle do něj zaznamenaná data. V PC bude aplikace, která zaznamenaná data bude dekódovat a převádět do srozumitelnější formy. Popřípadě aplikace bude komunikovat se samotným zapisovačem a přijímat z něj zaznamenaná data. Převedená data musí být importovatelná do jiných programů (Excel, MatLab apod.). Součástí aplikace bude také zobrazování zaznamenaných dat pomocí grafů. Zapisovač se bude realizovat pomocí mikrokontroléru, který by měl disponovat několika komunikačními kanály, minimálně rozhraním RS-232. Paměť se bude vybírat na základě rychlosti zápisu a její kapacity, a propojení s mikrokontrolérem se bude realizovat buď pomocí vstupně/výstupních brán mikrokontroléru nebo pomocí některé komunikační sběrnice. Komunikace s inerciální jednotkou bude záviset na dispozicích samotné jednotky, ale pravděpodobně se použije sériové rozhraní RS-232. Obsluha zapisovače se bude provádět pomocí malé klávesnice a LCD displeje. - 1 -

2. Analýza problémů anávrhřešení Provozní zapisovač dat zaznamenává data z jednotky inerciální navigace (dále jen jednotka). Ta je k zapisovači připojena pomocí rozhraní RS-232. Data z jednotky se zpracovávají v zapisovači, v němž se provede krátký výpočet a uložení do paměti. O vysílání dat se jednotka stará sama. Podle svého nastavení opakuje vysílání bloku dat. V jednotce lze nastavit jak vzorkovací frekvenci, tak formát výstupních dat. Zapisovač musí umět komunikovat také s PC, kde se data budou dále zpracovávat podle potřeby. Komunikace s PC je taktéž zajištěna pomocí sériové linky RS-232. Na PC je programové vybavení, které zajišťuje spojení se zapisovačem. Tento program je schopen zobrazit výstupní data ve formě grafů aumožňuje data ukládat do libovolného souboru. V nastavení programu lze částečně ovlivňovat formát ukládaných dat (oddělovací znak hodnot, názvy sloupců jednotlivých senzorů). Zapisovač rovněž musí umět komunikovat s obsluhou, což se realizuje pomocí LCD displeje a malé klávesnice. 2.1 Inerciální jednotka AHRS M3 2.1.1 Obecný popis Jednotka AHRS M3 firmy Innalabs byla zvolena díky její konektivitě pomocí sériového rozhraní RS-232. Výrobce k ní navíc dodává redukci RS-232 USB, která v tomto případě není použitá. Specifikace jednotky jsou uvedeny v příloze I. Obr. 2.1 jednotka inerciální navigace AHRS M3-2 -

Jednotka je vybavena třemi akcelerometry, třemi senzory úhlové rychlosti a třemi magnetometry. Je schopna poskytovat přímo údaje ze senzorů a výpočetní algoritmus, obsažený v jednotce, poskytuje Eulerovi polohové úhly (kurs, příčný sklon a podélný náklon). Údaje z akcelerometrů a magnetometrů používá výpočetní algoritmus ke kompenzaci chyb vzniklých při integraci polohových úhlů, viz. obr. 2.2. Pro výrobu senzorů jednotky byla použita technologie MEMS. Ta dává jednotce několik výhod: rozměry, umožňující její použití v mnoha obdobných aplikacích, napájecí napětí, které je zde 6 V a spotřeba zhruba 110 ma. Pokud by se použila inerciální jednotka s mechanickými gyroskopy, potřebovalo by se napětí řádově v desítkách voltů pro roztočení setrvačníků a proud řádově v jednotkách Ampér, široký rozsah vzorkovacích frekvencí, kterým tato inerciální jednotka disponuje (od 1Hz do 100 Hz). Základem výpočetního algoritmu této inerciální jednotky je Kalmanův filtr. Ten je zde použit pro stanovení bias drift senzorů uhlové rychlosti a k výpočtu stabilizovaných polohových úhlů. Obr. 2.2 funkční diagram AHRS M3-3 -

2.1.2 Připojení k zapisovači Elektrické připojení jednotky k zapisovači je realizováno pomocí 5-ti pinového mini Din konektoru, viz. obr. 2.3. V tabulce tab. 2.1 je popis významů jednotlivých pinů. Obr. 2.3 konektor AHRS M3 Tab. 2.1 význam pinů Pin Signál 1 Rx zapisovač 2 GND 3 Tx zapisovač 4 V DD 5 NC Jednotku lze napájet externě pomocí AC/DC adaptéru, který dodává výrobce (napětí 6 V a výkon 660 mw). Na obr. 2.4 můžeme vidět jak se jednotka propojí se zapisovačem, jenž je vybaven standardním konektorem CANNON 9 V 90. inerciální jednotka Rx zapisovač 1 Tx zapisovač 3 GND 2 V DD 4 5 napájení V DD GND zapisovač 1 NC 2 Rx zapisovač 3 Tx zapisovač 4 NC 5 GND 6 NC 7 NC 8 NC 9 NC Obr. 2.4 propojení inerciální jednotky a zapisovače - 4 -

2.1.4 Softwarové rozhraní Jak již bylo řečeno k jednotce se připojuje pomocí sériové linky RS-232. Po připojení napájení provede jednotka svou inicializaci a je připravena k práci. Nachází se v čekacím módu, kdy čeká na příkazy. Všechny příkazy a data se přijímají a odesílají přes sériovou linku, jejíž nastavení uvádí tab. 2.2. Tab. 2.2 nastavení COM portu rychlost [b/s] 115 200 počet datových bitů 8 parita žádná počet Stop bitů 1 Jednotku lze ovládat pomoci sady 8-mi příkazů. Příkazy mají velikost 1B anížeje uveden jejich seznam a krátký popis: AHRS1, kód 0x80 přepne jednotku do operačního módu a spustí měření. Jednotka bude vysílat Full Output Data format. AHRS2, kód 0x81 - přepne jednotku do operačního módu a spustí měření. Jednotka bude vysílat Orientation Angles format. AHRS3, kód 0x82 - přepne jednotku do operačního módu a spustí měření. Jednotka bude vysílat Quaternion Of Orientation format. AHRS4, kód 0x82 - přepne jednotku do operačního módu a spustí měření. Jednotka bude vysílat Orientation Angles+Senzors Output. Stop, kód 0xFE jednotka ukončí měření a přejde do nečinného stavu. LoadBlockPar, kód 0x10 příkaz nahraje 52B dat do jednotky. Blok dat obsahuje parametry pro měření, viz. tab. 2.3. ReadBlockPar, kód 0x11 příkaz přečte 52B z jednotky. Blok dat obsahuje aktuální parametry pro měření, viz. tab. 2.4. GetVerFirmware, kód 0x1F příkaz přečte verzi firmwaru. - 5 -

Tab. 2.3 obsah data bloku nahrávající se do inerciální jednotky Byte Parametr Formát Délka [B] Poznámka 0-1 vzorkování slovo 2 v Hz 2-3 inicializační čas slovo 2 v sekundách 4-7 magnetická deklinace float 4 ve stupních 8-11 zeměpisná šířka float 4 ve stupních 12-15 zeměpisná délka float 4 ve stupních 16-19 výška float 4 v metrech 20-23 datum(rok, měsíc) float 4 24-27 úhel A1 float 4 montážní úhly AHRS 28-31 úhel A2 float 4 na objektu [ ], viz. [4] 31-35 úhel A3 float 4 36-49 reservováno 14 50-51 kontrolní součet slovo 2 Tab. 2.4 obsah data bloku přečteného z inerciální jednotky Byte Parametr Formát Délka [B] Poznámka 0-1 vzorkování slovo 2 v Hz 2-3 inicializační čas slovo 2 v sekundách 4-7 magnetická deklinace float 4 ve stupních 8-11 zeměpisná šířka float 4 ve stupních 12-15 zeměpisná délka float 4 ve stupních 16-19 výška float 4 v metrech 20-23 datum(rok, měsíc) float 4 24-27 úhel A1 float 4 montážní úhly AHRS 28-31 úhel A2 float 4 na objektu [ ], viz. [4] 31-35 úhel A3 float 4 36-43 identifikace zařízení znak 8 pouze pro čtení 44-49 reservováno 6 50-51 kontrolní součet slovo 2 Jako výstupní formát dat, který je tvořen 36B dlouhým data blokem, se v tomto případě použije Orientation Angles+Senzors Output, příkaz AHRS4. Pro účel této práce se použijí pouze hodnoty z akcelerometrů asenzorů úhlových rychlostí. Pozici jednotlivých bajtů a jejich obsah ukazuje tab. 2.5. - 6 -

Tab. 2.5 význam jednotlivých bajtů ve výstupním data bloku Kontrolní součet, který tvoří vždy dva poslední bajty vysílaného bloku dat se vypočte jako aritmetický součet všech předchozích bajtů. Pro data blok obsahující parametry inerciální jednotky je kontrolní součet roven součtu bajtu 0 až 49 a pro data blok obsahující výstupní data ze senzorů je kontrolní součet roven součtu bajtu 0 až 33. 2.2 Výběr procesoru Výběr procesoru byl ovlivněn původním návrhem realizace, ve kterém se předpokládalo použití paměti typu FLASH. U tohoto druhu paměti lze adresovat každý bajt samostatně. Z toho vyplynulo: procesor s dostatkem vstupně/výstupních bran, integrované některé komunikační kanály, hlavně sériová linka RS-232, alespoň jeden 16-ti bitový časovač, protože zapisovač zaznamenává také časový index mezi jednotlivými odměry, pouzdro procesoru v provedení pro povrchovou montáž, rychlost procesoru, je požadován procesor z rychlostí okolo 10MHz, který dokáže své instrukce vykonávat v co nejkratším čase, ideálně 1 instrukce = 1 takt. Na základě uvedených požadavků jsem se zaměřil na procesory ATmega od firmy Atmel, se kterýma již mám zkušenosti. Konkrétně jsem vybral mikrokontrolér ATmega16, jehož nejdůležitější vlastnosti jsou uvedeny níže: instrukční soubor obsahuje 131 instrukcí, 32 obecně použitelných registrů délky 8 bitů, čtyři 8-mi bitové vstupně/výstupní porty (celkem tedy 32 vstupů/výstupů), hodinový kmitočet 0 až 16 MHz, maximální výpočetní výkon až 16 MIPS, - 7 -

programová paměť FLASH, kapacita 16 kb, počet přeprogramování je až 1000 cyklů, datová paměť RAM, kapacita 1kB, datová paměť E 2 PROM, kapacita 512 B, počet přeprogramování je až 100 000 cyklů, FLASH a E 2 PROM jsou programovatelné přímo v systému pomoci rozhraní SPI nebo JTAG, dva 8-mi bitové čítače/časovače, jeden 16-ti bitový čítač/časovač, čtyři PWM kanály, analogový komparátor, 10-ti bitový A/D převodník, jednotky USART, SPI, TWI (podpora I 2 C), jednotky WDT, Power-on reset, zabudovaný RC oscilátor, pouzdra DIP 40, TQFP 44. Tento mikrokontrolér se vyrábí nejen ve standardním teplotním rozsahu 0 C až 70 C, ale také v teplotním rozsahu -40 C až 85 C a to v obou provedeních pouzdra. Jako zdroj hodinového signálu se použije krystalový oscilátor 14,7456 MHz. Tato hodnota krystalu se použije z důvodů přesnějšího časování pro rozhraní RS-232, viz. rovnice 3.1. 2.3 Výběr paměti Při prvním návrhu zapisovače se uvažovalo použít paměťový obvod FLASH. Kvůli požadavku na větší paměťový prostor, se od něj muselo upustit a přešlo se na paměťovou kartu. Konkrétně na Secure Digital Card. Volba této paměťové karty byla ovlivněna hlavně její rozšířeností a univerzálností. Protože jde o otevřený formát, lze snadno získat veškeré podklady pro práci s SD kartou. Problém by mohl nastat až při komunikaci SD karty s mikrokontrolérem. SD karta ovšem umí komunikovat ve dvou módech: SD mód a SPI mód. SD mód se používá při standardním přístupu na SD kartu, kdy s ní komunikuje např. PC, fotoaparát apod. V této práci se ale bude s SD kartou komunikovat pouze v SPI módu. SPI mód je sice omezenější než SD mód, ale pro účel této práce je dostačující. Základní vlastnosti SD karty: kompatibilní s MultiMediaCard protokolem, podpora SPI módu, - 8 -

napájecí rozsah 2,7 V až 3,6 V, možnost použití CRC kódu pro opravu chyb, rozsah pracovního kmitočtu 0 až 20 MHz, rychlost zápisu až 3 MB/s (SD mód), mechanická ochrana proti přepisu dat, pouzdro ve třech provedeních (SD karta, minisd karta a microsd karta), odolná vůči nárazům, až 100 000 cyklů zápis/výmaz. Mechanické provedení SD karty ve standardním pouzdře je zobrazeno v příloze III. 2.4 Obsluha Zapisovač musí umět komunikovat také s obsluhou a obsluha naopak musí zapisovač ovládat. Jako výstupní komunikační zařízení byl zvolen jednořádkový LCD displej se 16-ti znaky, vybaven také podsvětlením pro lepší čitelnost. Použit je displej z nabídky obchodu GM electronic s označením MC1601A-SYL/H. - standardní displej, ovládán řadičem S6A0069 nebo ST7066 (oba řadiče jsou totožné jen od jiného výrobce a vycházejí ze standardního řadiče HD44780 firmy Hitachi). S displejem lze komunikovat i pomocí čtyř datových bitů, čehož se využilo při původním návrhu, kdy se ještě používala FLASH paměť a u tohoto módu komunikace se zůstalo. Obsluha zapisovače se provádí pomocí tří tlačítek. Tyto tlačítka musí být bezzákmitové a pro tento účel je každé tlačítko vybaveno monostabilním klopným obvodem. Tlačítka mají význam, OK a. Tlačítka a sepoužívajíprozměnu nastavení, pohyb v MENU apod. Tlačítko OK slouží k potvrzení. Na zapisovači jeještě čtvrté tlačítko RESET, které slouží k hardwarovému resetu zapisovače. Tlačítko RESET není jednoduše dostupné, aby zařízení nebylo obsluhou náhodně resetováno. Zadání práce vyžaduje zobrazení dat na PC. K tomuto účelu je napsána aplikace PZD.exe, která byla vyvinuta v programovacím prostředí LabWindows/CVI. Výhodou tohoto prostředí je jeho možnost použití grafického rozhraní pro výsledný program, kde lze jednoduše naprogramovat libovolnou aplikaci i s grafickým rozhraním. Knihovny tohoto programu jsou dosti obsáhlé a je zde i mnoho příkladů použití různých konstrukcí, jako je třeba komunikace přes sériovou linku, vykreslování grafů apod. - 9 -

3. Hardwarová realizace 3.1 Blokové schéma zapisovače Blokové schéma zapisovače je na obr. 3.1. Hlavní součástí zapisovače je mikrokontrolér ATmega16, který propojuje a ovládá veškeré periférie. Pomocí sběrnice SPI je k mikrokontroléru připojena SD karta a USB programátor sloužící k nahrání firmwaru do mikrokontroléru. O tom, které zařízení s mikrokontrolérem přes sběrnici SPI komunikuje, rozhodují přepínače SW1 a SW2. Komunikace s inerciální jednotkou a PC se provádí pomocí rozhraní RS-232, jehož správné napěťové přizpůsobení provádí převodník MAX232. Pro obsluhu zapisovače jekv/vbráně PA připojen LCD displej a k V/V bráně PD je připojená klávesnice. Napájení zapisovače obstarává blok napájení, který dodává napájecí napětí 3,3 V prosdkartua5 V pro mikrokontrolér a ostatní periférie. Správnou úroveň napájejícího napětí pro mikrokontrolér hlídá resetovací obvod, který v případě poklesu napájejícího napětí 5 V, mikrokontrolér resetuje. Obr. 3.1 blokové schéma zapisovače - 10 -

3.2 Popis mikrokontroléru Mikrokontrolér ATmega16 (dále jen mikrokontrolér) patří do rodiny mikrokontroléru Atmel AVR. AVR architektura vychází z koncepce rychle přístupného registrového pole, které obsahuje 32 obecně použitelných registrů o délce 8-mi bitů. Přístup do registrů je realizován během jednoho strojového cyklu. Tzn. že během jednoho strojového cyklu se přečtou operandy z registrů, provede se daná instrukce a výsledek se opět uloží do registru. Tato technika dodává mikrokontrolérům AVR velký výpočetní výkon. Pro srovnání procesory řady 8051 mají instrukce o délce 12 až 48 hodinových cyklů a pro práci musí využívat akumulátor, který je většinou jen jeden. U mikrokontrolérů AVR lze považovat všech 32 registrů za akumulátor. Navíc strojový cyklus je u mikrokontrolérů AVR stejně dlouhý jako hodinový cyklus. Nedochází zde k dělení strojových cyklů na několik hodinových cyklů jako u řady 8051. Mikrokontroléry AVR jsou vybaveny prefetch funkcí (předvýběr instrukcí), který je sice velmi zjednodušený, ale funkční a účinný. Díky prefetch je implementován jednofázový pipelining (zřetězené provádění instrukcí), kdy během provádění jedné instrukce se již připravuje další instrukce. Jakmile první instrukce zapíše svůj výsledek do registru, může okamžitě druhá instrukce výsledek číst a použít pro svou operaci. Nedochází zde tak často k prázdným hodinovým cyklům, kdy se čeká než se instrukce nahraje a dekóduje, aby mohla být použita. Rychlost mikrokontrolérů AVR je zajištěna z velké části také instrukční sadou. Pro mikrokontroléry AVR platí jednotná délka instrukcí, a to 16 bitů. Jen několik instrukcí má délku 32 bitů. U mikrokontrolérů ATmega je několik možností, jak jej naprogramovat. Může se použít paralelní programování, které však vyžaduje speciální programátor. Mikrokontrolér se vloží do programátoru, naprogramuje, vyjme a vloží do zařízení. Jistou nevýhodou je fakt, že pokud není zařízení vybaveno ZIF patici, může se snadno mikrokontrolér poškodit. Další možností je použití rozhraní JTAG. Toto rozhraní má tu výhodu, že lze program ladit přímo na čipu. Značnou nevýhodou je ovšem vysoká cena programového vybavení. Nejschůdnější cestou, jak jednoduše naprogramovat tento mikrokontrolér, je použití sériového downloadu pomoci SPI sběrnice. Tento způsob umožňuje bez problémů vykonávat všechny nutné operace, jako mazání FLASH paměti, verifikaci uploadovaných dat apod. SPI rozhraní lze použít i pro naprogramování E 2 PROM paměti. K programování přes SPI sběrnici se používá programátor, který je popsán v kapitole 3.3. - 11 -

3.2.1 Propojky Mikrokontrolér disponuje dvěma bajty propojek. Propojky lze programovat i pomocí sériového downloadu. Hodnota propojek je zapamatována i když se vstoupí do programovacího režimu. Dále je uveden seznam propojek a jejich význam: OCDEN (On Chip Debug ENabled) povoluje (0) nebo zakazuje (1) ladění přímo na čipu. JTAGEN (JTAG ENabled) povoluje (0) nebo zakazuje (1) použití JTAG rozhraní. SPIEN (SPI download ENabled) - povoluje (0) nebo zakazuje (1) sériový download. CKOPT (ClocK OPTions) uplatní se při použití krystalového oscilátoru, pokud je nastavená (1), inicializuje se na oscilátoru malý rozkmit, sníží se spotřeba a je menší rušení do okolních obvodů. Pokud je nastavená (0), inicializuje se na oscilátoru plný rozkmit. Tato volba je vhodná pro silně rušené prostředí. EESAVE (EEprom SAVE) je-li tato propojka naprogramována (0), je obsah E 2 PROM zachován i po smazání čipu. BOOTSZ1, BOOTSZ2 (BOOT SiZe) velikost boot loader sekce. BOOTRST (BOOT ReSeT) je-li tato propojka naprogramována (0), jsou vektory přerušení a resetu umístěny do boot leader sekce a ne do aplikační sekce FLASH. BODLEVEL (Brown-Out Detection LEVEL) slouží k výběru úrovně detektoru výpadku, výchozí hodnota je 1. BODEN (Brown-Out Detection ENabled) je-li BODEN = 0, je detektor aktivován a naopak, výchozí hodnota je 1, detektor deaktivován. SUT1 a SUT0 (Start-Up Time) volba startovací prodlevy při probuzení mikrokontroléru z režimu Power-save nebo Power-down. CKSEL3 až CKSEL0 (ClocK SELect) volba zdroje synchronizace. Podrobnosti ohledně nastavení propojek jsou uvedeny v literatuře [5]. - 12 -

3.2.2 Paměťový prostor Paměťový prostor u mikrokontroléru je rozdělen na programovou a datovou část, harvardská architektura. Vnitřní paměť je tvořena FLASH pamětí, RAM a E 2 PROM. FLASH má velikost 16 kb a je adresována vždy po slovech od adresy 0x0000 až 0x1FFF. Vnitřní datová paměť je tvořená statickými paměťovými buňkami, takže paměť není zatížena refreshem. Prvních 32 bajtů odpovídají obecným registrům R0 až R31. Na následujících 64 bajtech jsou umístěny vstupně/výstupní registry, které slouží jako řídící a datové registry pro periférie mikrokontrolérů. Zbylý paměťový prostor se používá jako RAM, která začíná na adrese 0x0060 a končí na0x045f. Rozložení vnitřní paměti mikrokontroléru je zobrazeno na obr. 3.2. Obr. 3.2 mapa vnitřní paměti 3.2.3 Obecné vstupy/výstupy Mikrokontrolér obsahuje celkem čtyři vstupně/výstupní brány po 8-mi vývodech. Celkem tedy 32 vstupně/výstupních vývodů. Všechny vývody mají tzv. Read-Modify-Write funkcionalitu, takže pomocí příslušných instrukcí (SBI, CBI) lze měnit nastavení libovolného vývodu, aniž bychom ovlivnily ostatní. Všechny vývody jsou mimo jiné vybaveny vlastním pull-up rezistorem, který lze kdykoliv odpojit nebo se mohou odpojit všechny pull-up rezistory najednou bitem PUD v registru SFIOR. Bližší informace jsou uvedeny v literatuře [1] a [5]. Každá vstupně/výstupní brána je vybavena třemi registry: DDRx, PORTx a PINx. DDRx určuje směr toku dat každého vývodu příslušné brány. Pokud je příslušný bit nastaven na log.1, bude příslušný vývod nastaven jako výstup. - 13 -

Registr PORTx nastavuje na příslušné bráně a vývodu výstupní logickou úroveň, pokud je příslušný vývod konfigurován jako výstup. Pokud je vývod konfigurován jako vstup, určuje PORTx zda je (log.1) nebo není (log. 0) připojen pull-up rezistor k tomuto vývodu. Pomocí registru PINx se čte aktuální stav na jednotlivých branách, respektive vývodech. Tento registr je vždy v následujícím strojním cyklu synchronizován s registrem PORTx, takže výstupní úroveň lze kontrolovat pomocí registru PINx. Pokud je vývod nastaven jako vstup, synchronizace s PORTx nefunguje, protože PORTx v takovém případě určuje, zda je nebo není připojen pull-up rezistor, jak již bylo řečeno. Mikrokontrolér obsahuje řadu integrovaných periferních zařízení a proto většina vstupně/výstupních vývodů má dvojí funkci. Může sloužit jako obecný vstupně/výstupní vývod nebo jako vstup či výstuppro některou integrovanou periférii. Funkce příslušného vývodu je vždy určena řídícím registrem dané periférie. Pokud je daná periférie vypnutá, lze vývody použít libovolně. Na obr. 3.3 je zobrazeno vnitřní zapojení jednoho vývodu brány. Obr. 3.3 vnitřní zapojení jednoho vývodu brány - 14 -

3.2.4 SPI sběrnice SPI je vysokorychlostní sběrnice, která se používá pro komunikaci mezi mikrokontrolérem a periferním zařízením. Mikrokontrolér je vybaven plně samostatným rozhraním SPI sběrnice, tzn. že o provoz na sběrnici se mikrokontrolér vůbec nestará. Samozřejmě detekuje příslušná přerušení pro obsluhu SPI sběrnice. Základní vlastnosti: plný duplex, třívodičový synchronní přenos dat, mikrokontrolér může být Master nebo Slave, max. přenosová rychlost až 8 Mb/s, příznaky konce a kolize přenosu. SPI sběrnice je založena na komunikaci mezi nadřazeným Master obvodem a podřazeným Slave obvodem. Mikrokontrolér může pracovat jako Master i jako Slave. Oba módy se využívají. Mód Slave se používá při programování FLASH paměti, kdy programátor je Master. V ostatních případech, což je komunikace s SD kartou, pracuje mikrokontrolér jako Master. Ke komunikaci se používají tři vodiče: MOSI (Master Output Slave Input), MISO (Master Input Slave Output) a SCK (hodinový signál). Čtvrtý vývod SS (Slave Select) je použit pokud mikrokontrolér pracuje jako Slave a tento vývod slouží k jeho aktivaci. Pokud je mikrokontrolér v Master módu, lze tento vývod použít k výběru Slave obvodu. V tomto případě se tímto vývodem aktivuje SD karta. Na obr. 3.4 lze vidět standardní propojení Master Slave. Obr. 3.4 propojení Master - Slave K řízení SPI sběrnice slouží tři registry: SPCR, SPSR a SPDR. SPCR je řídící registr, ve kterém se nastavuje rychlost SPI sběrnice a formát přenosu. SPSR stavový registr, ve kterém jsou příznaky dokončení a kolize přenosu. - 15 -

Poslední registr SPDR je datový. Do tohoto registru se vkládají data pro vysílání a odebírají se z něj přijatá data. Podrobný popis registrů a celé SPI sběrnice je obsažen v literatuře [1] a [5]. 3.2.5 Rozhraní RS-232 Toto rozhraní se používá pro komunikaci mezi inerciální jednotkou a zapisovačem a také slouží k přenosu dat mezi zapisovačem a PC. V obou případech jde o asynchronní přenos. Základní vlastnosti: plný duplex, synchronní i asynchronní režim, velký rozsah rychlostí, generátor parity a hardwarové testování parity pro přijímač, detekce ztráty znaku, detekce chyby rámce, tři nezávislá přerušení (odvysílání znaku, příjem znaku a vyprázdnění vysílacího registru). Rozhraní se skládá ze tří klíčových bloků: generátor hodin, vysílač a přijímač. Rychlost sériového rozhraní je závislá na generátoru hodin, který dodává potřebný synchronizační signál. Pro nastavení rychlosti se používá registr UBRR. 16-ti bitový registr, který je rozdělen na dva 8-mi bitové registry UBRRH a UBRRL. K oběma registrům se musí přistupovat samostatně. Následující rovnicí (3.1) se stanoví hodnota UBRR na základě zvolené rychlosti. f UBRR = 16* 0 f BR 1 (3.1) kde: f 0 hodinový signál mikrokontroléru f BR UBRR frekvence hodinového generátoru, odpovídá přenosové rychlosti v b/s výsledný obsah registru - 16 -

Rychlost sériového rozhraní lze dvojnásobně zvýšit pomocí bitu U2X v registru UCSRA. I bez bitu U2X lze dosáhnout rychlosti 230 400 b/s. Osobní počítače však disponují sériovým rozhraním s max. rychlostí 128 000 b/s, proto se v zapisovači používá 115 200 b/s jako maximální rychlost sériového rozhraní. Pro nastavení a řízení sériového rozhraní se používá pět registrů: UDR, UCSRA, UCSRB, UCSRC a UBRR. Registr UDR slouží jako datový registr pro vysílač i přijímač. Registry UCSRA, UCSRB a UCSRC slouží k nastavení vlastností sériového rozhraní (parita, počet stop bitů apod.) a obsahují příznaky chyby rámce, ztráty rámce atd. Poslední 16-ti bitový registr UBRR slouží k nastavení rychlosti rozhraní. Podrobný popis sériového rozhraní lze najít v literatuře[1]a[5]. 3.2.6 Časovač Časovač 1 je zde využit jako měřič času. S jeho pomocí se měří časový interval mezi dvěma odměry. Základní vlastnosti: 16-ti bitový čítač/časovač, dvě nezávislé jednotky OC (Output Compare), normální režim, CTC režim, několik PWM režimů, režim čítače vnějších událostí, čtyři nezávislé zdroje přerušení. Kromě funkce jako měřič času, se využívá také k detekci uplynutí TimeOut intervalu. TimeOut interval slouží jako záchranná brzda, která ukončí aktuální činnost zapisovače. Pokud data z jednotky nebo z PC nedorazí do uplynutí TimeOut intervalu, bude operace ukončena. Pokud by nebyl TimeOut interval použit, zapisovač by neustále čekal na příjem dat a zacyklil by se v nekonečné smyčky, ze které by se dostal pouze resetem. Jak již bylo řečeno časovač se používá k měření času mezi dvěma odměry. Pracuje v normální režimu a využívá se pouze detekce přetečení. Když se časovač naplní, nuluje se a pokračuje dál v čítání. Při naplnění se však generuje přerušení, které indikuje uplynutí intervalu TimeOut. Pokud ovšem proběhne přijetí dat z jednotky nebo z PC v pořádku, časovač se zastaví. Jeho znovuspuštění závisí na konkrétní zvolené funkci zapisovače. - 17 -

Řídící, stavové a datové registry jsou: TCCR1A, TCCR1B, TCNT1, OCR1X, ICR1, TIMSK a TIFR. Registry TCCR1A a TCCR1B slouží k nastavení vlastností čítače (zdroj signálu, směr čítání apod.). Registr TCNT1, 16-ti bitový, obsahuje aktuální hodnotu čítače. OCR1X a ICR1 jsou registry pro jednotky Output Compare a Input Compare. Obsah těchto registrů se neustále porovnává s obsahem TCNT1 a po dosažení shody, dojde k vyvolání přerušení, pokud je povoleno. Poslední dvojce registrů TIMSK a TIFR slouží k nastavení masky přerušení čítače a příznaků přerušení čítače. Tyto dva registry jsou společné pro všechny čítače/časovače v mikrokontroléru. Časovač 1 disponuje předděličkou. Použití předděličky je nutné, protože se musí měřit relativně dlouhé časové úseky. Předdělička má několik možnosti nastavení a pro lepší synchronizaci, se před začátkem čítání resetuje. Nastavení se provádí v registru TCCR1B. Podrobný popis časovače, nastavení a jeho možnosti jsou uvedeny v literatuře [1] a [5]. 3.2.7 Reset Mikrokontrolér disponuje několika zdroji resetu: reset po připojení napětí (Power-on reset), vnější reset aktivován pinem RESET, Watchdog reset nastane při vypršení periody obvodu WDT, reset při poklesu napájení (Brown-out reset), JTAG AVR reset vyvolán rozhraním JTAG. Nejvíce používán je Power-on reset. Tento reset se uplatní při startu mikrokontroléru, kdy obvod Power-on reset resetuje mikrokontrolér do doby než napětí zcela naběhne. Důležitou součástí tohoto obvodu je vnitřní časovač, který prodlužuje reset mikrokontroléru po naběhnutí napětí. Po ukončení intervalu vnitřního časovače, začne mikrokontrolér vykonávat program. Dalším nejpoužívanějším resetem je vnější reset, pomocí kterého může mikrokontrolér resetovat obsluha. Vnější reset se využívá také při programování, kdy programátor na začátku programování mikrokontrolér nejprve resetuje. Využívá ho také Resetovací obvod, který je popsán v kapitole 3.8. - 18 -

Watchdog reset slouží ke kontrole správného běhu programu. Tento obvod je sestaven z čítače, který čítá jednotlivé programové kroky. Pokud tento čítač přeteče, vyvolá se reset mikrokontroléru a program začne opět běžet od začátku. Z toho vyplívá povinnost, při správném běhu programu občas provést reset Watchdog Timer. K tomu slouží instrukce WDR. Tento resetovací obvod lze samozřejmě speciální sekvencí vypnout hned na začátku programu, což je zde provedeno. Watchdog reset se uplatní hlavně během ladění programu, kdy se mikrokontrolér může dostávat do různých nepředpovidatelných stavů. Brown-out reset hlídá napájecí napětí mikrokontroléru. Pokud napětí poklesne pod nastavenou hodnotu, výchozí hodnota je U BOT = 2, 7 V (při naprogramované propojce BODLEVEL je U BOT = 4, 0 V ), dojde k resetu mikrokontroléru. Detektor podpětí vykazuje jistou hysterezi, asi 50 mv, aby se zabránilo zbytečným aktivacím resetu při mírném poklesu napětí. Po aktivaci resetu, se čeká než se napětí opět vyrovná na správnou hodnotu a poté se spustí zpožďovací interval, který prodlouží vnitřní reset mikrokontroléru.. Detektor podpětí reaguje pouze na taková podpětí, která trvají déle než 2 μs. JTAG AVR reset se zde nevyužívá, protože se nepoužívá rozhraní JTAG. Podrobný popis všech funkcí resetovacích obvodů lze najít v literatuře [1] a [5]. 3.3 Programátor Programátor mikrokontroléru je součástí vývojového kitu USBmegaKIT, kterýbyl využit při vývoji zapisovače. Tento vývojový kit lze k PC připojit pomocí USB a přiloženou aplikací USBmegaKIT.exe lze mikrokontroléru naprogramovat FLASH paměť, E 2 PROM paměť a nastavovat propojky. Program USBmegaKIT.exe je uložen na přiloženém CD, v adresáři programy. Schéma programátoru, vývojového kitu, je v příloze IV. Programátor používá ke komunikaci přes USB konvertor FT232BM (IO 1 ), který provádí konverzi USB RS-232. Jako řídící obvod je použit mikrokontrolér AT89S52 (IO 3 ). Použití dalšího mikrokontroléru AT89S52 prořízení programování je nutné. Tato nutnost vychází ze způsobu programování mikrokontroléru sériovým downloadem. Ten vyžaduje aby data přicházely sériově po SPI sběrnici. AT89S52 zde slouží v podstatě jako převodník mezi RS-232 SPI. AT89S52 mimo to řídí rychlost programování a přizpůsobuje tedy obrovskou rychlost USB rozhraní na maximální možnou rychlost SPI sběrnice mikrokontroléru. Po připojení vývojového kitu k USB proběhne inicializace konvertoru FT232BM aaž po jeho správné inicializaci, připojí konvertor napětí na oba mikrokontroléry (AT89S52 a - 19 -

ATmega16 (IO 4 )). Zapnutí celého vývojového kitu (programátoru) je signalizováno LED diodou D 1, viz. příloha IV. Zapojení programátoru se využívá v zapisovači pro nahrání firmwaru bez použití speciálního programátoru. Schéma programátoru v zapisovači, viz. příloha VI., je stejné jako schéma vývojového kitu v příloze IV. Vzapisovači chybí zdroj referenčního napětí, který je tvořen IO 5 a přilehlými součástkami. Pro správnou funkci programátoru, se musí od sběrnice SPI, při programování, odpojit zařízení k ní normálně připojené. Fyzicky se musí odpojit rozhraní SD karty. To se provede sadou přepínačů SW1 a SW2 umístěných přímo na zapisovači. Aby se nemusel při programování používat externí zdroj pro zapisovač, jezde propojka J1, která připojí zapisovač na napájení USB. Po ukončení programování se propojka rozpojí, aby se zbytečně nenapájely nepoužívané obvody programátoru. Podrobný popis programátoru (vývojového kitu) je uveden v literatuře [3]. Potřebné programy, ovládače a katalogové listy jsou uloženy na přiloženém CD v adresářích programy a datasheets. 3.4 SD karta SD karta je připojena k mikrokontroléru přes SPI sběrnici, kde mikrokontrolér je Master a SD karta je Slave. SD karta pracuje s napětím 3,3V, mikrokontrolér a ostatní periférie používají k napájení 5 V. Z tohoto důvodu je nutné provést napěťové přizpůsobení 5V logiky na 3,3V. Log.0 při 5 V vyhovuje i log.0 při 3,3 V. Problém nastává u log.1, která může být rovná U CC,tedy5 V. Naopak log.1 při 3,3 V stále vyhovuje i log.1 při 5 V. Jedinou starostí, je snížit napětí pro vstupy SD karty. Úprava napětí se provádí pomocí obvodu 74HC4050, 6xCMOS budič. Obvod je napájen ze zdroje napětí 3,3 V. Na obr. 3.5 je schéma zapojení SD karty k SPI sběrnici mikrokontroléru. - 20 -

Obr. 3.5 připojení SD karty Po připojení se SD karta musí restartovat, aby přešla do SPI módu. Resetovacím příkazem karta přejde pouze do nečinného stavu, kde jsou povoleny pouze některé příkazy. Těmito příkazy se vyčtou z SD karty potřebné informace ke zjištění, zda je SD karta kompatibilní s rozhraním, ke kterému je připojena. Důležitá je zde napěťová kompatibilita. Tu zajišťuje obvod 74HC4050. Proto nebrání nic tomu, aby karta mohla přejít do operačního módu. Kromě napěťové kompatibility se testuje, zda připojená karta je skutečně SD karta nebo jestli je karta označená HC, tedyhigh Capacity. V obou případech generuje zapisovač chybu a kartu odmítne. HC karty se odmítají z důvodů vysoké kapacity, kdy se s kartou musí komunikovat pomocí větších datových bloků, což by vyžadovalo větší paměť RAM. Karta používá při komunikaci CRC kontrolní kód. Tento kód je povinný pro SD mód, ale v SPI módu je ve výchozím stavu CRC kód vypnut. Pouze první příkaz, pro přepnutí do SPI módu, musí obsahovat CRC kód. Při komunikaci se musí dodržet správné pořadí vysílaných bitů, kdy jako první je posílán MSB a nakonec LSB. Všechny příkazy pro SD kartu mají stejný formát. Jejich délka je 6B. Těchto 6B obsahuje příkaz, parametr příkazu a CRC kód (v SPI módu se zde může vložit libovolná hodnota, pokud se CRC kód neaktivuje). Na obr. 3.6 je zobrazeno umístění jednotlivých částí příkazu v 6B. Obr. 3.6 formát příkazu pro SD kartu - 21 -

Pro komunikaci s kartou se používá pouze několik nejjednodušších příkazů, které jsou uvedeny v následujícím výčtu: CMD0 provede reset karty CMD8 ověření napěťové kompatibility a určení zda je karta ver. 2.0 nebo ver. 1.x CMD55 příkaz říká kartě, že bude následovat aplikační příkaz ACMD41 přepne kartu do operačního módu a zjistí zda je karta HC nebo ne CMD58 čtení OCR registru CMD17 čtení bloku dat CMD24 zápis bloku dat Karta na každý přijatý příkaz reaguje odpovědí. Nejčastější odpovědí je R1. Pokud jsou všechny bity v přijaté odpovědi nulové, byl příkaz přijat a zpracován. Na obr. 3.7 je zobrazena odpověď R1 a význam jednotlivých bitů. Obr. 3.7 formát odpovědi R1 Vysvětlení jednotlivých chyb: in idle state karta je v nečinném stavu a je spuštěn inicializační proces erase reset mazací sekvence byla přerušena z důvodu příjmu příkazu pro přerušení mazání illegal command byl přijat neznámý příkaz com crc error špatný CRC kód posledního příkazu erase sequence error chyba v mazací sekvenci address error adresa v posledním příkazu byla špatně zarovnána na délku bloku parameter error parametr příkazu (adresa, délka bloku atd.) je mimo povolený rozsah - 22 -

Ostatní odpovědi jsou mutací odpovědi R1. Prvních osm bitů je vždy totožných s R1 a poté následují specifické bity pro danou odpověď. Podrobnosti o odpovědích SD karty jsou uvedeny v literatuře [6]. Při čtení z karty, může karta poslat odpověď Data Error Token, která znamená, že při čtení došlo k chybě. Na obr. 3.8 je zobrazen tvar Data Error Token s popisy chyb. Obr. 3.8 formát Data Error Token Kromě příkazů a odpovědí se vysílají hlavně data bloky. Velikost těchto data bloků je pevně stanovená na výchozí hodnotu 512B. Karty HC mohou mít tuto hodnotu větší. Data blok je složen celkem z 515B, první bajt je Start Block, který má tvar 11111110, potom následuje 512 datových bajtů a poslední dva bajty jsou tvořeny CRC kódem. Po přijetí data bloku odpoví karta bajtem Data Response Token. Tento bajt obsahuje kód, kterým se zjistí, zdabyladata přijata a zapsána nebo ne. Na obr. 3.9 je zobrazen tvar Data Response Token bajtu a v tab. 3.1 jsou uvedeny možné stavy tohoto bajtu. Obr. 3.9 formát Data Response Token Tab. 3.1 význam bitů Status Status kód Význam 010 data byla přijata 101 data zahozena, špatný CRC kód 110 data zahozena, chyba zápisu Podrobná dokumentace o SD kartě je v literatuře [6]. Zde je kompletní seznam všech příkazů, formátu odpovědí apod. - 23 -

3.5 LCD Pro komunikaci s obsluhou je zapisovač vybaven jednořádkovým LCD displejem se 16-ti znaky. Tento displej obsahuje jako řídící obvod mutaci obvodu HD44780 od firmy Hitachi. Konkrétně použitý displej obsahuje obvod S6A0069 nebo ST7066, což jsou stejné obvody, ale každý od jiného výrobce. Displej má celkem 16 vývodů, jejichž význam popisuje tab. 3.2. Jak již bylo řečeno v kapitole 2.4, je možné s displejem komunikovat čtyřmi datovými bity. Tab. 3.2 vývody LCD a jejich význam Číslo vývodu Signál Funkce 1 GND Zem (0V) 2 UCC Napájecí napětí (4,75 až 5,25V) 3 U0 Nastavení kontrastu displeje 4 RS Příkaz (0), data (1) 5 R/ W Čtení (1), zápis (0) 6 E Vstup povolení 7 DB0 Datový bit 8 DB1 Datový bit 9 DB2 Datový bit 10 DB3 Datový bit 11 DB4 Datový bit 12 DB5 Datový bit 13 DB6 Datový bit 14 DB7 Datový bit 15 A Anoda podsvěcovací LED 16 K Katoda podsvěcovací LED Na obr. 3.10 je zobrazeno připojení LCD k mikrokontroléru na bránu PA. Tranzistor Q 4 slouží k ovládání podsvícení displeje a trimrem R 10 lze nastavit kontrast displeje, jenž je silně ovlivněn velikostí napájejícího napětí. Při připojení zapisovače k USB, kde se napětí pohybuje okolo 4,8 V až 5 V, podle zatížení USB, je kontrast displeje výrazně nižší, než při použití externího zdroje. Při komunikaci displej rozeznává zda se posílá příkaz nebo data pomocí signálu R/S. S displejem se zde komunikuje pouze jednosměrně, nečtou se žádná data, proto je signál - 24 -

R / W trvale připojen na log.0. Pro povolení komunikace s displejem se musí nejdříve nastavit signál E na log.1. Tento signál povoluje a zakazuje veškerou komunikaci. Při komunikaci se nejdříve nastaví signál R/S a poté se nastaví signál E na log.1. Nyní je displej připraven přijmout data. Nastaví se datové bity DB7 až DB4 a jakmile se signál E vrátí na log.0, jsou data potvrzená a přijatá. Obr. 3.10 schéma připojení LCD k mikrokontroléru Displej disponuje svou vlastní sadou znaků, které zobrazuje. Kódy jednotlivých znaků odpovídají kódům ASCII tabulky. Displej dokáže zobrazit malou a velkou abecedu, číslice a speciální znaky (!,?, $, # atd.). Obsahuje také část paměti, do které lze nahrát až 8 vlastních znaků. Tato funkce se zde však nevyužívá. V tab. 3.3 jsou popsány příkazy, které lze využít při komunikaci s displejem. Podrobnější popis všech funkcí a možností řadiče HD44780 a jeho mutací lze nalézt v literatuře [7], popřípadě [1]. - 25 -

Tab. 3.3 seznam příkazů pro LCD Příkaz/data RS Data bit Čas 7 6 5 4 3 2 1 0 provedení Vymaž displej 0 0 0 0 0 0 0 0 1 1,64 ms Návrat na začátek 0 0 0 0 0 0 0 1 X 1,64 ms Volba režimu 0 0 0 0 0 0 1 I / D S 40 μs Zapni/vypni displej 0 0 0 0 0 1 D C B 40 μs Posun zobrazení/kurzoru 0 0 0 0 1 S / C R / L X X 40 μs Nastavení komunikace 0 0 0 1 DL N 0 X X 40 μs Nastavení adresy CGRAM 0 0 1 adresa CGRAM 40 μs Nastavení adresy DDRAM 1 1 adresa DDRAM 40 μs Zápis dat do CG/DDRAM 1 data pro CG/DDRAM 40 μs Vysvětlivky k tab. 3.3. X libovolná hodnota I/ D inkrementace (1), dekrementace (0) S režim displeje (0 normální režim, 1- kombinovaný posun displeje) D displej zapnut (1), vypnut (0) C zobrazování kurzoru zapnuto (1), vypnuto (0) B blikání kurzoru zapnuto (1), vypnuto (0) S/ C posun displeje jsou-li data zapsána (1), posun kurzoru jsou-li data zapsána (0) R/ L posun doprava (1), doleva (0) DL 8-mi bitová komunikace (1), 4 bitová komunikace (0) N dvařádky (1), jeden řádek (0) 3.6 Klávesnice Klávesnice je zde použitá pro obsluhu zapisovače. Skládá ze tří tlačítek, jejichž význam je, OK a. Tlačítka a slouží pro výběr jednotlivých položek a tlačítko OK má funkci potvrzení. Tlačítka musí být ošetřena proti zákmitům. Proto každé tlačítko disponuje monostabilním klopným obvodem. Mikrokontrolér je programován tak, aby reagoval na stisk tlačítka přivedením log.0. Monostabilní klopný obvod vytvořený pomoci časovače CM555, má při stisku tlačítkanavýstupulog.1. Proto jsou na výstupech časovačů použity navíc invertory. Časová konstanta klopného obvodu je součástkami nastavena cca. na 250 ms. Je použit rezistor 47 kω a podle následující rovnice (3.2) je stanovena kapacita kondenzátoru: T T = 1,1* R * C C = C = 4,7μF 1,1* R (3.2) kde: T časová konstanta klopného obvodu, T = 250 ms R rezistor 47 kω C kapacita elektrolytického kondenzátoru v μf - 26 -

Aby se zabránilo stisku více tlačítek najednou, jsou časovače CM555 navzájem propojeny logickou sítí, která zajišťuje, aby při stisku libovolného tlačítka došlo k blokaci ostatních tlačítek, vždy dva časovače se resetují signálem RESET. Tlačítka jsou přímo připojena ke vstupně/výstupní bráně PD, přesněji na vývody PD2, PD3 a PD4. Pro zjištění zda bylo nebo nebylo stisknuto tlačítko se nepoužívá přerušení, ale mikrokontrolér skenuje tlačítka jen pokud se očekává, že se musí tlačítko stisknout. Např. při pohybu v MENU se po stisku tlačítka na displeji zobrazí příslušná volba a mikrokontrolér čeká, které tlačítko bude stisknuto dále. Na obr. 3.11 je zobrazeno zapojení jednoho tlačítka (bez logické sítě), kompletní schéma je v příloze VI. Obr. 3.11 schéma zapojení tlačítka 3.7 RS-232 Mikrokontrolér je vybaven vlastní sériovou linkou RS-232. Ale je napájen 5 V aaby se mohl připojit k PC nebo k inerciální jednotce, na výstupu musí být správné napěťové úrovně platné pro protokol RS-232. Pro převod napětí na správné napěťové úrovně v obou směrech se použil obvod MAX232. Jde o standardní převodník pro RS-232, který byl navržen právě pro takovéto použití. Obsahuje dvě sady vysílač přijímač, takže jeden obvod lze použít pro dvě sériová rozhraní RS-232. Výhodou obvodu je jeho cena, jednoduchá aplikace a jedno napájecí napětí 5 V. Nevýhodou je, že se musí použít externí elektrolytické kondenzátory. V provedení SMD je však i tato nevýhoda bezvýznamná. Konektor sériové linky zapisovače je přizpůsoben k přímému připojení k inerciální jednotce, z jejíhož konektoru se odebírá také napájecí napětí pro zapisovač. Aby se zapisovač mohl připojit k PC, musí se připojit pomocí kříženého kabelu, který je vybaven i napájecím konektorem pro zapisovač, viz. schéma zapisovače příloha VI. - 27 -

3.8 Resetovací obvod Mikrokontrolér je vybaven vlastní Power-on reset funkcí, ale pro jistotu je zapisovač ještě doplněn samostatným resetovacím obvodem, který hlídá správnou úroveň napájejícího napětí. Je použit obvod TL7705, který je pro tuto funkci navržen. Jeho funkce je stejná jako u Power-on reset funkce. Obvod však dokáže eliminovat překmity, které mohou nastat při připojení napájejícího napětí. Na obr. 3.12 je schéma jeho zapojení. Obr. 3.12 schéma zapojení resetovacího obvodu TL7705 3.9 Napájení Zapisovač lze napájet z libovolného stejnosměrného zdroje napětí, který dodává alespoň napětí 6 V a je schopen dodat výkon alespoň 2 W. Zapisovač je osázen dvěma stabilizátory napětí, 78L05 a LE33. 78L05 slouží ke stabilizace hlavního napětí 5 V pro mikrokontrolér a ostatní periférie. LE33 dodává 3,3 V pro SD kartu a budič 74HC4050. Na obr. 3.13 je zobrazeno schéma napájecí části. Není zde použit žádný samostatný napájecí konektor. K napájení se používá přímo konektor CANNON 9 V 90, který slouží také jako komunikační konektor pro RS-232 rozhraní, viz schéma zapojení příloha VI. Obr. 3.13 napájecí část zapisovače - 28 -

4. Software 4.1 Firmware Program pro mikrokontrolér byl napsán převážně v Assembleru. Pouze pro naprogramování různých výpočtů byl použit jazyk C. Kód Assembleru byl psán v programu AVR Studio 4, který je dodáván firmou Atmel přímo k jejím mikrokontrolérům z rodiny AVR. Obsahuje vlastní debuger, který byl použit k částečnému odlaďování výsledného programu. Většina odlaďování programu se prováděla pomocí vkládání přídavných funkcí přímo do programu mikrokontroléru (různé výpisy adres a hodnot na displej a následná analýza chyb). Instalační program programu AVR Studio 4 je k dispozici na přiloženém CD, v adresáři programy. V jazyce C se vytvářely pouze výpočty, které musí mikrokontrolér provádět. Jsou to hlavně výpočty adres sektorů, či výpočty důležitých adres pro správu souborového systému FAT. Pro programování v C se použil program CodeVisionAVR C Compiler. Ten umožňuje automatické generování kódu pro mikrokontroléry AVR. Každý výpočet, který byl napsán vjazycec,se převedl do Assembleru a vložil se do původního kódu v AVR Studiu. Díky této funkci se mohlo zůstat u programování v Assembleru. Celý program pro mikrokontrolér je rozdělen celkem do 21 souborů. Program a jeho soubory jsou uloženy na přiloženém CD, v adresáři firmware. V každém souboru je část programu, která se věnuje určité oblasti. Následuje seznam jednotlivých souborů a jejich stručný popis: final.asm hlavní program celého projektu, obsahuje definice proměnných a startovací proces, který obsahuje celou inicializační sekvenci. Na konci je seznam souborů, které se dále k tomuto hlavnímu souboru připojují při překladu. LCD.INC funkce pro ovládání LCD. Jsou zde obsaženy všechny texty, které se tisknou na LCD. CEKEJ.INC podpůrné funkce, které vytvářejí čekací smyčky. Ty se využívají např. při výpisech na LCD nebo v některých inicializačních procesech. TL.INC funkce pro čtení stavu tlačítek. KL.INC soubor obsahuje funkci pro zadávání textu na displej. Využívá se při vytváření nového souboru. RS232.INC funkce pro ovládání rozhraní RS-232. - 29 -

MENU.INC tento soubor patří mezi nejdůležitější. Je v něm celé MENU zapisovače, včetně funkcí pro pohyb v něm. Obsahuje hlavní částí jednotlivých nabídek z Menu. ODESLI.INC funkce pro odeslání clusteru do PC. ZAPIS.INC obsahuje obslužnou funkci pro přerušení sériové linky a funkce pro zápis dat na SD kartu. SPI_SD.INC inicializační funkce pro SPI rozhraní a pro SD kartu. SD_READING.INC funkce pro čtení sektoru z SD karty. SD_SENDING.INC funkce pro odeslání sektoru do PC, doplnění funkce v souboru ODESLI.INC. SD.INC podpůrné funkce pro ovládání SD karty. SD_FAT_INI.INC inicializační funkce pro FAT, včetně funkcí pro vyhledávání volných clusteru ve FAT a volných položek v ROOT adresáři. SD_VYPOCTY_C.INC výpočty generovány programem CodeVisionAVR. SD_ROOT.INC funkce pro zápis do ROOT adresáře. SD_WRITING.INC funkce pro zápis sektoru na SD kartu. SD_FAT.INC funkce pro zápis do FAT tabulky. TIMER.INC inicializace časovače a funkce obsluhy přerušení časovače. EEPROM_INI.INC inicializační a kontrolní funkce pro E 2 PROM. INERCE.INC funkce pro obsluhu inerciální jednotky. 4.1.1 Struktura programu Vývojový diagram programu pro mikrokontrolér je na obr. 4.1. Při startu programu se provádí počáteční nastavení a inicializace jednotlivých periférií. Zakáže se globální přerušení a Watchdog Timer, smaže se RAM, podle potřeb se nastaví V/V brány a provedou se inicializační sekvence. Postupně se provedou následující inicializace: LCD, SPI, SD karta, FAT, EEPROM, RS-232 a TIMER. Poúspěšné inicializaci se skočí do hlavního MENU zapisovače. Odtud je možné zapisovač ovládat klávesnicí. NOVE MERENI provede se založení nového souboru a inicializace inerciální jednotky. Povolí se přerušení pro přijímač RS-232 a časovač, který se používá pro měření času mezi odměry a hlídá interval TimeOut. Spustí se inerciální jednotka a začne měřici cyklus. Pokud dojde k přerušení od přijímače RS-232, znamená to že inerciální jednotka - 30 -

posílá nová data. Obsluha přerušení přijímače RS-232 provede čtení dat z jednotky, výpočte se zkrácený zápis a výsledek se uloží do proměnné VYSLEDEK. Obsluha přerušení se ukončí avrátísezpět do hlavního programu. Ten provádí kontrolu, zda neuplynul TimeOut a zda nebylo zmáčknuto během měření tlačítko OK, kterým se měření ukončuje. Pokud k ani jedné z událostí nedošlo, pokračujesev měřicím cyklu. Po ukončení měřicího cyklu se zakáže přerušení přijímače RS-232 a časovače, uloží se zbylá data a vrací se zpět do MENU. ODESLAT MERENI provede se výběr měření, které se bude odesílat do PC, zapne se přerušení pro TimeOut ačeká se na přijetí bajtu 0xF0. Pokud se bajt nepřijme do uplynutí TimeOut, ukončí se odesílání návratem do MENU. Po přijetí bajtu 0xF0 se odešle proměnná SIZE a potom vybrané měření. Po ukončení odesílání se provede návrat do MENU. STAV PAMETI zobrazí volnou kapacitu SD karty v kb. Návrat do MENU se provede po stisku tlačítka OK. SMAZAT MERENI položka submenu MAZANI. Vybere se měření a volba se potvrdí tlačítkem OK. Měření se smaže, aktualizuje se informace o volném místě na SD kartě a provede se návrat do MENU. SMAZAT PAMET položka submenu MAZANI. Po potvrzení volby tlačítkem OK, se smaže ROOT adresář a FAT tabulka. Po aktualizaci volného místa se vrací zpět do MENU. RYCHLOST COM položka submenu NASTAVENI. Vybere se nová rychlost sériové linky a potvrzením hlášky ULOZIT? se volba uloží do E 2 PROM. Následuje návrat do MENU. VZORKOVANI položka submenu NASTAVENI. Vybírá se nová vzorkovací frekvence, potvrzením hlášky ULOZIT? se volba uloží do E 2 PROM a vrací se do MENU. RESTART provede se softwarový restart zapisovače. - 31 -