Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...
Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...
Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...
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