fixed drive strength

Dependents:   capstone_i2c

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Oct 28 11:17:30 2016 +0100
Revision:
149:156823d33999
Parent:
targets/hal/TARGET_Atmel/TARGET_SAM_CortexM0P/rtc_api.c@64:41a834223ea3
This updates the lib to the mbed lib v128

NOTE: This release includes a restructuring of the file and directory locations and thus some
include paths in your code may need updating accordingly.

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 18:da299f395b9e 24 #if !defined(RTC_CLOCK_SOURCE)
mbed_official 18:da299f395b9e 25 # warning RTC_CLOCK_SOURCE is not defined, assuming RTC_CLOCK_SELECTION_ULP1K.
mbed_official 18:da299f395b9e 26 # define RTC_CLOCK_SOURCE RTC_CLOCK_SELECTION_ULP1K
mbed_official 18:da299f395b9e 27 #endif
mbed_official 18:da299f395b9e 28
mbed_official 15:a81a8d6c1dfe 29 /* Global RTC instance*/
mbed_official 15:a81a8d6c1dfe 30 static struct rtc_module rtc_instance;
mbed_official 15:a81a8d6c1dfe 31
mbed_official 15:a81a8d6c1dfe 32 static int rtc_inited = 0;
mbed_official 15:a81a8d6c1dfe 33
mbed_official 15:a81a8d6c1dfe 34 /* Extern variables */
mbed_official 15:a81a8d6c1dfe 35 extern uint8_t g_sys_init;
mbed_official 15:a81a8d6c1dfe 36
mbed_official 15:a81a8d6c1dfe 37 /** Initialize the RTC
mbed_official 15:a81a8d6c1dfe 38 *
mbed_official 15:a81a8d6c1dfe 39 * Initialize the RTC with default time
mbed_official 15:a81a8d6c1dfe 40 * @param[void] void
mbed_official 15:a81a8d6c1dfe 41 */
mbed_official 15:a81a8d6c1dfe 42 void rtc_init(void)
mbed_official 15:a81a8d6c1dfe 43 {
mbed_official 15:a81a8d6c1dfe 44 if (g_sys_init == 0) {
mbed_official 15:a81a8d6c1dfe 45 system_init();
mbed_official 15:a81a8d6c1dfe 46 g_sys_init = 1;
mbed_official 15:a81a8d6c1dfe 47 }
mbed_official 15:a81a8d6c1dfe 48
mbed_official 15:a81a8d6c1dfe 49 struct rtc_count_config config_rtc_count;
mbed_official 15:a81a8d6c1dfe 50
mbed_official 15:a81a8d6c1dfe 51 rtc_count_get_config_defaults(&config_rtc_count);
mbed_official 15:a81a8d6c1dfe 52
mbed_official 15:a81a8d6c1dfe 53 config_rtc_count.prescaler = RTC_COUNT_PRESCALER_DIV_1024;
mbed_official 15:a81a8d6c1dfe 54 config_rtc_count.mode = RTC_COUNT_MODE_32BIT;
mbed_official 15:a81a8d6c1dfe 55 #ifdef FEATURE_RTC_CONTINUOUSLY_UPDATED
mbed_official 15:a81a8d6c1dfe 56 config_rtc_count.continuously_update = true;
mbed_official 15:a81a8d6c1dfe 57 #endif
mbed_official 15:a81a8d6c1dfe 58
mbed_official 15:a81a8d6c1dfe 59 rtc_count_init(&rtc_instance, RTC, &config_rtc_count);
mbed_official 15:a81a8d6c1dfe 60
mbed_official 15:a81a8d6c1dfe 61 rtc_count_enable(&rtc_instance);
mbed_official 15:a81a8d6c1dfe 62 rtc_inited = 1;
mbed_official 15:a81a8d6c1dfe 63 }
mbed_official 15:a81a8d6c1dfe 64
mbed_official 15:a81a8d6c1dfe 65 /** Frees the RTC
mbed_official 15:a81a8d6c1dfe 66 *
mbed_official 15:a81a8d6c1dfe 67 * @param[void] void
mbed_official 15:a81a8d6c1dfe 68 */
mbed_official 15:a81a8d6c1dfe 69 void rtc_free(void)
mbed_official 15:a81a8d6c1dfe 70 {
mbed_official 15:a81a8d6c1dfe 71 if (rtc_inited) {
mbed_official 15:a81a8d6c1dfe 72 /* Disable the RTC module */
mbed_official 15:a81a8d6c1dfe 73 rtc_count_disable(&rtc_instance);
mbed_official 15:a81a8d6c1dfe 74 /* Disable the RTC clock */
mbed_official 18:da299f395b9e 75 #if (SAMD21) || (SAMR21)
mbed_official 15:a81a8d6c1dfe 76 system_gclk_chan_disable(RTC_GCLK_ID);
mbed_official 18:da299f395b9e 77 #elif (SAML21)
mbed_official 18:da299f395b9e 78 system_gclk_chan_disable(RTC_CLOCK_SOURCE);
mbed_official 18:da299f395b9e 79 #endif
mbed_official 15:a81a8d6c1dfe 80 rtc_inited = 0;
mbed_official 15:a81a8d6c1dfe 81 }
mbed_official 15:a81a8d6c1dfe 82 }
mbed_official 15:a81a8d6c1dfe 83
mbed_official 15:a81a8d6c1dfe 84 /** Checks whether RTC is enabled or not
mbed_official 15:a81a8d6c1dfe 85 *
mbed_official 15:a81a8d6c1dfe 86 * To check whether RTC module is enabled or not
mbed_official 15:a81a8d6c1dfe 87 * @param[void] void
mbed_official 15:a81a8d6c1dfe 88 * @return Non zero if RTC is already enabled, else zero
mbed_official 15:a81a8d6c1dfe 89 */
mbed_official 15:a81a8d6c1dfe 90 int rtc_isenabled(void)
mbed_official 15:a81a8d6c1dfe 91 {
mbed_official 15:a81a8d6c1dfe 92 return rtc_inited;
mbed_official 15:a81a8d6c1dfe 93 }
mbed_official 15:a81a8d6c1dfe 94
mbed_official 15:a81a8d6c1dfe 95 /** Reads the RTC value
mbed_official 15:a81a8d6c1dfe 96 *
mbed_official 15:a81a8d6c1dfe 97 * Reads and return the current time in RTC
mbed_official 15:a81a8d6c1dfe 98 * @param[void] void
mbed_official 15:a81a8d6c1dfe 99 * @return the current value in RTC
mbed_official 15:a81a8d6c1dfe 100 */
mbed_official 15:a81a8d6c1dfe 101 time_t rtc_read(void)
mbed_official 15:a81a8d6c1dfe 102 {
mbed_official 15:a81a8d6c1dfe 103 if (!rtc_inited) {
mbed_official 15:a81a8d6c1dfe 104 /* Return invalid time for now! */
mbed_official 15:a81a8d6c1dfe 105 return 0;
mbed_official 15:a81a8d6c1dfe 106 }
mbed_official 15:a81a8d6c1dfe 107 return (time_t)rtc_count_get_count(&rtc_instance);
mbed_official 15:a81a8d6c1dfe 108 }
mbed_official 15:a81a8d6c1dfe 109
mbed_official 15:a81a8d6c1dfe 110 /** Write the RTC value
mbed_official 15:a81a8d6c1dfe 111 *
mbed_official 15:a81a8d6c1dfe 112 * Update the time value in RTC
mbed_official 15:a81a8d6c1dfe 113 * @param[in] t The time value to be written
mbed_official 15:a81a8d6c1dfe 114 * @return void
mbed_official 15:a81a8d6c1dfe 115 */
mbed_official 15:a81a8d6c1dfe 116 void rtc_write(time_t t)
mbed_official 15:a81a8d6c1dfe 117 {
mbed_official 15:a81a8d6c1dfe 118 if (!rtc_inited) {
mbed_official 15:a81a8d6c1dfe 119 /* Initialize the RTC is not yet initialized */
mbed_official 15:a81a8d6c1dfe 120 rtc_init();
mbed_official 15:a81a8d6c1dfe 121 }
mbed_official 15:a81a8d6c1dfe 122
mbed_official 15:a81a8d6c1dfe 123 uint32_t count_value = (uint32_t)t;
mbed_official 15:a81a8d6c1dfe 124 rtc_count_set_count(&rtc_instance, count_value);
mbed_official 64:41a834223ea3 125 }