Merge pull request #61 from ytsuboi/master

Fixed problem in PWMOUT mapping table
pull/63/merge
Bogdan Marinescu 2013-09-09 08:22:11 -07:00
commit cfa6a1d912
10 changed files with 174 additions and 167 deletions

View File

@ -1,14 +1,16 @@
LR_IROM1 0x00000000 0x8000 { ; load region size_region (32k)
ER_IROM1 0x00000000 0x8000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
; 8_byte_aligned(48 vect * 4 bytes) = 8_byte_aligned(0xC0) = 0xC0
; 8KB - 0xC0 = 0xF40
RW_IRAM1 0x100000C0 0xF40 {
; 48 vectors * 4 bytes = 0xC0 for remap
RW_IRAM1 (0x10000000+0xC0) (0x1000-0xC0) {
.ANY (+RW +ZI)
}
}

View File

@ -63,20 +63,20 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
DCD FLEX_INT0_IRQHandler ; All GPIO pin can be routed to FLEX_INTx
DCD FLEX_INT1_IRQHandler ;
DCD FLEX_INT2_IRQHandler ;
DCD FLEX_INT3_IRQHandler ;
DCD FLEX_INT4_IRQHandler ;
DCD FLEX_INT5_IRQHandler ;
DCD FLEX_INT6_IRQHandler ;
DCD FLEX_INT7_IRQHandler ;
DCD GINT0_IRQHandler ;
DCD GINT1_IRQHandler ; PIO0 (0:7)
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ;
DCD Reserved_IRQHandler ;
DCD Reserved_IRQHandler ;
DCD SLWU_INT0_IRQHandler ; Start logic wake-up interrupt 0
DCD SLWU_INT1_IRQHandler ; Start logic wake-up interrupt 1
DCD SLWU_INT2_IRQHandler ; Start logic wake-up interrupt 2
DCD SLWU_INT3_IRQHandler ; Start logic wake-up interrupt 3
DCD SLWU_INT4_IRQHandler ; Start logic wake-up interrupt 4
DCD SLWU_INT5_IRQHandler ; Start logic wake-up interrupt 5
DCD SLWU_INT6_IRQHandler ; Start logic wake-up interrupt 6
DCD SLWU_INT7_IRQHandler ; Start logic wake-up interrupt 7
DCD SLWU_INT8_IRQHandler ; Start logic wake-up interrupt 8
DCD SLWU_INT9_IRQHandler ; Start logic wake-up interrupt 9
DCD SLWU_INT10_IRQHandler ; Start logic wake-up interrupt 10
DCD SLWU_INT11_IRQHandler ; Start logic wake-up interrupt 11
DCD SLWU_INT12_IRQHandler ; Start logic wake-up interrupt 12
DCD C_CAN_IRQHandler ; C_CAN
DCD SSP1_IRQHandler ; SSP1
DCD I2C_IRQHandler ; I2C
DCD TIMER16_0_IRQHandler ; 16-bit Timer0
@ -85,19 +85,19 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD TIMER32_1_IRQHandler ; 32-bit Timer1
DCD SSP0_IRQHandler ; SSP0
DCD UART_IRQHandler ; UART
DCD USB_IRQHandler ; USB IRQ
DCD USB_FIQHandler ; USB FIQ
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD ADC_IRQHandler ; A/D Converter
DCD WDT_IRQHandler ; Watchdog timer
DCD BOD_IRQHandler ; Brown Out Detect
DCD FMC_IRQHandler ; IP2111 Flash Memory Controller
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD PIO_3_IRQHandler ; GPIO interrupt status of port 3
DCD PIO_2_IRQHandler ; GPIO interrupt status of port 2
DCD PIO_1_IRQHandler ; GPIO interrupt status of port 1
DCD PIO_0_IRQHandler ; GPIO interrupt status of port 0
;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -185,17 +185,14 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
IF :LNOT::DEF:NO_CRP
AREA |.ARM.__at_0x02FC|, CODE, READONLY
CRP_Key DCD 0xFFFFFFFF
ENDIF
AREA |.text|, CODE, READONLY
; Reset Handler
Reset_Handler PROC
@ -208,14 +205,10 @@ Reset_Handler PROC
BX R0
ENDP
; Dummy Exception Handlers (infinite loops which can be modified)
; Dummy Exception Handlers (infinite loops which can be modified)
; now, under COMMON NMI.c and NMI.h, a real NMI handler is created if NMI is enabled
; for particular peripheral.
;NMI_Handler PROC
; EXPORT NMI_Handler [WEAK]
; B .
; ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
@ -239,18 +232,22 @@ Reserved_IRQHandler PROC
ENDP
Default_Handler PROC
; for LPC11Uxx (With USB)
; for LPC1114
EXPORT NMI_Handler [WEAK]
EXPORT FLEX_INT0_IRQHandler [WEAK]
EXPORT FLEX_INT1_IRQHandler [WEAK]
EXPORT FLEX_INT2_IRQHandler [WEAK]
EXPORT FLEX_INT3_IRQHandler [WEAK]
EXPORT FLEX_INT4_IRQHandler [WEAK]
EXPORT FLEX_INT5_IRQHandler [WEAK]
EXPORT FLEX_INT6_IRQHandler [WEAK]
EXPORT FLEX_INT7_IRQHandler [WEAK]
EXPORT GINT0_IRQHandler [WEAK]
EXPORT GINT1_IRQHandler [WEAK]
EXPORT SLWU_INT0_IRQHandler [WEAK]
EXPORT SLWU_INT1_IRQHandler [WEAK]
EXPORT SLWU_INT2_IRQHandler [WEAK]
EXPORT SLWU_INT3_IRQHandler [WEAK]
EXPORT SLWU_INT4_IRQHandler [WEAK]
EXPORT SLWU_INT5_IRQHandler [WEAK]
EXPORT SLWU_INT6_IRQHandler [WEAK]
EXPORT SLWU_INT7_IRQHandler [WEAK]
EXPORT SLWU_INT8_IRQHandler [WEAK]
EXPORT SLWU_INT9_IRQHandler [WEAK]
EXPORT SLWU_INT10_IRQHandler [WEAK]
EXPORT SLWU_INT11_IRQHandler [WEAK]
EXPORT SLWU_INT12_IRQHandler [WEAK]
EXPORT C_CAN_IRQHandler [WEAK]
EXPORT SSP1_IRQHandler [WEAK]
EXPORT I2C_IRQHandler [WEAK]
EXPORT TIMER16_0_IRQHandler [WEAK]
@ -259,26 +256,30 @@ Default_Handler PROC
EXPORT TIMER32_1_IRQHandler [WEAK]
EXPORT SSP0_IRQHandler [WEAK]
EXPORT UART_IRQHandler [WEAK]
EXPORT USB_IRQHandler [WEAK]
EXPORT USB_FIQHandler [WEAK]
EXPORT ADC_IRQHandler [WEAK]
EXPORT WDT_IRQHandler [WEAK]
EXPORT BOD_IRQHandler [WEAK]
EXPORT FMC_IRQHandler [WEAK]
EXPORT USBWakeup_IRQHandler [WEAK]
EXPORT PIO_3_IRQHandler [WEAK]
EXPORT PIO_2_IRQHandler [WEAK]
EXPORT PIO_1_IRQHandler [WEAK]
EXPORT PIO_0_IRQHandler [WEAK]
NMI_Handler
FLEX_INT0_IRQHandler
FLEX_INT1_IRQHandler
FLEX_INT2_IRQHandler
FLEX_INT3_IRQHandler
FLEX_INT4_IRQHandler
FLEX_INT5_IRQHandler
FLEX_INT6_IRQHandler
FLEX_INT7_IRQHandler
GINT0_IRQHandler
GINT1_IRQHandler
SLWU_INT0_IRQHandler
SLWU_INT1_IRQHandler
SLWU_INT2_IRQHandler
SLWU_INT3_IRQHandler
SLWU_INT4_IRQHandler
SLWU_INT5_IRQHandler
SLWU_INT6_IRQHandler
SLWU_INT7_IRQHandler
SLWU_INT8_IRQHandler
SLWU_INT9_IRQHandler
SLWU_INT10_IRQHandler
SLWU_INT11_IRQHandler
SLWU_INT12_IRQHandler
C_CAN_IRQHandler
SSP1_IRQHandler
I2C_IRQHandler
TIMER16_0_IRQHandler
@ -287,13 +288,13 @@ TIMER32_0_IRQHandler
TIMER32_1_IRQHandler
SSP0_IRQHandler
UART_IRQHandler
USB_IRQHandler
USB_FIQHandler
ADC_IRQHandler
WDT_IRQHandler
BOD_IRQHandler
FMC_IRQHandler
USBWakeup_IRQHandler
PIO_3_IRQHandler
PIO_2_IRQHandler
PIO_1_IRQHandler
PIO_0_IRQHandler
B .

View File

@ -46,20 +46,20 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
DCD FLEX_INT0_IRQHandler ; All GPIO pin can be routed to FLEX_INTx
DCD FLEX_INT1_IRQHandler ;
DCD FLEX_INT2_IRQHandler ;
DCD FLEX_INT3_IRQHandler ;
DCD FLEX_INT4_IRQHandler ;
DCD FLEX_INT5_IRQHandler ;
DCD FLEX_INT6_IRQHandler ;
DCD FLEX_INT7_IRQHandler ;
DCD GINT0_IRQHandler ;
DCD GINT1_IRQHandler ; PIO0 (0:7)
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ;
DCD Reserved_IRQHandler ;
DCD Reserved_IRQHandler ;
DCD SLWU_INT0_IRQHandler ; Start logic wake-up interrupt 0
DCD SLWU_INT1_IRQHandler ; Start logic wake-up interrupt 1
DCD SLWU_INT2_IRQHandler ; Start logic wake-up interrupt 2
DCD SLWU_INT3_IRQHandler ; Start logic wake-up interrupt 3
DCD SLWU_INT4_IRQHandler ; Start logic wake-up interrupt 4
DCD SLWU_INT5_IRQHandler ; Start logic wake-up interrupt 5
DCD SLWU_INT6_IRQHandler ; Start logic wake-up interrupt 6
DCD SLWU_INT7_IRQHandler ; Start logic wake-up interrupt 7
DCD SLWU_INT8_IRQHandler ; Start logic wake-up interrupt 8
DCD SLWU_INT9_IRQHandler ; Start logic wake-up interrupt 9
DCD SLWU_INT10_IRQHandler ; Start logic wake-up interrupt 10
DCD SLWU_INT11_IRQHandler ; Start logic wake-up interrupt 11
DCD SLWU_INT12_IRQHandler ; Start logic wake-up interrupt 12
DCD C_CAN_IRQHandler ; C_CAN
DCD SSP1_IRQHandler ; SSP1
DCD I2C_IRQHandler ; I2C
DCD TIMER16_0_IRQHandler ; 16-bit Timer0
@ -68,19 +68,19 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD TIMER32_1_IRQHandler ; 32-bit Timer1
DCD SSP0_IRQHandler ; SSP0
DCD UART_IRQHandler ; UART
DCD USB_IRQHandler ; USB IRQ
DCD USB_FIQHandler ; USB FIQ
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD ADC_IRQHandler ; A/D Converter
DCD WDT_IRQHandler ; Watchdog timer
DCD BOD_IRQHandler ; Brown Out Detect
DCD FMC_IRQHandler ; IP2111 Flash Memory Controller
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD Reserved_IRQHandler ; Reserved
DCD PIO_3_IRQHandler ; GPIO interrupt status of port 3
DCD PIO_2_IRQHandler ; GPIO interrupt status of port 2
DCD PIO_1_IRQHandler ; GPIO interrupt status of port 1
DCD PIO_0_IRQHandler ; GPIO interrupt status of port 0
;; 48 vector entries. We pad to 128 to fill the 0x0 - 0x1FF REMAP address space
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -92,7 +92,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -103,7 +103,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -114,7 +114,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -125,7 +125,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -136,7 +136,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -147,7 +147,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -158,7 +158,6 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
@ -168,17 +167,16 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
DCD 0xFFFFFFFF ; Datafill
IF :LNOT::DEF:NO_CRP
AREA |.ARM.__at_0x02FC|, CODE, READONLY
CRP_Key DCD 0xFFFFFFFF
ENDIF
AREA |.text|, CODE, READONLY
; Reset Handler
Reset_Handler PROC
@ -222,18 +220,22 @@ Reserved_IRQHandler PROC
ENDP
Default_Handler PROC
; for LPC11Uxx (With USB)
; for LPC1114
EXPORT NMI_Handler [WEAK]
EXPORT FLEX_INT0_IRQHandler [WEAK]
EXPORT FLEX_INT1_IRQHandler [WEAK]
EXPORT FLEX_INT2_IRQHandler [WEAK]
EXPORT FLEX_INT3_IRQHandler [WEAK]
EXPORT FLEX_INT4_IRQHandler [WEAK]
EXPORT FLEX_INT5_IRQHandler [WEAK]
EXPORT FLEX_INT6_IRQHandler [WEAK]
EXPORT FLEX_INT7_IRQHandler [WEAK]
EXPORT GINT0_IRQHandler [WEAK]
EXPORT GINT1_IRQHandler [WEAK]
EXPORT SLWU_INT0_IRQHandler [WEAK]
EXPORT SLWU_INT1_IRQHandler [WEAK]
EXPORT SLWU_INT2_IRQHandler [WEAK]
EXPORT SLWU_INT3_IRQHandler [WEAK]
EXPORT SLWU_INT4_IRQHandler [WEAK]
EXPORT SLWU_INT5_IRQHandler [WEAK]
EXPORT SLWU_INT6_IRQHandler [WEAK]
EXPORT SLWU_INT7_IRQHandler [WEAK]
EXPORT SLWU_INT8_IRQHandler [WEAK]
EXPORT SLWU_INT9_IRQHandler [WEAK]
EXPORT SLWU_INT10_IRQHandler [WEAK]
EXPORT SLWU_INT11_IRQHandler [WEAK]
EXPORT SLWU_INT12_IRQHandler [WEAK]
EXPORT C_CAN_IRQHandler [WEAK]
EXPORT SSP1_IRQHandler [WEAK]
EXPORT I2C_IRQHandler [WEAK]
EXPORT TIMER16_0_IRQHandler [WEAK]
@ -242,26 +244,30 @@ Default_Handler PROC
EXPORT TIMER32_1_IRQHandler [WEAK]
EXPORT SSP0_IRQHandler [WEAK]
EXPORT UART_IRQHandler [WEAK]
EXPORT USB_IRQHandler [WEAK]
EXPORT USB_FIQHandler [WEAK]
EXPORT ADC_IRQHandler [WEAK]
EXPORT WDT_IRQHandler [WEAK]
EXPORT BOD_IRQHandler [WEAK]
EXPORT FMC_IRQHandler [WEAK]
EXPORT USBWakeup_IRQHandler [WEAK]
EXPORT PIO_3_IRQHandler [WEAK]
EXPORT PIO_2_IRQHandler [WEAK]
EXPORT PIO_1_IRQHandler [WEAK]
EXPORT PIO_0_IRQHandler [WEAK]
NMI_Handler
FLEX_INT0_IRQHandler
FLEX_INT1_IRQHandler
FLEX_INT2_IRQHandler
FLEX_INT3_IRQHandler
FLEX_INT4_IRQHandler
FLEX_INT5_IRQHandler
FLEX_INT6_IRQHandler
FLEX_INT7_IRQHandler
GINT0_IRQHandler
GINT1_IRQHandler
SLWU_INT0_IRQHandler
SLWU_INT1_IRQHandler
SLWU_INT2_IRQHandler
SLWU_INT3_IRQHandler
SLWU_INT4_IRQHandler
SLWU_INT5_IRQHandler
SLWU_INT6_IRQHandler
SLWU_INT7_IRQHandler
SLWU_INT8_IRQHandler
SLWU_INT9_IRQHandler
SLWU_INT10_IRQHandler
SLWU_INT11_IRQHandler
SLWU_INT12_IRQHandler
C_CAN_IRQHandler
SSP1_IRQHandler
I2C_IRQHandler
TIMER16_0_IRQHandler
@ -270,13 +276,13 @@ TIMER32_0_IRQHandler
TIMER32_1_IRQHandler
SSP0_IRQHandler
UART_IRQHandler
USB_IRQHandler
USB_FIQHandler
ADC_IRQHandler
WDT_IRQHandler
BOD_IRQHandler
FMC_IRQHandler
USBWakeup_IRQHandler
PIO_3_IRQHandler
PIO_2_IRQHandler
PIO_1_IRQHandler
PIO_0_IRQHandler
B .

View File

@ -37,8 +37,7 @@ typedef enum {
ADC0_3,
ADC0_4,
ADC0_5,
ADC0_6,
ADC0_7
ADC0_6
} ADCName;
typedef enum {
@ -51,13 +50,7 @@ typedef enum {
PWM_2,
PWM_3,
PWM_4,
PWM_5,
PWM_6,
PWM_7,
PWM_8,
PWM_9,
PWM_10,
PWM_11
PWM_5
} PWMName;
#define STDIO_UART_TX USBTX

View File

@ -32,9 +32,9 @@ static const PinMap PinMap_ADC[] = {
{P1_0 , ADC0_1, 2},
{P1_1 , ADC0_2, 2},
{P1_2 , ADC0_3, 2},
{P1_4 , ADC0_5, 1},
{P1_10, ADC0_6, 1},
{P1_11, ADC0_7, 1},
{P1_4 , ADC0_4, 1},
{P1_10, ADC0_5, 1},
{P1_11, ADC0_6, 1},
{NC , NC , 0}
};

View File

@ -32,17 +32,11 @@ static const PinMap PinMap_PWM[] = {
{P0_9 , PWM_2, 0x02}, /* MR1 */
/* CT16B1 */
{P1_9 , PWM_4, 0x01}, /* MR0 */
{P1_10, PWM_5, 0x02}, /* MR1 */
{P1_9 , PWM_3, 0x01}, /* MR0 */
{P1_10, PWM_4, 0x02}, /* MR1 */
/* CT32B0 */
{P1_6 , PWM_6, 0x02}, /* MR0 */
{P1_7 , PWM_7, 0x02}, /* MR1 */
{P0_1 , PWM_8, 0x02}, /* MR2 */
/* CT32B1 */
{P1_1 , PWM_9 ,0x03}, /* MR0 */
{P1_2 , PWM_10,0x03}, /* MR1 */
{P0_1 , PWM_5, 0x02}, /* MR2 */
{NC , NC ,0x00}
};
@ -52,28 +46,21 @@ typedef struct {
uint8_t mr;
} timer_mr;
static timer_mr pwm_timer_map[9] = {
static timer_mr pwm_timer_map[5] = {
{0, 0}, /* CT16B0, MR0 */
{0, 1}, /* CT16B0, MR1 */
{1, 0}, /* CT16B1, MR0 */
{1, 1}, /* CT16B1, MR1 */
{2, 0}, /* CT32B0, MR0 */
{2, 1}, /* CT32B0, MR1 */
{2, 2}, /* CT32B0, MR2 */
{3, 0}, /* CT32B1, MR0 */
{3, 1}, /* CT32B1, MR1 */
};
static LPC_TMR_TypeDef *Timers[4] = {
static LPC_TMR_TypeDef *Timers[3] = {
LPC_TMR16B0, LPC_TMR16B1,
LPC_TMR32B0, LPC_TMR32B1
LPC_TMR32B0
};
static unsigned int pwm_clock_mhz;
void pwmout_init(pwmout_t* obj, PinName pin) {
// determine the channel
PWMName pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM);
@ -98,8 +85,13 @@ void pwmout_init(pwmout_t* obj, PinName pin) {
/* Reset Functionality on MR3 controlling the PWM period */
timer->MCR = 1 << 10;
pwm_clock_mhz = SystemCoreClock / 1000000;
if (timer == LPC_TMR16B0 || timer == LPC_TMR16B1) {
/* Set 16-bit timer prescaler to avoid timer expire for default 20ms */
/* This can be also modified by user application, but the prescaler value */
/* might be trade-off to timer accuracy */
timer->PR = 30;
}
// default to 20ms: standard for servos, and fine for e.g. brightness control
pwmout_period_ms(obj, 20);
pwmout_write (obj, 0);
@ -147,12 +139,13 @@ void pwmout_period_ms(pwmout_t* obj, int ms) {
// Set the PWM period, keeping the duty cycle the same.
void pwmout_period_us(pwmout_t* obj, int us) {
int i = 0;
uint32_t period_ticks = pwm_clock_mhz * us;
uint32_t period_ticks;
timer_mr tid = pwm_timer_map[obj->pwm];
LPC_TMR_TypeDef *timer = Timers[tid.timer];
uint32_t old_period_ticks = timer->MR3;
period_ticks = (SystemCoreClock / 1000000 * us) / (timer->PR + 1);
timer->TCR = TCR_RESET;
timer->MR3 = period_ticks;
@ -175,9 +168,9 @@ void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) {
}
void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
uint32_t t_on = (uint32_t)(((uint64_t)SystemCoreClock * (uint64_t)us) / (uint64_t)1000000);
timer_mr tid = pwm_timer_map[obj->pwm];
LPC_TMR_TypeDef *timer = Timers[tid.timer];
uint32_t t_on = (uint32_t)((((uint64_t)SystemCoreClock * (uint64_t)us) / (uint64_t)1000000) / (timer->PR + 1));
timer->TCR = TCR_RESET;
if (t_on > timer->MR3) {

View File

@ -1,7 +1,11 @@
#include "mbed.h"
DigitalOut out(p5);
#if defined(TARGET_LPC1114)
AnalogIn in(p20);
#else
AnalogIn in(p19);
#endif
volatile float w, x, y, z;
int main() {

View File

@ -1,7 +1,11 @@
#include "mbed.h"
DigitalOut out(p5);
#if defined(TARGET_LPC1114)
AnalogIn in(p20);
#else
AnalogIn in(p19);
#endif
int main() {
while(1) {

View File

@ -27,6 +27,10 @@ void in_handler() {
#define PIN_IN (p11)
#define PIN_OUT (p12)
#elif defined(TARGET_LPC1114)
#define PIN_IN (dp1)
#define PIN_OUT (dp2)
#else
#define PIN_IN (p5)
#define PIN_OUT (p25)

View File

@ -26,14 +26,14 @@ int main() {
printf("Initialize PWM on pin 26 with duty cycle: %.2f\n", pwm_p26.read());
#elif defined(TARGET_LPC1114)
PwmOut pwm_p13(p13); // P1_1
PwmOut pwm_p14(p14); // P1_2
PwmOut pwm_dp24(dp24); // P0_1
PwmOut pwm_dp18(dp18); // P1_9
pwm_p13.write(0.75);
pwm_p14.write(0.50);
pwm_dp24.write(0.75);
pwm_dp18.write(0.50);
printf("Initialize PWM on pin 13 with duty cycle: %.2f\n", pwm_p13.read());
printf("Initialize PWM on pin 14 with duty cycle: %.2f\n", pwm_p14.read());
printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_dp24.read());
printf("Initialize PWM on pin 18 with duty cycle: %.2f\n", pwm_dp18.read());
#elif defined(TARGET_KL25Z)
PwmOut pwm_d2(D2);