X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Farm.git;a=blobdiff_plain;f=betty%2Fbetty.c;h=d10456e30b8a8290c310b4312b305d4d3dc13bdd;hp=68c86f7b319aad9f785e283cb337eb0440a61907;hb=916c8dd1dfa2414ae8b58ab1e3d477b24c553815;hpb=2cbc6d2f18a38237fcd1df2ef67ba315af080f03 diff --git a/betty/betty.c b/betty/betty.c index 68c86f7..d10456e 100644 --- a/betty/betty.c +++ b/betty/betty.c @@ -5,182 +5,150 @@ * */ +/* includes */ +#include "betty.h" + /* - * includes + * functions */ -#include "lpc2xxx.h" +#define cc1100_init spi1_init(8,SPI_MASTER,8) -/* - * defines - */ +void display_string_page(u8 x,u8 p,u8 *s,u8 f,u8 o,u8 sp) { -/* bank 0/2 and boootloader addr/size */ -#define BANK0 0x80000000 -#define BANK2 0x82000000 -#define BANK_SIZE 0x00100000 -#define BOOTLOADER 0x7fffe000 -#define BL_SIZE 0x00002000 - -/* flash cmd addresses - flash[0-18] <--> arm[1-19]*/ -#define B0F555 (*((volatile unsigned short *)(BANK0|0xaaa))) // 0x555 -#define B0F2AA (*((volatile unsigned short *)(BANK0|0x554))) // 0x2aa -#define B0F (*((volatile unsigned short *)(BANK0))) -#define B2F555 (*((volatile unsigned short *)(BANK2|0xaaa))) // 0x555 -#define B2F2AA (*((volatile unsigned short *)(BANK2|0x554))) // 0x2aa -#define B2F (*((volatile unsigned short *)(BANK2))) + while(*(s)) { + if(x==DISPLAY_DIMX) { + p+=1; + x=o; + } + display_font_page(x,p,(u8 *)default_font+(*(s)<<3),f); + x+=sp; + s++; + } +} /* - * type definitions + * global variables */ -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; +const char announce[]="betty - live from flash at 0x80000000! ;)\r\n"; +const char d1_txt[]="betty"; +const char d2_txt[]="- alphablend -"; - /* - * functions - */ +/* + * main function + */ -void mmap_init(u8 memtype) { +int main() { - MEMMAP=memtype; -} + /* variables */ + t_button button; + u8 contrast; -void pll_init(void) { - - /* configuration */ - PLLCFG=0x42; // multiplier = 3 (for cclk), dividor = 4 (for f_cco) - PLLCON=0x03; // enable and set as clk source for the lpc - /* feed sequence */ - PLLFEED=0xaa; - PLLFEED=0x55; - /* wait for lock */ - while(!(PLLSTAT&(1<<10))) - continue; -} + /* system init */ + pll_init(); + pin_init(); + ext_mem_init(); + + /* memory mapping - dirty! */ + if((void *)announce<(void *)FLASH_BANK0) + mmap_init(MEMTYPE_RAM); + else + mmap_init(MEMTYPE_EXT); + + /* uart init */ + uart0_init(); -void ext_mem_bank_init(void) { + /* display init */ + display_bl_init(); - BCFG0=0x10000420; // flash 1 - BCFG1=0x00000c42; // lcd - BCFG2=0x10000420; // flash 2 -} + /* button init */ + button_init(&button); + button_set_retries(&button,100); - -void pin_select_init() { + /* flash init */ + flash_init(); /* - * a[19:2] -> address lines + * start it ... */ - PINSEL2=0x0d6041d4; -} - -void uart0_init(void) { + /* display init */ + display_bl_toggle(); + display_init(); + contrast=0x38; - PINSEL0=0x05; // pin select -> tx, rx - UART0_FCR=0x07; // enable fifo - UART0_LCR=0x83; // set dlab + word length - UART0_DLL=0x04; // br: 38400 @ 10/4 mhz - UART0_DLM=0x00; - UART0_LCR=0x03; // unset dlab -} + /* pasue again */ -void uart0_send_string(char *txbuf) { + /* announce */ + uart0_send_string((char *)announce); - int i; - - i=0; - - while(txbuf[i]) { - UART0_THR=txbuf[i++]; - /* flush if tx buffer maximum reached */ - if(!(i%16)) - while(!(UART0_LSR&(1<<6))) - continue; - } - /* flush if \n and \r do not fit in the tx buffer */ - if(i>14) - while(!(UART0_LSR&(1<<6))) - continue; - - UART0_THR='\n'; - UART0_THR='\r'; - - /* flush uart0 anyways */ - while(!(UART0_LSR&(1<<6))) - continue; -} - -void uart0_send_buf16(u16 *buf,int len) { - - int i; - - i=0; - - for(i=0;i>8)&0xff; + while(1) { + pause(0x0fffff); + + /* button test! */ + if(button_get_event(&button)) { + //uart0_send_string(announce); + switch(button.key[0]) { + case BUTTON_POWER: + display_logo((u8 *)default_logo); + break; + case BUTTON_DOWN: + if(contrast>0x00) + contrast-=1; + DISPLAY_SET_CONTRAST(contrast); + break; + case BUTTON_UP: + if(contrast<0x3f) + contrast+=1; + DISPLAY_SET_CONTRAST(contrast); + break; + case BUTTON_A: + display_fill_screen(DISPLAY_FILL_W); + break; + case BUTTON_B: + display_fill_screen(DISPLAY_FILL_LG); + break; + case BUTTON_C: + display_fill_screen(DISPLAY_FILL_DG); + break; + case BUTTON_D: + display_fill_screen(DISPLAY_FILL_B); + break; + case BUTTON_1: + display_rectangle_page(4,2,60,5,DISPLAY_FILL_B,0xff); + break; + case BUTTON_2: + display_rectangle_page(40,5,50,5,DISPLAY_FILL_LG,0x7f); + break; + case BUTTON_3: + break; + case BUTTON_4: + display_font_page(42,18,(u8 *)default_font+(0x34<<3),DISPLAY_FILL_B); + break; + case BUTTON_5: + display_font_page(50,18,(u8 *)default_font+(0x35<<3),DISPLAY_FILL_DG); + break; + case BUTTON_6: + display_font_page(58,18,(u8 *)default_font+(0x36<<3),DISPLAY_FILL_W); + break; + case BUTTON_7: + break; + case BUTTON_8: + break; + case BUTTON_BETTY: + display_string_page(50,13,(u8 *)d1_txt,DISPLAY_FILL_B,0,8); + break; + case BUTTON_EXIT: + display_string_page(10,8,(u8 *)d2_txt,DISPLAY_FILL_B,0,8); + break; + default: + display_clear_screen(); + break; + } + } } -} - -void uart0_send_buf32(u32 *buf,int len) { - - int i; - - i=0; - - for(i=0;i>8)&0xff; - UART0_THR=(buf[i]>>16)&0xff; - UART0_THR=(buf[i]>>24)&0xff; - } -} - -void uart0_send_byte(u8 send) { - - while(!(UART0_LSR&(1<<5))) - continue; - - UART0_THR=send; -} - -u8 uart0_get_byte(void) { - - u8 rx; - - while(!(UART0_LSR&(1<<0))) - continue; - - rx=UART0_RBR; - - return rx; -} - -/* - * main function - */ - -int main() { - - char buf="betty - live from the flash at 0x80000000! ;)\r\n"; - - pll_init(); - uart0_init(); - ext_mem_bank_init(); - pin_select_init(); - - while(1) - uart0_send_string(buf); return 0; }