deletions | additions
diff --git a/Appendix D: LAB2C-RTOS.c.tex b/Appendix D: LAB2C-RTOS.c.tex
index 3aec294..c8ecde8 100644
--- a/Appendix D: LAB2C-RTOS.c.tex
+++ b/Appendix D: LAB2C-RTOS.c.tex
...
#define SIGNAL_FREQ 50
#define DUTY_CYCLE 0.2
#define TIMER_COUNTER 350
#define TIMER_COUNTER_M (UBYTE)
((TIMER_COUNTER & 0x300) >> 2)
#define TIMER_COUNTER_L (UBYTE)
(TIMER_COUNTER & 0xFF)
#define DUTY_TIME (float)
DUTY_CYCLE / SIGNAL_FREQ
#define TIMER_SIG_COUNT (int)
(DUTY_TIME / TIMER_COUNTER * SYSTEM_CLOCK)
#define ON 1
#define OFF 0
#define LED 1
...
{
brdInit();
OSInit();
OSTaskCreate(TaskStart, (void *)0,
TASK_STK_SIZE, 10);
TimerSem = OSSemCreate(0);
OSStart();
}
...
{
output_level = OFF;
OSStatInit();
OSTaskCreate(TaskScreenUpd, (void *)0,
TASK_STK_SIZE, 11);
InitTimerInt();
DispStr(0, 12,
"#Tasks : xxxxx CPU Usage: xxxxx %");
DispStr(0, 13, "#Task switch/sec: xxxxx");
DispStr(0, 14, "<-PRESS 'Q' TO QUIT->");
for (;;) {
...
auto UBYTE err;
auto char display[128];
display[0] = '\0';
sprintf(display,
"Number of Timer B interrupts: xxxxx (x1000)");
DispStr(5, 2, display);
display[0] = '\0';
sprintf(display,
"Timer B overhead: xxxxx (xPCLK/16 cycles)");
DispStr(5, 4, display);
for (;;) {
OSSemPend(TimerSem, 0, &err);
...
sprintf(display, "%5d", display_int_count);
DispStr(35, 2, display);
display[0] = '\0';
sprintf(display,
"%5d", Timer_B_value - TIMER_COUNTER);
DispStr(23, 4, display);
}
}
...
if (!(TBCLR_status & 0x80) &&
((TBCLR_status ^ RdPortI(TBCLR)) & 0x80))
TBCMR_status = RdPortI(TBCMR)-1;
Timer_B_value =
(((int)TBCMR_status & 0xC0) << 2) + TBCLR_status;
if (int_count == TIMER_SIG_COUNT) {
output_level ^= ON;
digOut(LED, output_level);