summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-04-22 12:10:52 +0700
committerhathach <[email protected]>2013-04-22 12:10:52 +0700
commit8cc4c6f52d61abaadec99dbcc9f20f566982db2b (patch)
treeebabfef0e91807c5866ec3da2cf709f144e0c85b
parent799c709524132cbf3442ce5c49fbf844f8ac0e70 (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.h2
-rw-r--r--demos/bsp/boards/embedded_artists/board_ea4357.c146
-rw-r--r--demos/bsp/boards/embedded_artists/board_ea4357.h6
-rw-r--r--demos/host/src/main.c31
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 = &regs_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 = &regs_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"
+ );
+}