Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-src by
Diff: targets/hal/TARGET_NXP/TARGET_LPC43XX/analogout_api.c
- Revision:
- 256:76fd9a263045
- Parent:
- 227:7bd0639b8911
- Child:
- 285:31249416b6f9
diff -r 20b371a9491b -r 76fd9a263045 targets/hal/TARGET_NXP/TARGET_LPC43XX/analogout_api.c
--- a/targets/hal/TARGET_NXP/TARGET_LPC43XX/analogout_api.c Fri Jul 11 10:00:08 2014 +0100
+++ b/targets/hal/TARGET_NXP/TARGET_LPC43XX/analogout_api.c Tue Jul 15 07:45:08 2014 +0100
@@ -17,26 +17,30 @@
*/
#include "mbed_assert.h"
#include "analogout_api.h"
+
#include "cmsis.h"
#include "pinmap.h"
+#include "error.h"
+#include "gpio_api.h"
static const PinMap PinMap_DAC[] = {
- {P_DAC0 , DAC_0, 0x0},
- {NC , NC , 0}
+ {P4_4, DAC_0, 0},
+ {NC, NC, 0}
};
void analogout_init(dac_t *obj, PinName pin) {
obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC);
MBED_ASSERT(obj->dac != (DACName)NC);
- // Configure the pin as GPIO input
- pin_function(pin, (SCU_PINIO_PULLNONE | 0x0));
- pin_mode(pin, PullNone);
+ // Reset pin function to GPIO
+ gpio_set(pin);
// Select DAC on analog function select register in SCU
- LPC_SCU->ENAIO[2] |= 1; // Sets pin P4_4 as DAC
+ LPC_SCU->ENAIO[2] |= 1; // Sets pin as DAC
- // Set Maximum update rate for DAC */
+ // Set bias=0 for maximum DAC update rate (1 MHz)
LPC_DAC->CR &= ~DAC_BIAS_EN;
+ // Enable DAC and DMA
+ LPC_DAC->CTRL |= DAC_DMA_ENA;
analogout_write_u16(obj, 0);
}
@@ -44,16 +48,13 @@
void analogout_free(dac_t *obj) {}
static inline void dac_write(int value) {
- uint32_t tmp;
// Set the DAC output
- tmp = LPC_DAC->CR & DAC_BIAS_EN;
- tmp |= DAC_VALUE(value);
- LPC_DAC->CR = tmp;
+ LPC_DAC->CR = DAC_SET(value);
}
static inline int dac_read() {
- return (DAC_VALUE(LPC_DAC->CR));
+ return (DAC_GET(LPC_DAC->CR));
}
void analogout_write(dac_t *obj, float value) {
