added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Revision:
64:41a834223ea3
Parent:
15:a81a8d6c1dfe
--- a/targets/hal/TARGET_Atmel/TARGET_SAM_CortexM0P/i2c_api.c	Mon Feb 15 09:00:10 2016 +0000
+++ b/targets/hal/TARGET_Atmel/TARGET_SAM_CortexM0P/i2c_api.c	Mon Feb 15 10:00:10 2016 +0000
@@ -64,6 +64,7 @@
 const uint32_t sercom_irq_handlers[SERCOM_INST_NUM] = {
     MREPEAT(SERCOM_INST_NUM, _SERCOM_INTERRUPT_HANDLERS, ~)
 };
+
 #endif
 
 /* Forward declaration */
@@ -330,7 +331,7 @@
     struct i2c_master_packet packet;
     packet.address = (address & 0xFF) >> 1;
     packet.data_length = length;
-    packet.data = data;
+    packet.data = (uint8_t *)data;
     packet.ten_bit_address = false;
     packet.high_speed = false;
 
@@ -596,7 +597,7 @@
     uint32_t sercom_index = _sercom_get_sercom_inst_index(pI2C_S(obj)->master.hw);
     for (i=0; i<2; i++) {
         mux_func[i] = pinmap_function_sercom(pI2C_S(obj)->pins[0], sercom_index);
-        if (mux_func[i] == NC) return;
+        if (mux_func[i] == (uint32_t)NC) return;
     }
 
     if (enable_slave) {
@@ -721,7 +722,7 @@
 
     struct i2c_slave_packet packet;
     packet.data_length = length;
-    packet.data = data;
+    packet.data = (uint8_t *)data;
 
     tmp_status = i2c_slave_write_packet_wait(&pI2C_S(obj)->slave, &packet);
 
@@ -731,6 +732,7 @@
         /* Currently, no way to track no of bytes transmitted, so return 0 */
         return 0;
     }
+
 }
 
 /** Configure I2C slave address.
@@ -863,7 +865,7 @@
     /* Init i2c packet. */
     pI2C_S(obj)->wr_packet.address     = address >> 1;
     pI2C_S(obj)->wr_packet.data_length = tx_length;
-    pI2C_S(obj)->wr_packet.data        = tx;
+    pI2C_S(obj)->wr_packet.data        = (uint8_t *)tx;
 
     pI2C_S(obj)->rd_packet.address     = address >> 1;
     pI2C_S(obj)->rd_packet.data_length = rx_length;
@@ -877,8 +879,8 @@
 
     /* Set interrupt handler to default handler of ASF */
     /* Enable interrupt */
-    NVIC_SetVector((SERCOM0_IRQn + sercom_index), sercom_irq_handlers[sercom_index]);
-    NVIC_EnableIRQ(SERCOM0_IRQn + sercom_index);
+    NVIC_SetVector((IRQn_Type)((uint32_t)SERCOM0_IRQn + sercom_index), sercom_irq_handlers[sercom_index]);
+    NVIC_EnableIRQ((IRQn_Type)((uint32_t)SERCOM0_IRQn + sercom_index));
 
     /* Register callbacks */
     i2c_master_register_callback(&pI2C_S(obj)->master, i2c_transfer_complete_callback, I2C_MASTER_CALLBACK_ERROR);
@@ -927,20 +929,20 @@
         case STATUS_OK:
             /* Transfer is complete */
             return (I2C_EVENT_TRANSFER_COMPLETE & event_mask);
-            break;
+
         case STATUS_ERR_BAD_ADDRESS:
             /* Received a NACK */
             return (I2C_EVENT_ERROR_NO_SLAVE & event_mask);
-            break;
+
         case STATUS_ERR_PACKET_COLLISION:
             /* An error occurred in between transfer */
             return (I2C_EVENT_ERROR & event_mask);
-            break;
+
         default:
             return 0;
     }
 
-    return 0;
+    //return 0;
 }
 
 /** Attempts to determine if I2C peripheral is already in use.