fixed drive strength

Dependents:   capstone_i2c

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Wed Nov 04 16:30:11 2015 +0000
Revision:
15:a81a8d6c1dfe
Child:
18:da299f395b9e
Synchronized with git revision 46af745ef4405614c3fa49abbd9a706a362ea514

Full URL: https://github.com/mbedmicro/mbed/commit/46af745ef4405614c3fa49abbd9a706a362ea514/

Renamed TARGET_SAM_CortexM0+ to TARGET_SAM_CortexM0P for compatiblity with online compiler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 15:a81a8d6c1dfe 1 /* mbed Microcontroller Library
mbed_official 15:a81a8d6c1dfe 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 15:a81a8d6c1dfe 3 *
mbed_official 15:a81a8d6c1dfe 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 15:a81a8d6c1dfe 5 * you may not use this file except in compliance with the License.
mbed_official 15:a81a8d6c1dfe 6 * You may obtain a copy of the License at
mbed_official 15:a81a8d6c1dfe 7 *
mbed_official 15:a81a8d6c1dfe 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 15:a81a8d6c1dfe 9 *
mbed_official 15:a81a8d6c1dfe 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 15:a81a8d6c1dfe 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 15:a81a8d6c1dfe 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 15:a81a8d6c1dfe 13 * See the License for the specific language governing permissions and
mbed_official 15:a81a8d6c1dfe 14 * limitations under the License.
mbed_official 15:a81a8d6c1dfe 15 */
mbed_official 15:a81a8d6c1dfe 16 #include "mbed_assert.h"
mbed_official 15:a81a8d6c1dfe 17 #include "rtc_api.h"
mbed_official 15:a81a8d6c1dfe 18
mbed_official 15:a81a8d6c1dfe 19 #include "cmsis.h"
mbed_official 15:a81a8d6c1dfe 20 #include "system.h"
mbed_official 15:a81a8d6c1dfe 21
mbed_official 15:a81a8d6c1dfe 22 #include "rtc_count.h"
mbed_official 15:a81a8d6c1dfe 23
mbed_official 15:a81a8d6c1dfe 24 /* Global RTC instance*/
mbed_official 15:a81a8d6c1dfe 25 static struct rtc_module rtc_instance;
mbed_official 15:a81a8d6c1dfe 26
mbed_official 15:a81a8d6c1dfe 27 static int rtc_inited = 0;
mbed_official 15:a81a8d6c1dfe 28
mbed_official 15:a81a8d6c1dfe 29 /* Extern variables */
mbed_official 15:a81a8d6c1dfe 30 extern uint8_t g_sys_init;
mbed_official 15:a81a8d6c1dfe 31
mbed_official 15:a81a8d6c1dfe 32 /** Initialize the RTC
mbed_official 15:a81a8d6c1dfe 33 *
mbed_official 15:a81a8d6c1dfe 34 * Initialize the RTC with default time
mbed_official 15:a81a8d6c1dfe 35 * @param[void] void
mbed_official 15:a81a8d6c1dfe 36 */
mbed_official 15:a81a8d6c1dfe 37 void rtc_init(void)
mbed_official 15:a81a8d6c1dfe 38 {
mbed_official 15:a81a8d6c1dfe 39 if (g_sys_init == 0) {
mbed_official 15:a81a8d6c1dfe 40 system_init();
mbed_official 15:a81a8d6c1dfe 41 g_sys_init = 1;
mbed_official 15:a81a8d6c1dfe 42 }
mbed_official 15:a81a8d6c1dfe 43
mbed_official 15:a81a8d6c1dfe 44 struct rtc_count_config config_rtc_count;
mbed_official 15:a81a8d6c1dfe 45
mbed_official 15:a81a8d6c1dfe 46 rtc_count_get_config_defaults(&config_rtc_count);
mbed_official 15:a81a8d6c1dfe 47
mbed_official 15:a81a8d6c1dfe 48 config_rtc_count.prescaler = RTC_COUNT_PRESCALER_DIV_1024;
mbed_official 15:a81a8d6c1dfe 49 config_rtc_count.mode = RTC_COUNT_MODE_32BIT;
mbed_official 15:a81a8d6c1dfe 50 #ifdef FEATURE_RTC_CONTINUOUSLY_UPDATED
mbed_official 15:a81a8d6c1dfe 51 config_rtc_count.continuously_update = true;
mbed_official 15:a81a8d6c1dfe 52 #endif
mbed_official 15:a81a8d6c1dfe 53
mbed_official 15:a81a8d6c1dfe 54 rtc_count_init(&rtc_instance, RTC, &config_rtc_count);
mbed_official 15:a81a8d6c1dfe 55
mbed_official 15:a81a8d6c1dfe 56 rtc_count_enable(&rtc_instance);
mbed_official 15:a81a8d6c1dfe 57 rtc_inited = 1;
mbed_official 15:a81a8d6c1dfe 58 }
mbed_official 15:a81a8d6c1dfe 59
mbed_official 15:a81a8d6c1dfe 60 /** Frees the RTC
mbed_official 15:a81a8d6c1dfe 61 *
mbed_official 15:a81a8d6c1dfe 62 * @param[void] void
mbed_official 15:a81a8d6c1dfe 63 */
mbed_official 15:a81a8d6c1dfe 64 void rtc_free(void)
mbed_official 15:a81a8d6c1dfe 65 {
mbed_official 15:a81a8d6c1dfe 66 if (rtc_inited) {
mbed_official 15:a81a8d6c1dfe 67 /* Disable the RTC module */
mbed_official 15:a81a8d6c1dfe 68 rtc_count_disable(&rtc_instance);
mbed_official 15:a81a8d6c1dfe 69 /* Disable the RTC clock */
mbed_official 15:a81a8d6c1dfe 70 system_gclk_chan_disable(RTC_GCLK_ID);
mbed_official 15:a81a8d6c1dfe 71 rtc_inited = 0;
mbed_official 15:a81a8d6c1dfe 72 }
mbed_official 15:a81a8d6c1dfe 73 }
mbed_official 15:a81a8d6c1dfe 74
mbed_official 15:a81a8d6c1dfe 75 /** Checks whether RTC is enabled or not
mbed_official 15:a81a8d6c1dfe 76 *
mbed_official 15:a81a8d6c1dfe 77 * To check whether RTC module is enabled or not
mbed_official 15:a81a8d6c1dfe 78 * @param[void] void
mbed_official 15:a81a8d6c1dfe 79 * @return Non zero if RTC is already enabled, else zero
mbed_official 15:a81a8d6c1dfe 80 */
mbed_official 15:a81a8d6c1dfe 81 int rtc_isenabled(void)
mbed_official 15:a81a8d6c1dfe 82 {
mbed_official 15:a81a8d6c1dfe 83 return rtc_inited;
mbed_official 15:a81a8d6c1dfe 84 }
mbed_official 15:a81a8d6c1dfe 85
mbed_official 15:a81a8d6c1dfe 86 /** Reads the RTC value
mbed_official 15:a81a8d6c1dfe 87 *
mbed_official 15:a81a8d6c1dfe 88 * Reads and return the current time in RTC
mbed_official 15:a81a8d6c1dfe 89 * @param[void] void
mbed_official 15:a81a8d6c1dfe 90 * @return the current value in RTC
mbed_official 15:a81a8d6c1dfe 91 */
mbed_official 15:a81a8d6c1dfe 92 time_t rtc_read(void)
mbed_official 15:a81a8d6c1dfe 93 {
mbed_official 15:a81a8d6c1dfe 94 if (!rtc_inited) {
mbed_official 15:a81a8d6c1dfe 95 /* Return invalid time for now! */
mbed_official 15:a81a8d6c1dfe 96 return 0;
mbed_official 15:a81a8d6c1dfe 97 }
mbed_official 15:a81a8d6c1dfe 98 return (time_t)rtc_count_get_count(&rtc_instance);
mbed_official 15:a81a8d6c1dfe 99 }
mbed_official 15:a81a8d6c1dfe 100
mbed_official 15:a81a8d6c1dfe 101 /** Write the RTC value
mbed_official 15:a81a8d6c1dfe 102 *
mbed_official 15:a81a8d6c1dfe 103 * Update the time value in RTC
mbed_official 15:a81a8d6c1dfe 104 * @param[in] t The time value to be written
mbed_official 15:a81a8d6c1dfe 105 * @return void
mbed_official 15:a81a8d6c1dfe 106 */
mbed_official 15:a81a8d6c1dfe 107 void rtc_write(time_t t)
mbed_official 15:a81a8d6c1dfe 108 {
mbed_official 15:a81a8d6c1dfe 109 if (!rtc_inited) {
mbed_official 15:a81a8d6c1dfe 110 /* Initialize the RTC is not yet initialized */
mbed_official 15:a81a8d6c1dfe 111 rtc_init();
mbed_official 15:a81a8d6c1dfe 112 }
mbed_official 15:a81a8d6c1dfe 113
mbed_official 15:a81a8d6c1dfe 114 uint32_t count_value = (uint32_t)t;
mbed_official 15:a81a8d6c1dfe 115 rtc_count_set_count(&rtc_instance, count_value);
mbed_official 15:a81a8d6c1dfe 116 }