Alexan E
/
blinky
blinky example from NXP code bundle for LPC11Uxx. No mbed library used
KEIL_LPC11U_COMMON_LIB/timer16.c@1:0f1be4e75668, 2012-05-28 (annotated)
- Committer:
- alexan_e
- Date:
- Mon May 28 00:13:23 2012 +0000
- Revision:
- 1:0f1be4e75668
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alexan_e | 1:0f1be4e75668 | 1 | /**************************************************************************** |
alexan_e | 1:0f1be4e75668 | 2 | * $Id:: timer16.c 9190 2012-02-16 20:59:45Z nxp41306 $ |
alexan_e | 1:0f1be4e75668 | 3 | * Project: NXP LPC11Uxx 16-bit timer example |
alexan_e | 1:0f1be4e75668 | 4 | * |
alexan_e | 1:0f1be4e75668 | 5 | * Description: |
alexan_e | 1:0f1be4e75668 | 6 | * This file contains 16-bit timer code example which include timer |
alexan_e | 1:0f1be4e75668 | 7 | * initialization, timer interrupt handler, and related APIs for |
alexan_e | 1:0f1be4e75668 | 8 | * timer setup. |
alexan_e | 1:0f1be4e75668 | 9 | * |
alexan_e | 1:0f1be4e75668 | 10 | **************************************************************************** |
alexan_e | 1:0f1be4e75668 | 11 | * Software that is described herein is for illustrative purposes only |
alexan_e | 1:0f1be4e75668 | 12 | * which provides customers with programming information regarding the |
alexan_e | 1:0f1be4e75668 | 13 | * products. This software is supplied "AS IS" without any warranties. |
alexan_e | 1:0f1be4e75668 | 14 | * NXP Semiconductors assumes no responsibility or liability for the |
alexan_e | 1:0f1be4e75668 | 15 | * use of the software, conveys no license or title under any patent, |
alexan_e | 1:0f1be4e75668 | 16 | * copyright, or mask work right to the product. NXP Semiconductors |
alexan_e | 1:0f1be4e75668 | 17 | * reserves the right to make changes in the software without |
alexan_e | 1:0f1be4e75668 | 18 | * notification. NXP Semiconductors also make no representation or |
alexan_e | 1:0f1be4e75668 | 19 | * warranty that such application will be suitable for the specified |
alexan_e | 1:0f1be4e75668 | 20 | * use without further testing or modification. |
alexan_e | 1:0f1be4e75668 | 21 | |
alexan_e | 1:0f1be4e75668 | 22 | * Permission to use, copy, modify, and distribute this software and its |
alexan_e | 1:0f1be4e75668 | 23 | * documentation is hereby granted, under NXP Semiconductors' |
alexan_e | 1:0f1be4e75668 | 24 | * relevant copyright in the software, without fee, provided that it |
alexan_e | 1:0f1be4e75668 | 25 | * is used in conjunction with NXP Semiconductors microcontrollers. This |
alexan_e | 1:0f1be4e75668 | 26 | * copyright, permission, and disclaimer notice must appear in all copies of |
alexan_e | 1:0f1be4e75668 | 27 | * this code. |
alexan_e | 1:0f1be4e75668 | 28 | |
alexan_e | 1:0f1be4e75668 | 29 | ****************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 30 | |
alexan_e | 1:0f1be4e75668 | 31 | #include "LPC11Uxx.h" |
alexan_e | 1:0f1be4e75668 | 32 | #include "timer16.h" |
alexan_e | 1:0f1be4e75668 | 33 | #include "nmi.h" |
alexan_e | 1:0f1be4e75668 | 34 | |
alexan_e | 1:0f1be4e75668 | 35 | volatile uint32_t timer16_0_counter[2] = {0,0}; |
alexan_e | 1:0f1be4e75668 | 36 | volatile uint32_t timer16_1_counter[2] = {0,0}; |
alexan_e | 1:0f1be4e75668 | 37 | volatile uint32_t timer16_0_capture[2] = {0,0}; |
alexan_e | 1:0f1be4e75668 | 38 | volatile uint32_t timer16_1_capture[2] = {0,0}; |
alexan_e | 1:0f1be4e75668 | 39 | volatile uint32_t timer16_0_period = 0; |
alexan_e | 1:0f1be4e75668 | 40 | volatile uint32_t timer16_1_period = 0; |
alexan_e | 1:0f1be4e75668 | 41 | |
alexan_e | 1:0f1be4e75668 | 42 | /***************************************************************************** |
alexan_e | 1:0f1be4e75668 | 43 | ** Function name: delayMs |
alexan_e | 1:0f1be4e75668 | 44 | ** |
alexan_e | 1:0f1be4e75668 | 45 | ** Descriptions: Start the timer delay in milo seconds |
alexan_e | 1:0f1be4e75668 | 46 | ** until elapsed |
alexan_e | 1:0f1be4e75668 | 47 | ** |
alexan_e | 1:0f1be4e75668 | 48 | ** parameters: timer number, Delay value in milo second |
alexan_e | 1:0f1be4e75668 | 49 | ** |
alexan_e | 1:0f1be4e75668 | 50 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 51 | ** |
alexan_e | 1:0f1be4e75668 | 52 | *****************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 53 | void delayMs(uint8_t timer_num, uint32_t delayInMs) |
alexan_e | 1:0f1be4e75668 | 54 | { |
alexan_e | 1:0f1be4e75668 | 55 | if (timer_num == 0) |
alexan_e | 1:0f1be4e75668 | 56 | { |
alexan_e | 1:0f1be4e75668 | 57 | /* |
alexan_e | 1:0f1be4e75668 | 58 | * setup timer #0 for delay |
alexan_e | 1:0f1be4e75668 | 59 | */ |
alexan_e | 1:0f1be4e75668 | 60 | LPC_CT16B0->TCR = 0x02; /* reset timer */ |
alexan_e | 1:0f1be4e75668 | 61 | LPC_CT16B0->PR = 0x00; /* set prescaler to zero */ |
alexan_e | 1:0f1be4e75668 | 62 | LPC_CT16B0->MR0 = delayInMs * (SystemCoreClock / 1000); |
alexan_e | 1:0f1be4e75668 | 63 | LPC_CT16B0->IR = 0xff; /* reset all interrrupts */ |
alexan_e | 1:0f1be4e75668 | 64 | LPC_CT16B0->MCR = 0x04; /* stop timer on match */ |
alexan_e | 1:0f1be4e75668 | 65 | LPC_CT16B0->TCR = 0x01; /* start timer */ |
alexan_e | 1:0f1be4e75668 | 66 | /* wait until delay time has elapsed */ |
alexan_e | 1:0f1be4e75668 | 67 | while (LPC_CT16B0->TCR & 0x01); |
alexan_e | 1:0f1be4e75668 | 68 | } |
alexan_e | 1:0f1be4e75668 | 69 | else if (timer_num == 1) |
alexan_e | 1:0f1be4e75668 | 70 | { |
alexan_e | 1:0f1be4e75668 | 71 | /* |
alexan_e | 1:0f1be4e75668 | 72 | * setup timer #1 for delay |
alexan_e | 1:0f1be4e75668 | 73 | */ |
alexan_e | 1:0f1be4e75668 | 74 | LPC_CT16B1->TCR = 0x02; /* reset timer */ |
alexan_e | 1:0f1be4e75668 | 75 | LPC_CT16B1->PR = 0x00; /* set prescaler to zero */ |
alexan_e | 1:0f1be4e75668 | 76 | LPC_CT16B1->MR0 = delayInMs * (SystemCoreClock / 1000); |
alexan_e | 1:0f1be4e75668 | 77 | LPC_CT16B1->IR = 0xff; /* reset all interrrupts */ |
alexan_e | 1:0f1be4e75668 | 78 | LPC_CT16B1->MCR = 0x04; /* stop timer on match */ |
alexan_e | 1:0f1be4e75668 | 79 | LPC_CT16B1->TCR = 0x01; /* start timer */ |
alexan_e | 1:0f1be4e75668 | 80 | /* wait until delay time has elapsed */ |
alexan_e | 1:0f1be4e75668 | 81 | while (LPC_CT16B1->TCR & 0x01); |
alexan_e | 1:0f1be4e75668 | 82 | } |
alexan_e | 1:0f1be4e75668 | 83 | return; |
alexan_e | 1:0f1be4e75668 | 84 | } |
alexan_e | 1:0f1be4e75668 | 85 | |
alexan_e | 1:0f1be4e75668 | 86 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 87 | ** Function name: TIMER_0_IRQHandler |
alexan_e | 1:0f1be4e75668 | 88 | ** |
alexan_e | 1:0f1be4e75668 | 89 | ** Descriptions: Timer/CounterX and CaptureX interrupt handler |
alexan_e | 1:0f1be4e75668 | 90 | ** |
alexan_e | 1:0f1be4e75668 | 91 | ** parameters: None |
alexan_e | 1:0f1be4e75668 | 92 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 93 | ** |
alexan_e | 1:0f1be4e75668 | 94 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 95 | extern "C" void TIMER16_0_IRQHandler(void) |
alexan_e | 1:0f1be4e75668 | 96 | { |
alexan_e | 1:0f1be4e75668 | 97 | if ( LPC_CT16B0->IR & (0x1<<0) ) |
alexan_e | 1:0f1be4e75668 | 98 | { |
alexan_e | 1:0f1be4e75668 | 99 | LPC_CT16B0->IR = 0x1<<0; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 100 | timer16_0_counter[0]++; |
alexan_e | 1:0f1be4e75668 | 101 | } |
alexan_e | 1:0f1be4e75668 | 102 | if ( LPC_CT16B0->IR & (0x1<<1) ) |
alexan_e | 1:0f1be4e75668 | 103 | { |
alexan_e | 1:0f1be4e75668 | 104 | LPC_CT16B0->IR = 0x1<<1; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 105 | timer16_0_counter[1]++; |
alexan_e | 1:0f1be4e75668 | 106 | } |
alexan_e | 1:0f1be4e75668 | 107 | if ( LPC_CT16B0->IR & (0x1<<4) ) |
alexan_e | 1:0f1be4e75668 | 108 | { |
alexan_e | 1:0f1be4e75668 | 109 | LPC_CT16B0->IR = 0x1<<4; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 110 | timer16_0_capture[0]++; |
alexan_e | 1:0f1be4e75668 | 111 | } |
alexan_e | 1:0f1be4e75668 | 112 | if ( LPC_CT16B0->IR & (0x1<<5) ) |
alexan_e | 1:0f1be4e75668 | 113 | { |
alexan_e | 1:0f1be4e75668 | 114 | LPC_CT16B0->IR = 0x1<<5; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 115 | timer16_0_capture[1]++; |
alexan_e | 1:0f1be4e75668 | 116 | } |
alexan_e | 1:0f1be4e75668 | 117 | return; |
alexan_e | 1:0f1be4e75668 | 118 | } |
alexan_e | 1:0f1be4e75668 | 119 | |
alexan_e | 1:0f1be4e75668 | 120 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 121 | ** Function name: TIMER_1_IRQHandler |
alexan_e | 1:0f1be4e75668 | 122 | ** |
alexan_e | 1:0f1be4e75668 | 123 | ** Descriptions: Timer/CounterX and CaptureX interrupt handler |
alexan_e | 1:0f1be4e75668 | 124 | ** |
alexan_e | 1:0f1be4e75668 | 125 | ** parameters: None |
alexan_e | 1:0f1be4e75668 | 126 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 127 | ** |
alexan_e | 1:0f1be4e75668 | 128 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 129 | extern "C" void TIMER16_1_IRQHandler(void) |
alexan_e | 1:0f1be4e75668 | 130 | { |
alexan_e | 1:0f1be4e75668 | 131 | if ( LPC_CT16B1->IR & (0x1<<0) ) |
alexan_e | 1:0f1be4e75668 | 132 | { |
alexan_e | 1:0f1be4e75668 | 133 | LPC_CT16B1->IR = 0x1<<0; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 134 | timer16_1_counter[0]++; |
alexan_e | 1:0f1be4e75668 | 135 | } |
alexan_e | 1:0f1be4e75668 | 136 | if ( LPC_CT16B1->IR & (0x1<<1) ) |
alexan_e | 1:0f1be4e75668 | 137 | { |
alexan_e | 1:0f1be4e75668 | 138 | LPC_CT16B1->IR = 0x1<<1; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 139 | timer16_1_counter[1]++; |
alexan_e | 1:0f1be4e75668 | 140 | } |
alexan_e | 1:0f1be4e75668 | 141 | if ( LPC_CT16B1->IR & (0x1<<4) ) |
alexan_e | 1:0f1be4e75668 | 142 | { |
alexan_e | 1:0f1be4e75668 | 143 | LPC_CT16B1->IR = 0x1<<4; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 144 | timer16_1_capture[0]++; |
alexan_e | 1:0f1be4e75668 | 145 | } |
alexan_e | 1:0f1be4e75668 | 146 | if ( LPC_CT16B1->IR & (0x1<<5) ) |
alexan_e | 1:0f1be4e75668 | 147 | { |
alexan_e | 1:0f1be4e75668 | 148 | LPC_CT16B1->IR = 0x1<<5; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 149 | timer16_1_capture[1]++; |
alexan_e | 1:0f1be4e75668 | 150 | } |
alexan_e | 1:0f1be4e75668 | 151 | return; |
alexan_e | 1:0f1be4e75668 | 152 | } |
alexan_e | 1:0f1be4e75668 | 153 | |
alexan_e | 1:0f1be4e75668 | 154 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 155 | ** Function name: enable_timer |
alexan_e | 1:0f1be4e75668 | 156 | ** |
alexan_e | 1:0f1be4e75668 | 157 | ** Descriptions: Enable timer |
alexan_e | 1:0f1be4e75668 | 158 | ** |
alexan_e | 1:0f1be4e75668 | 159 | ** parameters: timer number: 0 or 1 |
alexan_e | 1:0f1be4e75668 | 160 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 161 | ** |
alexan_e | 1:0f1be4e75668 | 162 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 163 | void enable_timer16(uint8_t timer_num) |
alexan_e | 1:0f1be4e75668 | 164 | { |
alexan_e | 1:0f1be4e75668 | 165 | if ( timer_num == 0 ) |
alexan_e | 1:0f1be4e75668 | 166 | { |
alexan_e | 1:0f1be4e75668 | 167 | LPC_CT16B0->TCR = 1; |
alexan_e | 1:0f1be4e75668 | 168 | } |
alexan_e | 1:0f1be4e75668 | 169 | else |
alexan_e | 1:0f1be4e75668 | 170 | { |
alexan_e | 1:0f1be4e75668 | 171 | LPC_CT16B1->TCR = 1; |
alexan_e | 1:0f1be4e75668 | 172 | } |
alexan_e | 1:0f1be4e75668 | 173 | return; |
alexan_e | 1:0f1be4e75668 | 174 | } |
alexan_e | 1:0f1be4e75668 | 175 | |
alexan_e | 1:0f1be4e75668 | 176 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 177 | ** Function name: disable_timer |
alexan_e | 1:0f1be4e75668 | 178 | ** |
alexan_e | 1:0f1be4e75668 | 179 | ** Descriptions: Disable timer |
alexan_e | 1:0f1be4e75668 | 180 | ** |
alexan_e | 1:0f1be4e75668 | 181 | ** parameters: timer number: 0 or 1 |
alexan_e | 1:0f1be4e75668 | 182 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 183 | ** |
alexan_e | 1:0f1be4e75668 | 184 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 185 | void disable_timer16(uint8_t timer_num) |
alexan_e | 1:0f1be4e75668 | 186 | { |
alexan_e | 1:0f1be4e75668 | 187 | if ( timer_num == 0 ) |
alexan_e | 1:0f1be4e75668 | 188 | { |
alexan_e | 1:0f1be4e75668 | 189 | LPC_CT16B0->TCR = 0; |
alexan_e | 1:0f1be4e75668 | 190 | } |
alexan_e | 1:0f1be4e75668 | 191 | else |
alexan_e | 1:0f1be4e75668 | 192 | { |
alexan_e | 1:0f1be4e75668 | 193 | LPC_CT16B1->TCR = 0; |
alexan_e | 1:0f1be4e75668 | 194 | } |
alexan_e | 1:0f1be4e75668 | 195 | return; |
alexan_e | 1:0f1be4e75668 | 196 | } |
alexan_e | 1:0f1be4e75668 | 197 | |
alexan_e | 1:0f1be4e75668 | 198 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 199 | ** Function name: reset_timer |
alexan_e | 1:0f1be4e75668 | 200 | ** |
alexan_e | 1:0f1be4e75668 | 201 | ** Descriptions: Reset timer |
alexan_e | 1:0f1be4e75668 | 202 | ** |
alexan_e | 1:0f1be4e75668 | 203 | ** parameters: timer number: 0 or 1 |
alexan_e | 1:0f1be4e75668 | 204 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 205 | ** |
alexan_e | 1:0f1be4e75668 | 206 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 207 | void reset_timer16(uint8_t timer_num) |
alexan_e | 1:0f1be4e75668 | 208 | { |
alexan_e | 1:0f1be4e75668 | 209 | uint32_t regVal; |
alexan_e | 1:0f1be4e75668 | 210 | |
alexan_e | 1:0f1be4e75668 | 211 | if ( timer_num == 0 ) |
alexan_e | 1:0f1be4e75668 | 212 | { |
alexan_e | 1:0f1be4e75668 | 213 | regVal = LPC_CT16B0->TCR; |
alexan_e | 1:0f1be4e75668 | 214 | regVal |= 0x02; |
alexan_e | 1:0f1be4e75668 | 215 | LPC_CT16B0->TCR = regVal; |
alexan_e | 1:0f1be4e75668 | 216 | } |
alexan_e | 1:0f1be4e75668 | 217 | else |
alexan_e | 1:0f1be4e75668 | 218 | { |
alexan_e | 1:0f1be4e75668 | 219 | regVal = LPC_CT16B1->TCR; |
alexan_e | 1:0f1be4e75668 | 220 | regVal |= 0x02; |
alexan_e | 1:0f1be4e75668 | 221 | LPC_CT16B1->TCR = regVal; |
alexan_e | 1:0f1be4e75668 | 222 | } |
alexan_e | 1:0f1be4e75668 | 223 | return; |
alexan_e | 1:0f1be4e75668 | 224 | } |
alexan_e | 1:0f1be4e75668 | 225 | |
alexan_e | 1:0f1be4e75668 | 226 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 227 | ** Function name: Set_timer_capture |
alexan_e | 1:0f1be4e75668 | 228 | ** |
alexan_e | 1:0f1be4e75668 | 229 | ** Descriptions: set timer capture based on LOC number. |
alexan_e | 1:0f1be4e75668 | 230 | ** |
alexan_e | 1:0f1be4e75668 | 231 | ** parameters: timer number and location number |
alexan_e | 1:0f1be4e75668 | 232 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 233 | ** |
alexan_e | 1:0f1be4e75668 | 234 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 235 | void set_timer16_capture(uint8_t timer_num, uint8_t location ) |
alexan_e | 1:0f1be4e75668 | 236 | { |
alexan_e | 1:0f1be4e75668 | 237 | if ( timer_num == 0 ) |
alexan_e | 1:0f1be4e75668 | 238 | { |
alexan_e | 1:0f1be4e75668 | 239 | /* Timer0_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 240 | if ( location == 0 ) |
alexan_e | 1:0f1be4e75668 | 241 | { |
alexan_e | 1:0f1be4e75668 | 242 | LPC_IOCON->PIO1_16 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 243 | LPC_IOCON->PIO1_16 |= 0x02; /* Timer0_16 CAP0 */ |
alexan_e | 1:0f1be4e75668 | 244 | // LPC_IOCON->PIO1_17 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 245 | // LPC_IOCON->PIO1_17 |= 0x01; /* Timer0_16 CAP1 */ |
alexan_e | 1:0f1be4e75668 | 246 | } |
alexan_e | 1:0f1be4e75668 | 247 | else if ( location == 1 ) |
alexan_e | 1:0f1be4e75668 | 248 | { |
alexan_e | 1:0f1be4e75668 | 249 | LPC_IOCON->PIO0_2 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 250 | LPC_IOCON->PIO0_2 |= 0x02; /* Timer0_16 CAP0 */ |
alexan_e | 1:0f1be4e75668 | 251 | } |
alexan_e | 1:0f1be4e75668 | 252 | else |
alexan_e | 1:0f1be4e75668 | 253 | { |
alexan_e | 1:0f1be4e75668 | 254 | while ( 1 ); /* Fatal location number error */ |
alexan_e | 1:0f1be4e75668 | 255 | } |
alexan_e | 1:0f1be4e75668 | 256 | } |
alexan_e | 1:0f1be4e75668 | 257 | else |
alexan_e | 1:0f1be4e75668 | 258 | { |
alexan_e | 1:0f1be4e75668 | 259 | /* Timer1_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 260 | if ( location == 0 ) |
alexan_e | 1:0f1be4e75668 | 261 | { |
alexan_e | 1:0f1be4e75668 | 262 | LPC_IOCON->PIO0_20 &= ~0x07; /* Timer1_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 263 | LPC_IOCON->PIO0_20 |= 0x01; /* Timer1_16 CAP0 */ |
alexan_e | 1:0f1be4e75668 | 264 | // LPC_IOCON->PIO1_18 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 265 | // LPC_IOCON->PIO1_18 |= 0x01; /* Timer1_16 CAP1 */ |
alexan_e | 1:0f1be4e75668 | 266 | } |
alexan_e | 1:0f1be4e75668 | 267 | else |
alexan_e | 1:0f1be4e75668 | 268 | { |
alexan_e | 1:0f1be4e75668 | 269 | while ( 1 ); /* Fatal location number error */ |
alexan_e | 1:0f1be4e75668 | 270 | } |
alexan_e | 1:0f1be4e75668 | 271 | } |
alexan_e | 1:0f1be4e75668 | 272 | return; |
alexan_e | 1:0f1be4e75668 | 273 | } |
alexan_e | 1:0f1be4e75668 | 274 | |
alexan_e | 1:0f1be4e75668 | 275 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 276 | ** Function name: Set_timer_match |
alexan_e | 1:0f1be4e75668 | 277 | ** |
alexan_e | 1:0f1be4e75668 | 278 | ** Descriptions: set timer match based on LOC number. |
alexan_e | 1:0f1be4e75668 | 279 | ** |
alexan_e | 1:0f1be4e75668 | 280 | ** parameters: timer number, match enable, and location number |
alexan_e | 1:0f1be4e75668 | 281 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 282 | ** |
alexan_e | 1:0f1be4e75668 | 283 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 284 | void set_timer16_match(uint8_t timer_num, uint8_t match_enable, uint8_t location) |
alexan_e | 1:0f1be4e75668 | 285 | { |
alexan_e | 1:0f1be4e75668 | 286 | if ( timer_num == 0 ) |
alexan_e | 1:0f1be4e75668 | 287 | { |
alexan_e | 1:0f1be4e75668 | 288 | if ( match_enable & 0x01 ) |
alexan_e | 1:0f1be4e75668 | 289 | { |
alexan_e | 1:0f1be4e75668 | 290 | /* Timer0_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 291 | if ( location == 0 ) |
alexan_e | 1:0f1be4e75668 | 292 | { |
alexan_e | 1:0f1be4e75668 | 293 | LPC_IOCON->PIO0_8 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 294 | LPC_IOCON->PIO0_8 |= 0x02; /* Timer0_16 MAT0 */ |
alexan_e | 1:0f1be4e75668 | 295 | } |
alexan_e | 1:0f1be4e75668 | 296 | else if ( location == 1 ) |
alexan_e | 1:0f1be4e75668 | 297 | { |
alexan_e | 1:0f1be4e75668 | 298 | LPC_IOCON->PIO1_13 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 299 | LPC_IOCON->PIO1_13 |= 0x02; /* Timer0_16 MAT0 */ |
alexan_e | 1:0f1be4e75668 | 300 | } |
alexan_e | 1:0f1be4e75668 | 301 | } |
alexan_e | 1:0f1be4e75668 | 302 | if ( match_enable & 0x02 ) |
alexan_e | 1:0f1be4e75668 | 303 | { |
alexan_e | 1:0f1be4e75668 | 304 | /* Timer0_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 305 | if ( location == 0 ) |
alexan_e | 1:0f1be4e75668 | 306 | { |
alexan_e | 1:0f1be4e75668 | 307 | LPC_IOCON->PIO0_9 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 308 | LPC_IOCON->PIO0_9 |= 0x02; /* Timer0_16 MAT1 */ |
alexan_e | 1:0f1be4e75668 | 309 | } |
alexan_e | 1:0f1be4e75668 | 310 | else if ( location == 1 ) |
alexan_e | 1:0f1be4e75668 | 311 | { |
alexan_e | 1:0f1be4e75668 | 312 | LPC_IOCON->PIO1_14 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 313 | LPC_IOCON->PIO1_14 |= 0x02; /* Timer0_16 MAT1 */ |
alexan_e | 1:0f1be4e75668 | 314 | } |
alexan_e | 1:0f1be4e75668 | 315 | } |
alexan_e | 1:0f1be4e75668 | 316 | if ( match_enable & 0x04 ) |
alexan_e | 1:0f1be4e75668 | 317 | { |
alexan_e | 1:0f1be4e75668 | 318 | /* Timer0_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 319 | if ( location == 0 ) |
alexan_e | 1:0f1be4e75668 | 320 | { |
alexan_e | 1:0f1be4e75668 | 321 | #ifdef __SWD_DISABLED |
alexan_e | 1:0f1be4e75668 | 322 | LPC_IOCON->SWCLK_PIO0_10 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 323 | LPC_IOCON->SWCLK_PIO0_10 |= 0x03; /* Timer0_16 MAT2 */ |
alexan_e | 1:0f1be4e75668 | 324 | #endif |
alexan_e | 1:0f1be4e75668 | 325 | } |
alexan_e | 1:0f1be4e75668 | 326 | else if ( location == 1 ) |
alexan_e | 1:0f1be4e75668 | 327 | { |
alexan_e | 1:0f1be4e75668 | 328 | LPC_IOCON->PIO1_15 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 329 | LPC_IOCON->PIO1_15 |= 0x02; /* Timer0_16 MAT0 */ |
alexan_e | 1:0f1be4e75668 | 330 | } |
alexan_e | 1:0f1be4e75668 | 331 | } |
alexan_e | 1:0f1be4e75668 | 332 | } |
alexan_e | 1:0f1be4e75668 | 333 | else if ( timer_num == 1 ) |
alexan_e | 1:0f1be4e75668 | 334 | { |
alexan_e | 1:0f1be4e75668 | 335 | if ( match_enable & 0x01 ) |
alexan_e | 1:0f1be4e75668 | 336 | { |
alexan_e | 1:0f1be4e75668 | 337 | /* Timer1_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 338 | if ( location == 0 ) |
alexan_e | 1:0f1be4e75668 | 339 | { |
alexan_e | 1:0f1be4e75668 | 340 | LPC_IOCON->PIO0_21 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 341 | LPC_IOCON->PIO0_21 |= 0x01; /* Timer1_16 MAT0 */ |
alexan_e | 1:0f1be4e75668 | 342 | } |
alexan_e | 1:0f1be4e75668 | 343 | } |
alexan_e | 1:0f1be4e75668 | 344 | if ( match_enable & 0x02 ) |
alexan_e | 1:0f1be4e75668 | 345 | { |
alexan_e | 1:0f1be4e75668 | 346 | /* Timer1_16 I/O config */ |
alexan_e | 1:0f1be4e75668 | 347 | if ( location == 0 ) |
alexan_e | 1:0f1be4e75668 | 348 | { |
alexan_e | 1:0f1be4e75668 | 349 | LPC_IOCON->PIO0_22 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 350 | LPC_IOCON->PIO0_22 |= 0x02; /* Timer1_16 MAT1 */ |
alexan_e | 1:0f1be4e75668 | 351 | } |
alexan_e | 1:0f1be4e75668 | 352 | else if ( location == 1 ) |
alexan_e | 1:0f1be4e75668 | 353 | { |
alexan_e | 1:0f1be4e75668 | 354 | LPC_IOCON->PIO1_23 &= ~0x07; |
alexan_e | 1:0f1be4e75668 | 355 | LPC_IOCON->PIO1_23 |= 0x01; /* Timer1_16 MAT0 */ |
alexan_e | 1:0f1be4e75668 | 356 | } |
alexan_e | 1:0f1be4e75668 | 357 | } |
alexan_e | 1:0f1be4e75668 | 358 | } |
alexan_e | 1:0f1be4e75668 | 359 | return; |
alexan_e | 1:0f1be4e75668 | 360 | } |
alexan_e | 1:0f1be4e75668 | 361 | |
alexan_e | 1:0f1be4e75668 | 362 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 363 | ** Function name: init_timer |
alexan_e | 1:0f1be4e75668 | 364 | ** |
alexan_e | 1:0f1be4e75668 | 365 | ** Descriptions: Initialize timer, set timer interval, reset timer, |
alexan_e | 1:0f1be4e75668 | 366 | ** install timer interrupt handler |
alexan_e | 1:0f1be4e75668 | 367 | ** |
alexan_e | 1:0f1be4e75668 | 368 | ** parameters: timer number and timer interval |
alexan_e | 1:0f1be4e75668 | 369 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 370 | ** |
alexan_e | 1:0f1be4e75668 | 371 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 372 | void init_timer16(uint8_t timer_num, uint32_t TimerInterval) |
alexan_e | 1:0f1be4e75668 | 373 | { |
alexan_e | 1:0f1be4e75668 | 374 | if ( timer_num == 0 ) |
alexan_e | 1:0f1be4e75668 | 375 | { |
alexan_e | 1:0f1be4e75668 | 376 | /* Some of the I/O pins need to be clearfully planned if |
alexan_e | 1:0f1be4e75668 | 377 | you use below module because JTAG and TIMER CAP/MAT pins are muxed. */ |
alexan_e | 1:0f1be4e75668 | 378 | LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); |
alexan_e | 1:0f1be4e75668 | 379 | |
alexan_e | 1:0f1be4e75668 | 380 | LPC_CT16B0->MR0 = TimerInterval; |
alexan_e | 1:0f1be4e75668 | 381 | LPC_CT16B0->MR1 = TimerInterval; |
alexan_e | 1:0f1be4e75668 | 382 | #if TIMER_MATCH |
alexan_e | 1:0f1be4e75668 | 383 | timer16_0_counter[0] = 0; |
alexan_e | 1:0f1be4e75668 | 384 | timer16_0_counter[1] = 0; |
alexan_e | 1:0f1be4e75668 | 385 | set_timer16_match(timer_num, 0x07, 0); |
alexan_e | 1:0f1be4e75668 | 386 | LPC_CT16B0->EMR &= ~(0xFF<<4); |
alexan_e | 1:0f1be4e75668 | 387 | LPC_CT16B0->EMR |= ((0x3<<4)|(0x3<<6)|(0x3<<8)); |
alexan_e | 1:0f1be4e75668 | 388 | #else |
alexan_e | 1:0f1be4e75668 | 389 | timer16_0_capture[0] = 0; |
alexan_e | 1:0f1be4e75668 | 390 | timer16_0_capture[1] = 0; |
alexan_e | 1:0f1be4e75668 | 391 | set_timer16_capture(timer_num, 0); |
alexan_e | 1:0f1be4e75668 | 392 | /* Capture 0 and 1 on rising edge, interrupt enable. */ |
alexan_e | 1:0f1be4e75668 | 393 | LPC_CT16B0->CCR = (0x5<<0)|(0x5<<3); |
alexan_e | 1:0f1be4e75668 | 394 | #endif |
alexan_e | 1:0f1be4e75668 | 395 | LPC_CT16B0->MCR = (0x3<<0)|(0x3<<3); /* Interrupt and Reset on MR0 and MR1 */ |
alexan_e | 1:0f1be4e75668 | 396 | |
alexan_e | 1:0f1be4e75668 | 397 | /* Enable the TIMER0 Interrupt */ |
alexan_e | 1:0f1be4e75668 | 398 | #if NMI_ENABLED |
alexan_e | 1:0f1be4e75668 | 399 | NVIC_DisableIRQ(TIMER_16_0_IRQn); |
alexan_e | 1:0f1be4e75668 | 400 | NMI_Init( TIMER_16_0_IRQn ); |
alexan_e | 1:0f1be4e75668 | 401 | #else |
alexan_e | 1:0f1be4e75668 | 402 | NVIC_EnableIRQ(TIMER_16_0_IRQn); |
alexan_e | 1:0f1be4e75668 | 403 | #endif |
alexan_e | 1:0f1be4e75668 | 404 | } |
alexan_e | 1:0f1be4e75668 | 405 | else if ( timer_num == 1 ) |
alexan_e | 1:0f1be4e75668 | 406 | { |
alexan_e | 1:0f1be4e75668 | 407 | /* Some of the I/O pins need to be clearfully planned if |
alexan_e | 1:0f1be4e75668 | 408 | you use below module because JTAG and TIMER CAP/MAT pins are muxed. */ |
alexan_e | 1:0f1be4e75668 | 409 | LPC_SYSCON->SYSAHBCLKCTRL |= (1<<8); |
alexan_e | 1:0f1be4e75668 | 410 | LPC_CT16B1->MR0 = TimerInterval; |
alexan_e | 1:0f1be4e75668 | 411 | LPC_CT16B1->MR1 = TimerInterval; |
alexan_e | 1:0f1be4e75668 | 412 | #if TIMER_MATCH |
alexan_e | 1:0f1be4e75668 | 413 | timer16_1_counter[0] = 0; |
alexan_e | 1:0f1be4e75668 | 414 | timer16_1_counter[1] = 0; |
alexan_e | 1:0f1be4e75668 | 415 | set_timer16_match(timer_num, 0x07, 0); |
alexan_e | 1:0f1be4e75668 | 416 | LPC_CT16B1->EMR &= ~(0xFF<<4); |
alexan_e | 1:0f1be4e75668 | 417 | LPC_CT16B1->EMR |= ((0x3<<4)|(0x3<<6)|(0x3<<8)); |
alexan_e | 1:0f1be4e75668 | 418 | #else |
alexan_e | 1:0f1be4e75668 | 419 | timer16_1_capture[0] = 0; |
alexan_e | 1:0f1be4e75668 | 420 | timer16_1_capture[1] = 0; |
alexan_e | 1:0f1be4e75668 | 421 | set_timer16_capture(timer_num, 0); |
alexan_e | 1:0f1be4e75668 | 422 | /* Capture 0 and 1 on rising edge, interrupt enable. */ |
alexan_e | 1:0f1be4e75668 | 423 | LPC_CT16B1->CCR = (0x5<<0)|(0x5<<3); |
alexan_e | 1:0f1be4e75668 | 424 | #endif |
alexan_e | 1:0f1be4e75668 | 425 | LPC_CT16B1->MCR = (0x3<<0)|(0x3<<3); /* Interrupt and Reset on MR0 and MR1 */ |
alexan_e | 1:0f1be4e75668 | 426 | |
alexan_e | 1:0f1be4e75668 | 427 | /* Enable the TIMER1 Interrupt */ |
alexan_e | 1:0f1be4e75668 | 428 | #if NMI_ENABLED |
alexan_e | 1:0f1be4e75668 | 429 | NVIC_DisableIRQ(TIMER_16_1_IRQn); |
alexan_e | 1:0f1be4e75668 | 430 | NMI_Init( TIMER_16_1_IRQn ); |
alexan_e | 1:0f1be4e75668 | 431 | #else |
alexan_e | 1:0f1be4e75668 | 432 | NVIC_EnableIRQ(TIMER_16_1_IRQn); |
alexan_e | 1:0f1be4e75668 | 433 | #endif |
alexan_e | 1:0f1be4e75668 | 434 | } |
alexan_e | 1:0f1be4e75668 | 435 | return; |
alexan_e | 1:0f1be4e75668 | 436 | } |
alexan_e | 1:0f1be4e75668 | 437 | |
alexan_e | 1:0f1be4e75668 | 438 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 439 | ** Function name: init_timer16PWM |
alexan_e | 1:0f1be4e75668 | 440 | ** |
alexan_e | 1:0f1be4e75668 | 441 | ** Descriptions: Initialize timer as PWM |
alexan_e | 1:0f1be4e75668 | 442 | ** |
alexan_e | 1:0f1be4e75668 | 443 | ** parameters: timer number, period and match enable: |
alexan_e | 1:0f1be4e75668 | 444 | ** match_enable[0] = PWM for MAT0 |
alexan_e | 1:0f1be4e75668 | 445 | ** match_enable[1] = PWM for MAT1 |
alexan_e | 1:0f1be4e75668 | 446 | ** match_enable[2] = PWM for MAT2 |
alexan_e | 1:0f1be4e75668 | 447 | ** |
alexan_e | 1:0f1be4e75668 | 448 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 449 | ** |
alexan_e | 1:0f1be4e75668 | 450 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 451 | void init_timer16PWM(uint8_t timer_num, uint32_t period, uint8_t match_enable, uint8_t cap_enabled) |
alexan_e | 1:0f1be4e75668 | 452 | { |
alexan_e | 1:0f1be4e75668 | 453 | disable_timer16(timer_num); |
alexan_e | 1:0f1be4e75668 | 454 | |
alexan_e | 1:0f1be4e75668 | 455 | if (timer_num == 1) |
alexan_e | 1:0f1be4e75668 | 456 | { |
alexan_e | 1:0f1be4e75668 | 457 | /* Some of the I/O pins need to be clearfully planned if |
alexan_e | 1:0f1be4e75668 | 458 | you use below module because JTAG and TIMER CAP/MAT pins are muxed. */ |
alexan_e | 1:0f1be4e75668 | 459 | LPC_SYSCON->SYSAHBCLKCTRL |= (1<<8); |
alexan_e | 1:0f1be4e75668 | 460 | |
alexan_e | 1:0f1be4e75668 | 461 | /* Setup the external match register */ |
alexan_e | 1:0f1be4e75668 | 462 | LPC_CT16B1->EMR = (1<<EMC3)|(1<<EMC2)|(1<<EMC1)|(2<<EMC0)|(1<<3)|(match_enable); |
alexan_e | 1:0f1be4e75668 | 463 | |
alexan_e | 1:0f1be4e75668 | 464 | /* Setup the outputs */ |
alexan_e | 1:0f1be4e75668 | 465 | /* If match0 is enabled, set the output */ |
alexan_e | 1:0f1be4e75668 | 466 | set_timer16_match(timer_num, match_enable, 0 ); |
alexan_e | 1:0f1be4e75668 | 467 | |
alexan_e | 1:0f1be4e75668 | 468 | /* Enable the selected PWMs and enable Match3 */ |
alexan_e | 1:0f1be4e75668 | 469 | LPC_CT16B1->PWMC = (1<<3)|(match_enable); |
alexan_e | 1:0f1be4e75668 | 470 | |
alexan_e | 1:0f1be4e75668 | 471 | /* Setup the match registers */ |
alexan_e | 1:0f1be4e75668 | 472 | /* set the period value to a global variable */ |
alexan_e | 1:0f1be4e75668 | 473 | timer16_1_period = period; |
alexan_e | 1:0f1be4e75668 | 474 | LPC_CT16B1->MR3 = timer16_1_period; |
alexan_e | 1:0f1be4e75668 | 475 | LPC_CT16B1->MR0 = timer16_1_period/2; |
alexan_e | 1:0f1be4e75668 | 476 | LPC_CT16B1->MR1 = timer16_1_period/2; |
alexan_e | 1:0f1be4e75668 | 477 | LPC_CT16B1->MR2 = timer16_1_period/2; |
alexan_e | 1:0f1be4e75668 | 478 | |
alexan_e | 1:0f1be4e75668 | 479 | /* Set match control register */ |
alexan_e | 1:0f1be4e75668 | 480 | LPC_CT16B1->MCR = 1<<10;// | 1<<9; /* Reset on MR3 */ |
alexan_e | 1:0f1be4e75668 | 481 | |
alexan_e | 1:0f1be4e75668 | 482 | if (cap_enabled) |
alexan_e | 1:0f1be4e75668 | 483 | { |
alexan_e | 1:0f1be4e75668 | 484 | /* Use location 0 for test. */ |
alexan_e | 1:0f1be4e75668 | 485 | set_timer16_capture( timer_num, 0 ); |
alexan_e | 1:0f1be4e75668 | 486 | LPC_CT16B1->IR = 0xF; /* clear interrupt flag */ |
alexan_e | 1:0f1be4e75668 | 487 | |
alexan_e | 1:0f1be4e75668 | 488 | /* Set the capture control register */ |
alexan_e | 1:0f1be4e75668 | 489 | LPC_CT16B1->CCR = 7; |
alexan_e | 1:0f1be4e75668 | 490 | |
alexan_e | 1:0f1be4e75668 | 491 | } |
alexan_e | 1:0f1be4e75668 | 492 | /* Enable the TIMER1 Interrupt */ |
alexan_e | 1:0f1be4e75668 | 493 | NVIC_EnableIRQ(TIMER_16_1_IRQn); |
alexan_e | 1:0f1be4e75668 | 494 | } |
alexan_e | 1:0f1be4e75668 | 495 | else |
alexan_e | 1:0f1be4e75668 | 496 | { |
alexan_e | 1:0f1be4e75668 | 497 | LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7); |
alexan_e | 1:0f1be4e75668 | 498 | |
alexan_e | 1:0f1be4e75668 | 499 | /* Setup the external match register */ |
alexan_e | 1:0f1be4e75668 | 500 | LPC_CT16B0->EMR = (1<<EMC3)|(1<<EMC2)|(1<<EMC1)|(1<<EMC0)|(1<<3)|(match_enable); |
alexan_e | 1:0f1be4e75668 | 501 | |
alexan_e | 1:0f1be4e75668 | 502 | /* Setup the outputs */ |
alexan_e | 1:0f1be4e75668 | 503 | /* If match0 is enabled, set the output */ |
alexan_e | 1:0f1be4e75668 | 504 | set_timer16_match(timer_num, match_enable, 0 ); |
alexan_e | 1:0f1be4e75668 | 505 | |
alexan_e | 1:0f1be4e75668 | 506 | /* Enable the selected PWMs and enable Match3 */ |
alexan_e | 1:0f1be4e75668 | 507 | LPC_CT16B0->PWMC = (1<<3)|(match_enable); |
alexan_e | 1:0f1be4e75668 | 508 | |
alexan_e | 1:0f1be4e75668 | 509 | /* Setup the match registers */ |
alexan_e | 1:0f1be4e75668 | 510 | /* set the period value to a global variable */ |
alexan_e | 1:0f1be4e75668 | 511 | timer16_0_period = period; |
alexan_e | 1:0f1be4e75668 | 512 | LPC_CT16B0->MR3 = timer16_0_period; |
alexan_e | 1:0f1be4e75668 | 513 | LPC_CT16B0->MR0 = timer16_0_period/2; |
alexan_e | 1:0f1be4e75668 | 514 | LPC_CT16B0->MR1 = timer16_0_period/2; |
alexan_e | 1:0f1be4e75668 | 515 | LPC_CT16B0->MR2 = timer16_0_period/2; |
alexan_e | 1:0f1be4e75668 | 516 | |
alexan_e | 1:0f1be4e75668 | 517 | /* Set the match control register */ |
alexan_e | 1:0f1be4e75668 | 518 | LPC_CT16B0->MCR = 1<<10; /* Reset on MR3 */ |
alexan_e | 1:0f1be4e75668 | 519 | |
alexan_e | 1:0f1be4e75668 | 520 | /* Enable the TIMER1 Interrupt */ |
alexan_e | 1:0f1be4e75668 | 521 | NVIC_EnableIRQ(TIMER_16_0_IRQn); |
alexan_e | 1:0f1be4e75668 | 522 | } |
alexan_e | 1:0f1be4e75668 | 523 | } |
alexan_e | 1:0f1be4e75668 | 524 | |
alexan_e | 1:0f1be4e75668 | 525 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 526 | ** Function name: pwm16_setMatch |
alexan_e | 1:0f1be4e75668 | 527 | ** |
alexan_e | 1:0f1be4e75668 | 528 | ** Descriptions: Set the pwm16 match values |
alexan_e | 1:0f1be4e75668 | 529 | ** |
alexan_e | 1:0f1be4e75668 | 530 | ** parameters: timer number, match numner and the value |
alexan_e | 1:0f1be4e75668 | 531 | ** |
alexan_e | 1:0f1be4e75668 | 532 | ** Returned value: None |
alexan_e | 1:0f1be4e75668 | 533 | ** |
alexan_e | 1:0f1be4e75668 | 534 | ******************************************************************************/ |
alexan_e | 1:0f1be4e75668 | 535 | void setMatch_timer16PWM (uint8_t timer_num, uint8_t match_nr, uint32_t value) |
alexan_e | 1:0f1be4e75668 | 536 | { |
alexan_e | 1:0f1be4e75668 | 537 | if (timer_num) |
alexan_e | 1:0f1be4e75668 | 538 | { |
alexan_e | 1:0f1be4e75668 | 539 | switch (match_nr) |
alexan_e | 1:0f1be4e75668 | 540 | { |
alexan_e | 1:0f1be4e75668 | 541 | case 0: |
alexan_e | 1:0f1be4e75668 | 542 | LPC_CT16B1->MR0 = value; |
alexan_e | 1:0f1be4e75668 | 543 | break; |
alexan_e | 1:0f1be4e75668 | 544 | case 1: |
alexan_e | 1:0f1be4e75668 | 545 | LPC_CT16B1->MR1 = value; |
alexan_e | 1:0f1be4e75668 | 546 | break; |
alexan_e | 1:0f1be4e75668 | 547 | case 2: |
alexan_e | 1:0f1be4e75668 | 548 | LPC_CT16B1->MR2 = value; |
alexan_e | 1:0f1be4e75668 | 549 | break; |
alexan_e | 1:0f1be4e75668 | 550 | case 3: |
alexan_e | 1:0f1be4e75668 | 551 | LPC_CT16B1->MR3 = value; |
alexan_e | 1:0f1be4e75668 | 552 | break; |
alexan_e | 1:0f1be4e75668 | 553 | default: |
alexan_e | 1:0f1be4e75668 | 554 | break; |
alexan_e | 1:0f1be4e75668 | 555 | } |
alexan_e | 1:0f1be4e75668 | 556 | } |
alexan_e | 1:0f1be4e75668 | 557 | else |
alexan_e | 1:0f1be4e75668 | 558 | { |
alexan_e | 1:0f1be4e75668 | 559 | switch (match_nr) |
alexan_e | 1:0f1be4e75668 | 560 | { |
alexan_e | 1:0f1be4e75668 | 561 | case 0: |
alexan_e | 1:0f1be4e75668 | 562 | LPC_CT16B0->MR0 = value; |
alexan_e | 1:0f1be4e75668 | 563 | break; |
alexan_e | 1:0f1be4e75668 | 564 | case 1: |
alexan_e | 1:0f1be4e75668 | 565 | LPC_CT16B0->MR1 = value; |
alexan_e | 1:0f1be4e75668 | 566 | break; |
alexan_e | 1:0f1be4e75668 | 567 | case 2: |
alexan_e | 1:0f1be4e75668 | 568 | LPC_CT16B0->MR2 = value; |
alexan_e | 1:0f1be4e75668 | 569 | break; |
alexan_e | 1:0f1be4e75668 | 570 | case 3: |
alexan_e | 1:0f1be4e75668 | 571 | LPC_CT16B0->MR3 = value; |
alexan_e | 1:0f1be4e75668 | 572 | break; |
alexan_e | 1:0f1be4e75668 | 573 | default: |
alexan_e | 1:0f1be4e75668 | 574 | break; |
alexan_e | 1:0f1be4e75668 | 575 | } |
alexan_e | 1:0f1be4e75668 | 576 | } |
alexan_e | 1:0f1be4e75668 | 577 | } |
alexan_e | 1:0f1be4e75668 | 578 | |
alexan_e | 1:0f1be4e75668 | 579 | /****************************************************************************** |
alexan_e | 1:0f1be4e75668 | 580 | ** End Of File |
alexan_e | 1:0f1be4e75668 | 581 | ******************************************************************************/ |