diff options
| author | hathach <[email protected]> | 2013-04-22 12:10:52 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-04-22 12:10:52 +0700 |
| commit | 8cc4c6f52d61abaadec99dbcc9f20f566982db2b (patch) | |
| tree | ebabfef0e91807c5866ec3da2cf709f144e0c85b | |
| parent | 799c709524132cbf3442ce5c49fbf844f8ac0e70 (diff) | |
change the board_leds API to on_mask, off_mask
getting led toggling per second on host demo
add greeting message
| -rw-r--r-- | demos/bsp/boards/board.h | 2 | ||||
| -rw-r--r-- | demos/bsp/boards/embedded_artists/board_ea4357.c | 146 | ||||
| -rw-r--r-- | demos/bsp/boards/embedded_artists/board_ea4357.h | 6 | ||||
| -rw-r--r-- | demos/host/src/main.c | 31 |
4 files changed, 88 insertions, 97 deletions
diff --git a/demos/bsp/boards/board.h b/demos/bsp/boards/board.h index c65538f35..86e8cca6f 100644 --- a/demos/bsp/boards/board.h +++ b/demos/bsp/boards/board.h @@ -98,7 +98,7 @@ //--------------------------------------------------------------------+ // Init board peripherals : Clock, UART, LEDs, Buttons void board_init(void); -void board_leds(uint32_t mask, uint32_t state); +void board_leds(uint32_t on_mask, uint32_t off_mask); uint32_t board_uart_send(uint8_t *buffer, uint32_t length); uint32_t board_uart_recv(uint8_t *buffer, uint32_t length); diff --git a/demos/bsp/boards/embedded_artists/board_ea4357.c b/demos/bsp/boards/embedded_artists/board_ea4357.c index 0e0d7df7c..df6b3a1d1 100644 --- a/demos/bsp/boards/embedded_artists/board_ea4357.c +++ b/demos/bsp/boards/embedded_artists/board_ea4357.c @@ -43,66 +43,6 @@ #define UART_PORT LPC_USART0 -#if 0 -static const struct { - uint8_t port; - uint8_t pin; -}leds[CFG_LED_NUMBER] = { {0, 8} }; -#endif - -// MIC2555 1YML = 0101111, 0YML = 0101101 -#define MIC255_ADDR BIN8(0101111) - -//static uint8_t mic255_regs_read(uint8_t regs_addr) -//{ -// uint8_t value; -// -// ASSERT( SUCCESS == I2C_MasterTransferData( -// LPC_I2C0, -// & (I2C_M_SETUP_Type) -// { -// .sl_addr7bit = MIC255_ADDR, -// .retransmissions_max = 3, -// -// .tx_data = ®s_addr, -// .tx_length = 1, -// -// .rx_data = &value, -// .rx_length = 1 -// }, -// I2C_TRANSFER_POLLING), 0xFF); -// -// return value; -//} - -//static bool mic255_regs_write(uint8_t regs_addr, uint8_t data) -//{ -// uint8_t xfer_data[2] = { regs_addr, data} ; -// -// ASSERT( SUCCESS == I2C_MasterTransferData( -// LPC_I2C0, -// & (I2C_M_SETUP_Type) -// { -// .sl_addr7bit = MIC255_ADDR, -// .retransmissions_max = 3, -// -// .tx_data = xfer_data, -// .tx_length = 2, -// }, -// I2C_TRANSFER_POLLING), false); -// -// return true; -//} - - -//static uint16_t mic255_get_vendorid(void) -//{ -// uint8_t vendor_low = mic255_regs_read(0); -// uint8_t vendor_high = mic255_regs_read(1); -// -// return (vendor_high << 8) | vendor_low; -//} - void board_init(void) { SystemInit(); @@ -117,21 +57,14 @@ void board_init(void) scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // USB1_VBUS monitor presence, must be high for bus reset occur // init I2C and set up MIC2555 to have 15k pull-down on USB1 D+ & D- -// I2C_Init(LPC_I2C0, 100000); -// I2C_Cmd(LPC_I2C0, ENABLE); -// + I2C_Init(LPC_I2C0, 100000); + I2C_Cmd(LPC_I2C0, ENABLE); + + pca9532_init(); // Leds Init + // ASSERT_INT(0x058d, mic255_get_vendorid(), (void) 0); // verify vendor id // ASSERT( mic255_regs_write(6, BIN8(1100)), (void) 0); // pull down D+/D- for host -#if 0 - // Leds Init - for (uint8_t i=0; i<CFG_LED_NUMBER; i++) - { - scu_pinmux(leds[i].port, leds[i].pin, MD_PUP|MD_EZI|MD_ZI, 0); // MD_PDN - GPIO_SetDir(leds[i].port, BIT_(leds[i].pin), 1); // output - } -#endif - #if CFG_UART_ENABLE //------------- UART init -------------// scu_pinmux(0xF ,10 , MD_PDN, FUNC1); // PF.10 : UART0_TXD @@ -153,19 +86,9 @@ void board_init(void) //--------------------------------------------------------------------+ // LEDS //--------------------------------------------------------------------+ -void board_leds(uint32_t mask, uint32_t state) __attribute__ ((warning("not supported yet"))); -void board_leds(uint32_t mask, uint32_t state) +void board_leds(uint32_t on_mask, uint32_t off_mask) { -#if 0 - uint8_t i; - for(i=0; i<CFG_LED_NUMBER; i++) - { - if ( mask & BIT_(i) ) - { - (mask & state) ? GPIO_SetValue(leds[i].port, BIT_(leds[i].pin)) : GPIO_ClearValue(leds[i].port, BIT_(leds[i].pin)) ; - } - } -#endif + pca9532_setLeds( on_mask << 8, off_mask << 8); } //--------------------------------------------------------------------+ @@ -203,4 +126,59 @@ uint32_t board_uart_recv(uint8_t *buffer, uint32_t length) // ADC_ChannelCmd(LPC_ADC0, ADC_CH_TRIMPOT, ENABLE); //} +//------------- MIC2555 external OTG transceiver on USB1 -------------// + +// MIC2555 1YML = 0101111, 0YML = 0101101 +//#define MIC255_ADDR BIN8(0101111) + +//static uint8_t mic255_regs_read(uint8_t regs_addr) +//{ +// uint8_t value; +// +// ASSERT( SUCCESS == I2C_MasterTransferData( +// LPC_I2C0, +// & (I2C_M_SETUP_Type) +// { +// .sl_addr7bit = MIC255_ADDR, +// .retransmissions_max = 3, +// +// .tx_data = ®s_addr, +// .tx_length = 1, +// +// .rx_data = &value, +// .rx_length = 1 +// }, +// I2C_TRANSFER_POLLING), 0xFF); +// +// return value; +//} + +//static bool mic255_regs_write(uint8_t regs_addr, uint8_t data) +//{ +// uint8_t xfer_data[2] = { regs_addr, data} ; +// +// ASSERT( SUCCESS == I2C_MasterTransferData( +// LPC_I2C0, +// & (I2C_M_SETUP_Type) +// { +// .sl_addr7bit = MIC255_ADDR, +// .retransmissions_max = 3, +// +// .tx_data = xfer_data, +// .tx_length = 2, +// }, +// I2C_TRANSFER_POLLING), false); +// +// return true; +//} + + +//static uint16_t mic255_get_vendorid(void) +//{ +// uint8_t vendor_low = mic255_regs_read(0); +// uint8_t vendor_high = mic255_regs_read(1); +// +// return (vendor_high << 8) | vendor_low; +//} + #endif diff --git a/demos/bsp/boards/embedded_artists/board_ea4357.h b/demos/bsp/boards/embedded_artists/board_ea4357.h index c73f28fb7..0f9ab2e5b 100644 --- a/demos/bsp/boards/embedded_artists/board_ea4357.h +++ b/demos/bsp/boards/embedded_artists/board_ea4357.h @@ -60,11 +60,9 @@ #include "lpc43xx_cgu.h" #include "lpc43xx_gpio.h" #include "lpc43xx_uart.h" +#include "lpc43xx_i2c.h" -#define EA_BASE_BOARD -#ifdef EA_BASE_BOARD - #include "oem_base_board/pca9532.h" -#endif +#include "oem_base_board/pca9532.h" // LEDs #define CFG_LED_NUMBER 0 #define CFG_LED_ON (1) diff --git a/demos/host/src/main.c b/demos/host/src/main.c index 3e5110a39..35cb0eacc 100644 --- a/demos/host/src/main.c +++ b/demos/host/src/main.c @@ -17,18 +17,20 @@ __CRP const unsigned int CRP_WORD = CRP_NO_CRP ; #endif +void print_greeting(void); int main(void) { uint32_t current_tick = system_ticks; board_init(); + print_greeting(); + tusb_init(); //------------- application task init -------------// keyboard_app_init(); mouse_app_init(); - printf("reset\n"); while (1) { tusb_task_runner(); @@ -37,17 +39,30 @@ int main(void) if (current_tick + CFG_TICKS_PER_SECOND < system_ticks) { - static uint8_t timeout_10_ms = 0; - timeout_10_ms = (timeout_10_ms+1) % 10; - if (timeout_10_ms % 10 == 0) + current_tick += CFG_TICKS_PER_SECOND; + + /* Toggle LED once per second */ + if ( (current_tick/CFG_TICKS_PER_SECOND) % 2) { - printf("tinyusb: " __DATE__ "\t" __TIME__ "\n"); // toggle leds on EA4357 is quite troublesome + board_leds(0x01, 0x00); + } + else + { + board_leds(0x00, 0x01); } - - current_tick += CFG_TICKS_PER_SECOND; - board_leds(0x01, (current_tick/CFG_TICKS_PER_SECOND)%2); /* Toggle LED once per second */ } } return 0; } + +void print_greeting(void) +{ + printf("\ +--------------------------------------------------------------------\ +- Host Demo (a tinyusb example)\r\n\ +- if you find any bugs or get any questions, feel free to file an\r\n\ +- issue at https://github.com/hathach/tinyusb\r\n\ +--------------------------------------------------------------------\r\n\r\n" + ); +} |
