added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
JojoS
Date:
Sat Sep 10 15:32:04 2016 +0000
Revision:
147:ba84b7dc41a7
Parent:
107:414e9c822e99
added prescaler for 16 bit timers (solution as in LPC11xx), default prescaler 31 for max 28 ms period time

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 107:414e9c822e99 1 /* mbed Microcontroller Library
mbed_official 107:414e9c822e99 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 107:414e9c822e99 3 *
mbed_official 107:414e9c822e99 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 107:414e9c822e99 5 * you may not use this file except in compliance with the License.
mbed_official 107:414e9c822e99 6 * You may obtain a copy of the License at
mbed_official 107:414e9c822e99 7 *
mbed_official 107:414e9c822e99 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 107:414e9c822e99 9 *
mbed_official 107:414e9c822e99 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 107:414e9c822e99 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 107:414e9c822e99 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 107:414e9c822e99 13 * See the License for the specific language governing permissions and
mbed_official 107:414e9c822e99 14 * limitations under the License.
mbed_official 107:414e9c822e99 15 */
mbed_official 107:414e9c822e99 16 #include "port_api.h"
mbed_official 107:414e9c822e99 17 #include "pinmap.h"
mbed_official 107:414e9c822e99 18 #include "gpio_api.h"
mbed_official 107:414e9c822e99 19 #include "ioport.h"
mbed_official 107:414e9c822e99 20
mbed_official 107:414e9c822e99 21 extern uint8_t g_sys_init;
mbed_official 107:414e9c822e99 22
mbed_official 107:414e9c822e99 23 void port_init(port_t *obj, PortName port, int mask, PinDirection dir)
mbed_official 107:414e9c822e99 24 {
mbed_official 107:414e9c822e99 25 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 26 if (g_sys_init == 0) {
mbed_official 107:414e9c822e99 27 sysclk_init();
mbed_official 107:414e9c822e99 28 system_board_init();
mbed_official 107:414e9c822e99 29 g_sys_init = 1;
mbed_official 107:414e9c822e99 30 }
mbed_official 107:414e9c822e99 31 obj->port = port;
mbed_official 107:414e9c822e99 32 obj->mask = mask;
mbed_official 107:414e9c822e99 33
mbed_official 107:414e9c822e99 34 switch (dir) {
mbed_official 107:414e9c822e99 35 case PIN_INPUT :
mbed_official 107:414e9c822e99 36 ioport_set_port_dir(port, mask, IOPORT_DIR_INPUT);
mbed_official 107:414e9c822e99 37 break;
mbed_official 107:414e9c822e99 38 case PIN_OUTPUT:
mbed_official 107:414e9c822e99 39 ioport_set_port_dir(port, mask, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 40 break;
mbed_official 107:414e9c822e99 41 case PIN_INPUT_OUTPUT:
mbed_official 107:414e9c822e99 42 ioport_set_port_dir(port, mask, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 43 break;
mbed_official 107:414e9c822e99 44 }
mbed_official 107:414e9c822e99 45 ioport_set_port_mode(port, mask, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 46 }
mbed_official 107:414e9c822e99 47
mbed_official 107:414e9c822e99 48 void port_mode(port_t *obj, PinMode mode)
mbed_official 107:414e9c822e99 49 {
mbed_official 107:414e9c822e99 50 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 51 obj->mode = mode;
mbed_official 107:414e9c822e99 52 switch (mode) {
mbed_official 107:414e9c822e99 53 case PullNone :
mbed_official 107:414e9c822e99 54 ioport_set_port_mode(obj->port, obj->mask, IOPORT_MODE_OPEN_DRAIN);
mbed_official 107:414e9c822e99 55 break;
mbed_official 107:414e9c822e99 56 case PullUp:
mbed_official 107:414e9c822e99 57 ioport_set_port_mode(obj->port, obj->mask, IOPORT_MODE_PULLUP);
mbed_official 107:414e9c822e99 58 break;
mbed_official 107:414e9c822e99 59 case PullDown:
mbed_official 107:414e9c822e99 60 ioport_set_port_mode(obj->port, obj->mask, IOPORT_MODE_PULLDOWN);
mbed_official 107:414e9c822e99 61 break;
mbed_official 107:414e9c822e99 62 }
mbed_official 107:414e9c822e99 63 }
mbed_official 107:414e9c822e99 64
mbed_official 107:414e9c822e99 65 void port_dir(port_t *obj, PinDirection dir)
mbed_official 107:414e9c822e99 66 {
mbed_official 107:414e9c822e99 67 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 68 obj->direction = dir;
mbed_official 107:414e9c822e99 69 switch (dir) {
mbed_official 107:414e9c822e99 70 case PIN_INPUT :
mbed_official 107:414e9c822e99 71 ioport_set_port_dir(obj->port, obj->mask, IOPORT_DIR_INPUT);
mbed_official 107:414e9c822e99 72 break;
mbed_official 107:414e9c822e99 73 case PIN_OUTPUT:
mbed_official 107:414e9c822e99 74 ioport_set_port_dir(obj->port, obj->mask, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 75 break;
mbed_official 107:414e9c822e99 76 case PIN_INPUT_OUTPUT:
mbed_official 107:414e9c822e99 77 ioport_set_port_dir(obj->port, obj->mask, IOPORT_DIR_OUTPUT);
mbed_official 107:414e9c822e99 78 break;
mbed_official 107:414e9c822e99 79 }
mbed_official 107:414e9c822e99 80 }
mbed_official 107:414e9c822e99 81
mbed_official 107:414e9c822e99 82 void port_write(port_t *obj, int value)
mbed_official 107:414e9c822e99 83 {
mbed_official 107:414e9c822e99 84 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 85 ioport_set_port_level(obj->port, obj->mask, value);
mbed_official 107:414e9c822e99 86 }
mbed_official 107:414e9c822e99 87
mbed_official 107:414e9c822e99 88 int port_read(port_t *obj)
mbed_official 107:414e9c822e99 89 {
mbed_official 107:414e9c822e99 90 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 91 return ioport_get_port_level(obj->port, obj->mask);
mbed_official 107:414e9c822e99 92 }