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:
80:bdf1132a57cf
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 80:bdf1132a57cf 1 /* mbed Microcontroller Library
mbed_official 80:bdf1132a57cf 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 80:bdf1132a57cf 3 *
mbed_official 80:bdf1132a57cf 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 80:bdf1132a57cf 5 * you may not use this file except in compliance with the License.
mbed_official 80:bdf1132a57cf 6 * You may obtain a copy of the License at
mbed_official 80:bdf1132a57cf 7 *
mbed_official 80:bdf1132a57cf 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 80:bdf1132a57cf 9 *
mbed_official 80:bdf1132a57cf 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 80:bdf1132a57cf 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 80:bdf1132a57cf 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 80:bdf1132a57cf 13 * See the License for the specific language governing permissions and
mbed_official 80:bdf1132a57cf 14 * limitations under the License.
mbed_official 80:bdf1132a57cf 15 * ----------------------------------------------------------------
mbed_official 80:bdf1132a57cf 16 * File: fpga.c
mbed_official 80:bdf1132a57cf 17 * Release: Version 1.0
mbed_official 80:bdf1132a57cf 18 * ----------------------------------------------------------------
mbed_official 80:bdf1132a57cf 19 */
mbed_official 80:bdf1132a57cf 20
mbed_official 80:bdf1132a57cf 21 /*
mbed_official 80:bdf1132a57cf 22 * Code implementation file for the fpga functions.
mbed_official 80:bdf1132a57cf 23 */
mbed_official 80:bdf1132a57cf 24
mbed_official 80:bdf1132a57cf 25 #include "SMM_MPS2.h" // MPS2 common header
mbed_official 80:bdf1132a57cf 26
mbed_official 80:bdf1132a57cf 27 // Function to delay n*ticks (25MHz = 40nS per tick)
mbed_official 80:bdf1132a57cf 28 // Used for I2C drivers
mbed_official 80:bdf1132a57cf 29 void i2c_delay(unsigned int tick)
mbed_official 80:bdf1132a57cf 30 {
mbed_official 80:bdf1132a57cf 31 unsigned int end;
mbed_official 80:bdf1132a57cf 32 unsigned int start;
mbed_official 80:bdf1132a57cf 33
mbed_official 80:bdf1132a57cf 34 start = MPS2_FPGAIO->COUNTER;
mbed_official 80:bdf1132a57cf 35 end = start + (tick);
mbed_official 80:bdf1132a57cf 36
mbed_official 80:bdf1132a57cf 37 if(end >= start)
mbed_official 80:bdf1132a57cf 38 {
mbed_official 80:bdf1132a57cf 39 while (MPS2_FPGAIO->COUNTER >= start && MPS2_FPGAIO->COUNTER < end);
mbed_official 80:bdf1132a57cf 40 }
mbed_official 80:bdf1132a57cf 41 else
mbed_official 80:bdf1132a57cf 42 {
mbed_official 80:bdf1132a57cf 43 while (MPS2_FPGAIO->COUNTER >= start);
mbed_official 80:bdf1132a57cf 44 while (MPS2_FPGAIO->COUNTER < end);
mbed_official 80:bdf1132a57cf 45 }
mbed_official 80:bdf1132a57cf 46 }
mbed_official 80:bdf1132a57cf 47
mbed_official 80:bdf1132a57cf 48 /* Sleep function to delay n*mS
mbed_official 80:bdf1132a57cf 49 * Uses FPGA counter.
mbed_official 80:bdf1132a57cf 50 */
mbed_official 80:bdf1132a57cf 51 void Sleepms(unsigned int msec)
mbed_official 80:bdf1132a57cf 52 {
mbed_official 80:bdf1132a57cf 53 unsigned int end;
mbed_official 80:bdf1132a57cf 54 unsigned int start;
mbed_official 80:bdf1132a57cf 55
mbed_official 80:bdf1132a57cf 56 start = MPS2_FPGAIO->COUNTER;
mbed_official 80:bdf1132a57cf 57 end = start + (25 * msec * 1000);
mbed_official 80:bdf1132a57cf 58
mbed_official 80:bdf1132a57cf 59 if(end >= start)
mbed_official 80:bdf1132a57cf 60 {
mbed_official 80:bdf1132a57cf 61 while (MPS2_FPGAIO->COUNTER >= start && MPS2_FPGAIO->COUNTER < end);
mbed_official 80:bdf1132a57cf 62 }
mbed_official 80:bdf1132a57cf 63 else
mbed_official 80:bdf1132a57cf 64 {
mbed_official 80:bdf1132a57cf 65 while (MPS2_FPGAIO->COUNTER >= start);
mbed_official 80:bdf1132a57cf 66 while (MPS2_FPGAIO->COUNTER < end);
mbed_official 80:bdf1132a57cf 67 }
mbed_official 80:bdf1132a57cf 68 }
mbed_official 80:bdf1132a57cf 69
mbed_official 80:bdf1132a57cf 70 /* Sleep function to delay n*uS
mbed_official 80:bdf1132a57cf 71 */
mbed_official 80:bdf1132a57cf 72 void Sleepus(unsigned int usec)
mbed_official 80:bdf1132a57cf 73 {
mbed_official 80:bdf1132a57cf 74 unsigned int end;
mbed_official 80:bdf1132a57cf 75 unsigned int start;
mbed_official 80:bdf1132a57cf 76
mbed_official 80:bdf1132a57cf 77 start = MPS2_FPGAIO->COUNTER;
mbed_official 80:bdf1132a57cf 78 end = start + (25 * usec);
mbed_official 80:bdf1132a57cf 79
mbed_official 80:bdf1132a57cf 80 if(end >= start)
mbed_official 80:bdf1132a57cf 81 {
mbed_official 80:bdf1132a57cf 82 while (MPS2_FPGAIO->COUNTER >= start && MPS2_FPGAIO->COUNTER < end);
mbed_official 80:bdf1132a57cf 83 }
mbed_official 80:bdf1132a57cf 84 else
mbed_official 80:bdf1132a57cf 85 {
mbed_official 80:bdf1132a57cf 86 while (MPS2_FPGAIO->COUNTER >= start);
mbed_official 80:bdf1132a57cf 87 while (MPS2_FPGAIO->COUNTER < end);
mbed_official 80:bdf1132a57cf 88 }
mbed_official 80:bdf1132a57cf 89 }
mbed_official 80:bdf1132a57cf 90