27.09.2013 Views

Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...

Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...

Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.3.5.1 Tjeksum<br />

Data-blokk<strong>en</strong>e består som bek<strong>en</strong>dt af karakterer eller kommandoer. De er kodet jf. samme<br />

kodning som Code 128B, der svarer <strong>til</strong> ASCII, m<strong>en</strong> hvor de første 32 kontroltegn er fjernet.<br />

Dvs., at første tegn (på plads nul) er Space, hvilket giver i alt 96 karakterer med mulighed for<br />

kommandoer og egne tegn så som smilies og hjemmelavede symboler fra og med plads 96.<br />

Grund<strong>en</strong> <strong>til</strong> at tabell<strong>en</strong>s indhold flyttes, skyldes d<strong>en</strong> modulo-operation, som Code 128 anv<strong>en</strong>der<br />

<strong>til</strong> beregning af tjeksum, hvorved multiplikation med store tale undgås. Med <strong>en</strong> start-kommando<br />

(for nuvær<strong>en</strong>de ASCII-kode 96) gøres wavecardet klar <strong>til</strong> modtagelse af data. Tjeksumm<strong>en</strong><br />

beregnes ved at tage værdi<strong>en</strong> af start-kommando<strong>en</strong>, hvor<strong>til</strong> der lægges d<strong>en</strong> vægtede sum af<br />

hver <strong>en</strong>kelt karakter for <strong>til</strong> sidst at tage <strong>en</strong> modulo 96 af resultatet – hvor tallet svarer <strong>til</strong> start-<br />

kommando<strong>en</strong> eller rettere d<strong>en</strong> første karakter ud<strong>en</strong> for tabell<strong>en</strong>:<br />

I et eksempel på udregning af tjeksumm<strong>en</strong> for ordet ”Hej” vil man først tage start-kommando<strong>en</strong><br />

og lægge værdi<strong>en</strong> af føste karakter <strong>til</strong>, dernæst 2 gange værdi<strong>en</strong> af d<strong>en</strong> and<strong>en</strong> karakter og <strong>til</strong><br />

sidst 3 ganget med værdi<strong>en</strong> af tredje karkter. Stop-kommando<strong>en</strong> (i dette <strong>til</strong>fælde 97)<br />

medregnes ikke. Dette giver tallet 496, hvoraf man udfører <strong>en</strong> modulus-operation (altså finder<br />

rest<strong>en</strong> ved division) med tallet 96, hvilket giver, tjeksum-værdi<strong>en</strong>, 16. Udregning<strong>en</strong> ser altså<br />

således ud: Tjeksum =961⋅402⋅69 3⋅74mod 96=16<br />

En data-byte med tallet 16 er derfor indeholdt på ”Check”-plads<strong>en</strong> jf. figur 36 på side 38,<br />

hvorfor værdierne af de overførte bytes vil være: 96, 16, 40, 69, 74 og 97 for ordet ”Hej”.<br />

5.3.5.2 Lagring<br />

I <strong>microcontroller</strong><strong>en</strong> gemmes data i d<strong>en</strong>s<br />

interne EEPROM, der virtuelt er delt op i to<br />

blokke (kaldet banker – se illustration 39).<br />

Formålet med bankerne er at bevare gamle<br />

data ved modtagelse af nye, for at undgå<br />

at <strong>en</strong> ev<strong>en</strong>tuel fejl i dataoverførsl<strong>en</strong> resulterer i et ikke-funktionelt wavecard. Med <strong>en</strong> EEPROM-<br />

størrelse på 256 bytes (for PIC16F819) er der 128 bytes <strong>til</strong>rådighed per bank. De to første<br />

bytes i hver bank bruges dog <strong>til</strong> hhv. d<strong>en</strong> pågæld<strong>en</strong>de teksts længde samt tjeksum-byt<strong>en</strong>.<br />

Illustration<strong>en</strong> viser, at længd<strong>en</strong> af indholdet i bank 0 er på tre bytes efter check-byt<strong>en</strong> (aflæst<br />

på første plads i bank 0), hvilket betyder, at alt andet derefter ikke læses. Bank 1 er inaktiv,<br />

da d<strong>en</strong>nes første byte har værdi<strong>en</strong> 255 (FFh).<br />

5.4 Test<br />

Tjeksum =Kommando start ∑ i =1<br />

n<br />

i⋅Karakter i mod Kommando start<br />

Illustration 39: EEPROM-banker hvor Bank 0 er aktiv.<br />

Test af modtager<strong>en</strong> udføres med hjælp fra test-applett<strong>en</strong>, der følger et fast mønster, når d<strong>en</strong><br />

blinker med skiftevis højt (sort) og lavt (hvidt) signal, hvilket modtager<strong>en</strong> fortolker som hhv. 1 og<br />

42 Modtager

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!