Main Page | Modules | Data Structures | File List | Data Fields | Globals

main.c File Reference

#include "../include/beeos.h"
#include "../include/bctype.h"
#include "../include/bbit.h"
#include "../include/bstring.h"
#include "../include/bmalloc.h"
#include "../include/exec.h"
#include "../include/sci.h"
#include "../include/ect.h"
#include <stdarg.h>
#include "../include/bprintf.h"
#include "../include/asm/vectors.h"
#include "../include/asm/ports.h"

Include dependency graph for main.c:

Include dependency graph

Go to the source code of this file.

Functions

void lbdrv_chg (void)
void misc (void)
void btnscan_chk (void)
int _start (void)

Variables

bool toggle_scan_lk
uchar gbl_scani
uchar map_leds [8]
uchar map_btns [8]


Function Documentation

int _start void   ) 
 

Definition at line 60 of file main.c.

References ASM_CLI, ASM_SEI, ASM_SWI, COPCTL, DDRA, DDRB, DDRE, DDRH, DDRJ, DDRK, DDRM, DDRP, DDRS, DDRT, lk_bputs, lk_putchar, PERH, PERJ, PERM, PERP, PERS, PERT, PIEH, PIEJ, PIEP, PORTA, PORTB, PORTE, PORTK, PPSH, PPSJ, PPSM, PPSP, PPSS, PPST, PTH, PTJ, PTM, PTP, PTS, PTT, RDRH, RDRIV, RDRJ, RDRM, RDRP, RDRS, RDRT, RTICTL, ushort, WOMM, and WOMS.

00070 {   /* _start(): BeeOS cold-start execution entry point. */
00071 #ifndef HOSTED_BUILD
00072     ASM_SEI;
00073     RTICTL = 0x00;
00074     COPCTL = 0x00;
00075     _sp = (void *)0x3FFF;
00076     RDRIV = 0xFF;
00077     DDRA = 0x00;    PORTA = 0x00;
00078     DDRB = 0x00;    PORTB = 0x00;
00079     DDRE = 0x00;    PORTE = 0x00;
00080     DDRK = 0x00;    PORTK = 0x00;
00081     RDRT = 0xFF;    PERT = 0xFF;    PPST = 0xFF;    DDRT = 0x00;    PTT = 0x00;
00082     RDRS = 0xFF;    PERS = 0x00;    PPSS = 0xFF;    WOMS = 0xFF;    DDRS = 0x00;    PTS = 0x00;
00083     RDRM = 0xFF;    PERM = 0xFF;    PPSM = 0xFF;    WOMM = 0xFF;    DDRM = 0x00;    PTM = 0x00;
00084     PIEP = 0X00;    RDRP = 0xFF;    PERP = 0xFF;    PPSP = 0xFF;    DDRP = 0xFF;    PTP = 0x01;
00085     PIEH = 0X00;    RDRH = 0xFF;    PERH = 0xFF;    PPSH = 0xFF;    DDRH = 0xFF;    PTH = 0x00;
00086     PIEJ = 0X00;    RDRJ = 0xFF;    PERJ = 0xFF;    PPSJ = 0xFF;    DDRJ = 0x00;    PTJ = 0x00;
00087     sci0_init(960);
00088 #endif
00089     lk_bputs = false;
00090     lk_putchar = false;
00091     bmallocinit();
00092     execprep();
00093     addtask(lbdrv_chg, (char) 1, (ushort) TOUSHORT(TCNT_H), 500);
00094     addtask(btnscan_chk, (char) 2, (ushort) TOUSHORT(TCNT_H) + MSEC2TCNT(10), 500);
00095     addtask(misc, (char) 3, (ushort) TOUSHORT(TCNT_H) + MSEC2TCNT(20), 500);
00096 /*  bprintf(10, "main(): exec() %04x.\r\n", (sshort)(_start));*/
00097     ect_init();
00098     ASM_CLI;
00099     ASM_SWI;        /* Run isr_exec. */
00100     while(1 == 1);  /* Necessary, otherwise compiler will ignore noreturn. */
00101     /*@-compdef@*/  /* The @sets clause does not support globals (for addTask).*/
00102 #ifdef HOSTED_BUILD /* splint detects that on return, not all the fields in */
00103     return 0;       /* tasks are necessarily defined, because of addTask's */
00104 #else               /* modifies list. */
00105 /*  return;*/
00106 #endif
00107     /*@=compdef@*/
00108 }

void btnscan_chk void   ) 
 

Definition at line 152 of file main.c.

References ASM_MOVW_MM, BIT6, bitncheck(), bmemset(), bprintf(), bsleep(), gbl_scani, map_btns, PORTA, PTT, sshort, toggle_scan_lk, and uchar.

00153 {
00154     uchar row_bit, ptt_bit, i;
00155     uchar ptt, scani, *row;
00156     uchar btni;
00157 
00158     bmemset((char *)map_btns, '\0', sizeof(uchar) * 8);
00159     while (1 == 1) {
00160         while (true == toggle_scan_lk);
00161         ASM_MOVW_MM(PTT, ptt);
00162         ASM_MOVW_MM(gbl_scani, scani);
00163         toggle_scan_lk = true;
00164         row = &(map_btns[scani]);
00165         
00166         if (*row != ptt) {
00167             /*bprintf(20, "scani: %i, row: %'08B, ptt: %'08B, PTT: %'08B.\r\n", (sshort) scani, (sshort) *row, (sshort) ptt, (sshort) PTT);*/
00168             for (i = 0; i < 8; i++) {
00169                 row_bit = bitncheck(row, i);
00170                 ptt_bit = bitncheck((uchar *)&(ptt), i);
00171                 if (row_bit != ptt_bit) {
00172                     btni = 8*scani + i;
00173                     if (row_bit < ptt_bit) 
00174                         bprintf(0, "Key pressed:  %02x.\r\n", (sshort) btni);
00175                     else    bprintf(0, "Key released: %02x.\r\n", (sshort) btni);
00176                 }
00177             }
00178             /*ASM_NOP;
00179             __asm__ __volatile__ (
00180             "ldaa %0\
00181             \n\tldx %1\
00182             \n\tstaa 0,X" : "=m" (*row) : "m" (ptt) : "%ccr", "%a", "%x");
00183             *row = ptt;
00184             __asm__ __volatile__ ("movb %1, %0" : "=m" (*row) : "m" (ptt));
00185             ASM_NOP;*/
00186             *row = ptt;
00187             /*bprintf(20, "scani: %i, row: %'08B, ptt: %'08B.\r\n", (sshort) scani, (sshort) *row, (sshort) ptt);*/
00188         }
00189         PORTA ^= BIT6;
00190 
00191         bsleep(50);
00192     }
00193     
00194     return;
00195 }

Here is the call graph for this function:

void lbdrv_chg void   ) 
 

Definition at line 119 of file main.c.

References __asm__(), BIT5, bsleep(), gbl_scani, map_leds, PORTA, PTH, PTP, and toggle_scan_lk.

00120 {
00121     while (1 == 1) {
00122         while (true != toggle_scan_lk);
00126         __asm__ __volatile__ ("inc %0" : "=m" (gbl_scani));
00127         if (7 < gbl_scani) gbl_scani = 0;
00128         PTP = 0x1 << gbl_scani;
00129         PTH = 0xFF & ~map_leds[gbl_scani];
00130         toggle_scan_lk = false;
00131 
00132         PORTA ^= BIT5;
00133         bsleep(3);
00134     }
00135     
00136     return;
00137 }

Here is the call graph for this function:

void misc void   ) 
 

Definition at line 197 of file main.c.

References BIT7, bsleep(), and PORTA.

00198 {
00199     while (1 == 1) {
00200         /*if (0 == !toggle++) bputs("misc     ().\r\n");
00201         else {
00202             putchar('m');
00203             putchar('\r');
00204             putchar('\n');
00205         }*/
00206         PORTA ^= BIT7;
00207 
00208         bsleep(500);
00209     }
00210 
00211     return;
00212 }

Here is the call graph for this function:


Variable Documentation

uchar gbl_scani
 

Definition at line 45 of file main.c.

Referenced by btnscan_chk(), and lbdrv_chg().

uchar map_btns[8]
 

Definition at line 47 of file main.c.

Referenced by btnscan_chk().

uchar map_leds[8]
 

Definition at line 46 of file main.c.

Referenced by lbdrv_chg().

bool toggle_scan_lk
 

Definition at line 44 of file main.c.

Referenced by btnscan_chk(), and lbdrv_chg().


Generated on Sat Apr 10 17:08:18 2004 for BeeOS by doxygen 1.3.6-20040222