Arkitektur og operativsystem (dArkOS)


Besvarelse af ugeopgave, uge 46

Per Abrahamsen, 20001358, 3,
Søren S Munk, 20001614, 3,
Mads Peter Lindberg, 20001990, 3.

www.daimi.au.dk/~smunk/dArkOS/uge46


Ugeopgavens første program er bragt til at køre. Under kørsel viste det følgende værdi i LCD: 75, bit representationen for 75 er 01 00 10 11 og iflg. RCX vejledningen er Port A bits 6-7 dvs 01 som er onPos. Port B er bits 3-2 altså 10 som er onNeg og Port C er bits 0-1 altså 11 som er brake. Bits 4-5 bruges ikke af os. .

Der blev sat tre lamper på de tre udgange. Følgende program:

#include "RCX_RTE.h" #include "OutputPorts.h" /* Buttons */ #define port4_addr 0xffb7 #define port4 *((volatile byte *) port4_addr) #define OnOff ! ( port4 & ( 1 << 1 ) ) #define msCount 500 void delay(int16 ms) { int16 i; while( ms > 0){ for(i=0; i<msCount; i++); ms--; } } void _start(void) { int16 i; int16 t; i=0; t=0; lcd_show_icon(LCD_WALKING); while ( ! OnOff ) { delay(1000); i++;t++; if (t==3) {t=0;} if (i==4) {i=0;} if (i==0 || i==2) {PortA(OnPos);} else {PortA(Float);} if (t==0) {PortB(OnPos);} else if (t==2) {PortB(Float);} if (i==0) {PortC(OnPos);} else PortC(Float); } RCX_Reset(); }

får lampe A til at være tændt i 1 sekund og slukket i 1 sekund, lampe B tændt i 2 sekunder og slukket i 1 sekund og lampe C tændt i 1 sekund og slukket i 3 sekunder.

Det andet program i ugeopgaven spiller en tone med en frekvens på 440 Hz. Tonen spilles i 0,227 sek. Kunne I få RCX til at spille kammertonen på 440 Hz ved at give parametre til SpeakerPlay Nej ikke bare ved parametre, men ved at ændre i Speaker.h kunne vi ramme ret præcist. Vi ændrede BusyPauseMS fra i < 660 til i < (660/4/2) da vi ikke kan regne med kommatal måtte vi forlænge vores periode på 2.27 ms til 9 (ved at gange med 4) nu sender vi altså en hel periode til SpeakerPlay altså skal vi også gang med 2.

Man kan få et lys og lyd "show" frem på RCX ved at køre følgende program:

#include "RCX_RTE.h" #include "Speaker.h" #include "OutputPorts.h" /* Buttons */ #define port4_addr 0xffb7 #define port4 *((volatile byte *) port4_addr) #define OnOff ! ( port4 & ( 1 << 1 ) ) void _start(void) { int16 p; int16 i; SpeakerInit(); p=1; i=0; while ( ! OnOff ) { SpeakerPlay(p,5); SpeakerPlay(p*10,5); OutputPorts = p*10-i; while (i>3) { SpeakerPlay(i,5); i--; } p = ( p > 25 ) ? 1 : p+1; } RCX_Reset(); }

Vores program laver lykkehjulslyd og lyset følger på mystisk vis lyden.