29.07.2013 Views

Den Svævende Kugle, Dokumentation [pdf - sorenr.dk

Den Svævende Kugle, Dokumentation [pdf - sorenr.dk

Den Svævende Kugle, Dokumentation [pdf - sorenr.dk

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Den</strong> svævende kugle<br />

2.1 Brugerpanel<br />

22<br />

Opsætter længden på gennemsnitsbufferen<br />

Resetter afrundingsværdien<br />

Resetter returværdigen, som bruges<br />

til at udregne gennemsnittet.<br />

Opsætter for-løkken til at bladre hele<br />

gennemsnits bufferen igennem.<br />

Flytter gennemsnits værdierne i arrayet,<br />

så det altid er de sidste nye vi arbejder med.<br />

Summer værdigerne i bufferen sammen,<br />

til udregning af gennemsnittet.<br />

Afslutter for-løkken.<br />

ADMUX er Analog til Digital Multiplexer<br />

Selection der bestemmer hvordan og<br />

hvilken type signal der skal digitaliseres.<br />

ADC Control and Status Register A<br />

(Starter konverteringen)<br />

Venter på at konverteren bliver færdig.<br />

Færdiggøre konverteringen og<br />

resetter de brugte registre,<br />

undtagen ADCW(ADCH og ADCL)<br />

Returnere et signal<br />

til gennemsnitsbufferen<br />

der svare til 0-20 mm.<br />

Med 1/10 mm<br />

unsigned char laeseAD( unsigned char adc_input )<br />

Analog kanal<br />

gennemsnitAntal = 20<br />

afrunding=0<br />

returvaerdi = 0<br />

gennemsnitLaengde = gennemsnitAntal-1<br />

[Ellers]<br />

ADMUX=adc_input | ADC_VREF_TYPE<br />

ADCSRA|=0x40<br />

[Ellers]<br />

ADCSRA|=0x10<br />

gennemsnit[0]=(ADCW*2000.0)/1023.0<br />

returvaerdi+=gennemsnit[0]<br />

[gennemsnitLaengde>=1]<br />

[(ADCSRA & 0x10)==0]<br />

afrunding=((returvaerdi%(gennemsnitAntal))>=(0.5*gennemsnitAntal))<br />

return (returvaerdi/gennemsnitAntal)+afrunding<br />

<strong>Den</strong>ne AD konverter er blevet inspireret af Codevision<br />

Ingeniørhøjskolen ˚Arhus 2005<br />

Gruppe 3<br />

Program pakker der behøves:<br />

mega16.h //Registre til den valgte processer<br />

Variable:<br />

global unsigned char gennemsnit[20]<br />

-- gennemsnitLaendge<br />

10 bit AD konverter<br />

0 - 1023<br />

0,0 - 20,0mm<br />

gennemsnit[gennemsnitLaengde] = gennemsnit[gennemsnitLaengde -1]<br />

returvaerdi += gennemsnit[gennemsnitLaengde]<br />

Analog til Digital konverter reference spændings type<br />

<strong>Den</strong> nyeste værdi summeres til returværdien,<br />

for at udregning af gennemsnittet.<br />

Undersøger om der skal rundes op.<br />

Udregner gennemsnittet med<br />

en opløsning på 1/10 mm.<br />

og afrunding lægges til.<br />

Figur 22: Læser analog og konvertere til millimeter.

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

Saved successfully!

Ooh no, something went wrong!