PES4 / Mbed OS Queue_02
Committer:
demayer
Date:
Sat Apr 11 08:15:48 2020 +0000
Revision:
1:b36bbc1c6d27
Parent:
0:6bf0743ece18
IMU-library in .h und .cpp file aufgeteilt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
demayer 0:6bf0743ece18 1 /* mbed Microcontroller Library
demayer 0:6bf0743ece18 2 * Copyright (c) 2006-2015 ARM Limited
demayer 0:6bf0743ece18 3 *
demayer 0:6bf0743ece18 4 * Licensed under the Apache License, Version 2.0 (the "License");
demayer 0:6bf0743ece18 5 * you may not use this file except in compliance with the License.
demayer 0:6bf0743ece18 6 * You may obtain a copy of the License at
demayer 0:6bf0743ece18 7 *
demayer 0:6bf0743ece18 8 * http://www.apache.org/licenses/LICENSE-2.0
demayer 0:6bf0743ece18 9 *
demayer 0:6bf0743ece18 10 * Unless required by applicable law or agreed to in writing, software
demayer 0:6bf0743ece18 11 * distributed under the License is distributed on an "AS IS" BASIS,
demayer 0:6bf0743ece18 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
demayer 0:6bf0743ece18 13 * See the License for the specific language governing permissions and
demayer 0:6bf0743ece18 14 * limitations under the License.
demayer 0:6bf0743ece18 15 */
demayer 0:6bf0743ece18 16 #include "rtc_api.h"
demayer 0:6bf0743ece18 17
demayer 0:6bf0743ece18 18 static void init(void) {
demayer 0:6bf0743ece18 19 // enable PORTC clock
demayer 0:6bf0743ece18 20 SIM->SCGC5 |= SIM_SCGC5_PORTC_MASK;
demayer 0:6bf0743ece18 21
demayer 0:6bf0743ece18 22 // enable RTC clock
demayer 0:6bf0743ece18 23 SIM->SCGC6 |= SIM_SCGC6_RTC_MASK;
demayer 0:6bf0743ece18 24
demayer 0:6bf0743ece18 25 // OSC32 as source
demayer 0:6bf0743ece18 26 SIM->SOPT1 &= ~SIM_SOPT1_OSC32KSEL_MASK;
demayer 0:6bf0743ece18 27 SIM->SOPT1 |= SIM_SOPT1_OSC32KSEL(0);
demayer 0:6bf0743ece18 28 }
demayer 0:6bf0743ece18 29
demayer 0:6bf0743ece18 30 void rtc_init(void) {
demayer 0:6bf0743ece18 31 init();
demayer 0:6bf0743ece18 32
demayer 0:6bf0743ece18 33 // Enable the oscillator
demayer 0:6bf0743ece18 34 #if defined (TARGET_K20D50M)
demayer 0:6bf0743ece18 35 RTC->CR |= RTC_CR_OSCE_MASK;
demayer 0:6bf0743ece18 36 #else
demayer 0:6bf0743ece18 37 // Teensy3.1 requires 20pF MCU loading capacitors for 32KHz RTC oscillator
demayer 0:6bf0743ece18 38 /* RTC->CR: SC2P=0,SC4P=1,SC8P=0,SC16P=1,CLKO=0,OSCE=1,UM=0,SUP=0,SPE=0,SWR=0 */
demayer 0:6bf0743ece18 39 RTC->CR |= RTC_CR_OSCE_MASK |RTC_CR_SC16P_MASK | RTC_CR_SC4P_MASK;
demayer 0:6bf0743ece18 40 #endif
demayer 0:6bf0743ece18 41
demayer 0:6bf0743ece18 42 //Configure the TSR. default value: 1
demayer 0:6bf0743ece18 43 RTC->TSR = 1;
demayer 0:6bf0743ece18 44
demayer 0:6bf0743ece18 45 // enable counter
demayer 0:6bf0743ece18 46 RTC->SR |= RTC_SR_TCE_MASK;
demayer 0:6bf0743ece18 47 }
demayer 0:6bf0743ece18 48
demayer 0:6bf0743ece18 49 void rtc_free(void) {
demayer 0:6bf0743ece18 50 // [TODO]
demayer 0:6bf0743ece18 51 }
demayer 0:6bf0743ece18 52
demayer 0:6bf0743ece18 53 /*
demayer 0:6bf0743ece18 54 * Little check routine to see if the RTC has been enabled
demayer 0:6bf0743ece18 55 * 0 = Disabled, 1 = Enabled
demayer 0:6bf0743ece18 56 */
demayer 0:6bf0743ece18 57 int rtc_isenabled(void) {
demayer 0:6bf0743ece18 58 // even if the RTC module is enabled,
demayer 0:6bf0743ece18 59 // as we use RTC_CLKIN and an external clock,
demayer 0:6bf0743ece18 60 // we need to reconfigure the pins. That is why we
demayer 0:6bf0743ece18 61 // call init() if the rtc is enabled
demayer 0:6bf0743ece18 62
demayer 0:6bf0743ece18 63 // if RTC not enabled return 0
demayer 0:6bf0743ece18 64 SIM->SCGC5 |= SIM_SCGC5_PORTC_MASK;
demayer 0:6bf0743ece18 65 SIM->SCGC6 |= SIM_SCGC6_RTC_MASK;
demayer 0:6bf0743ece18 66 if ((RTC->SR & RTC_SR_TCE_MASK) == 0)
demayer 0:6bf0743ece18 67 return 0;
demayer 0:6bf0743ece18 68
demayer 0:6bf0743ece18 69 init();
demayer 0:6bf0743ece18 70 return 1;
demayer 0:6bf0743ece18 71 }
demayer 0:6bf0743ece18 72
demayer 0:6bf0743ece18 73 time_t rtc_read(void) {
demayer 0:6bf0743ece18 74 return RTC->TSR;
demayer 0:6bf0743ece18 75 }
demayer 0:6bf0743ece18 76
demayer 0:6bf0743ece18 77 void rtc_write(time_t t) {
demayer 0:6bf0743ece18 78 // disable counter
demayer 0:6bf0743ece18 79 RTC->SR &= ~RTC_SR_TCE_MASK;
demayer 0:6bf0743ece18 80
demayer 0:6bf0743ece18 81 // write seconds
demayer 0:6bf0743ece18 82 RTC->TSR = t;
demayer 0:6bf0743ece18 83
demayer 0:6bf0743ece18 84 // re-enable counter
demayer 0:6bf0743ece18 85 RTC->SR |= RTC_SR_TCE_MASK;
demayer 0:6bf0743ece18 86 }