1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-30 16:24:09 +03:00

[sam] state-of-the-art commit

This commit is contained in:
aethaniel
2011-07-11 01:51:24 +02:00
parent ef4abb62b0
commit 03c064e946
94 changed files with 551 additions and 1051 deletions

View File

@ -59,4 +59,6 @@
#include "include/usart.h"
#include "include/wdt.h"
#include "include/timetick.h"
#endif /* _LIB_SAM3S_ */

View File

@ -0,0 +1,78 @@
/* ----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support
* ----------------------------------------------------------------------------
* Copyright (c) 2009, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
/**
* \file
*
* \par Purpose
*
* Methods and definitions for Global time tick and wait functions.
*
* Defines a common and simpliest use of Time Tick, to increase tickCount
* every 1ms, the application can get this value through GetTickCount().
*
* \par Usage
*
* -# Configure the System Tick with TimeTick_Configure() when MCK changed
* \note
* Must be done before any invoke of GetTickCount(), Wait() or Sleep().
* -# Uses GetTickCount to get current tick value.
* -# Uses Wait to wait several ms.
* -# Uses Sleep to enter wait for interrupt mode to wait several ms.
*
*/
#ifndef _TIMETICK_
#define _TIMETICK_
/*----------------------------------------------------------------------------
* Headers
*----------------------------------------------------------------------------*/
#include <stdint.h>
/*----------------------------------------------------------------------------
* Definitions
*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------
* Global functions
*----------------------------------------------------------------------------*/
extern uint32_t TimeTick_Configure( uint32_t dwNew_MCK ) ;
extern void TimeTick_Increment( void ) ;
extern uint32_t GetTickCount( void ) ;
extern void Wait( volatile uint32_t dwMs ) ;
extern void Sleep( volatile uint32_t dwMs ) ;
#endif /* _TIMETICK_ */

View File

@ -3,7 +3,7 @@ acc.o:
00000000 T ACC_Configure
00000000 T ACC_GetComparisionResult
00000000 T ACC_SetComparisionPair
00000030 r __FUNCTION__.5770
00000030 r __FUNCTION__.5780
U __assert_func
adc.o:
@ -22,11 +22,11 @@ adc.o:
00000000 T ADC_SetCompareMode
00000000 T ADC_SetComparisonWindow
00000000 T ADC_cfgFrequency
00000098 r __FUNCTION__.5791
00000080 r __FUNCTION__.5797
00000068 r __FUNCTION__.5802
00000098 r __FUNCTION__.5801
00000080 r __FUNCTION__.5807
00000068 r __FUNCTION__.5812
U __assert_func
00000000 d adwValue.5790
00000000 d adwValue.5800
00000000 t calcul_startup
async.o:
@ -41,7 +41,7 @@ dacc.o:
00000000 T DACC_Initialize
00000000 T DACC_SetConversionData
00000000 T DACC_WriteBuffer
00000034 r __FUNCTION__.5774
00000034 r __FUNCTION__.5784
U __assert_func
efc.o:
@ -54,10 +54,10 @@ efc.o:
00000000 T EFC_SetWaitState
00000000 T EFC_StartCommand
00000000 T EFC_TranslateAddress
00000000 b IAP_PerformCommand.6415
00000134 r __FUNCTION__.6377
00000120 r __FUNCTION__.6385
0000010c r __FUNCTION__.6397
00000000 b IAP_PerformCommand.6425
00000134 r __FUNCTION__.6387
00000120 r __FUNCTION__.6395
0000010c r __FUNCTION__.6407
U __assert_func
exceptions.o:
@ -123,13 +123,13 @@ flashd.o:
00000000 T FLASHD_SetGPNVM
00000000 T FLASHD_Unlock
00000000 T FLASHD_Write
00000198 r __FUNCTION__.6133
00000188 r __FUNCTION__.6149
00000178 r __FUNCTION__.6201
00000164 r __FUNCTION__.6210
00000154 r __FUNCTION__.6214
00000140 r __FUNCTION__.6218
0000012c r __FUNCTION__.6223
00000198 r __FUNCTION__.6143
00000188 r __FUNCTION__.6159
00000178 r __FUNCTION__.6211
00000164 r __FUNCTION__.6220
00000154 r __FUNCTION__.6224
00000140 r __FUNCTION__.6228
0000012c r __FUNCTION__.6233
U __assert_func
00000000 b _adwPageBuffer
00000000 d _aucPageBuffer
@ -159,7 +159,7 @@ pio_capture.o:
00000000 T PIO_CaptureInit
U PMC_EnablePeripheral
00000000 b _PioCaptureCopy
00000088 r __FUNCTION__.6371
00000088 r __FUNCTION__.6381
U __assert_func
pmc.o:
@ -168,13 +168,13 @@ pmc.o:
00000000 T PMC_EnableAllPeripherals
00000000 T PMC_EnablePeripheral
00000000 T PMC_IsPeriphEnabled
00000048 r __FUNCTION__.5764
00000030 r __FUNCTION__.5768
0000001c r __FUNCTION__.5790
00000048 r __FUNCTION__.5774
00000030 r __FUNCTION__.5778
0000001c r __FUNCTION__.5800
U __assert_func
pwmc.o:
00000284 r C.2.7069
00000284 r C.2.7084
00000000 t FindClockConfiguration
00000000 T PWMC_ConfigureChannel
00000000 T PWMC_ConfigureChannelExt
@ -201,14 +201,14 @@ pwmc.o:
00000000 T PWMC_SetSyncChannelUpdatePeriod
00000000 T PWMC_SetSyncChannelUpdateUnlock
00000000 T PWMC_WriteBuffer
000002b0 r __FUNCTION__.5768
0000026c r __FUNCTION__.5779
00000250 r __FUNCTION__.5794
00000238 r __FUNCTION__.5805
00000224 r __FUNCTION__.5816
00000210 r __FUNCTION__.5823
000001f0 r __FUNCTION__.5905
000001d4 r __FUNCTION__.5911
000002b0 r __FUNCTION__.5778
0000026c r __FUNCTION__.5789
00000250 r __FUNCTION__.5804
00000238 r __FUNCTION__.5815
00000224 r __FUNCTION__.5826
00000210 r __FUNCTION__.5833
000001f0 r __FUNCTION__.5915
000001d4 r __FUNCTION__.5921
U __assert_func
rtc.o:
@ -224,9 +224,9 @@ rtc.o:
00000000 T RTC_SetHourMode
00000000 T RTC_SetTime
00000000 T RTC_SetTimeAlarm
00000074 r __FUNCTION__.5765
00000064 r __FUNCTION__.5774
00000054 r __FUNCTION__.5779
00000074 r __FUNCTION__.5775
00000064 r __FUNCTION__.5784
00000054 r __FUNCTION__.5789
U __assert_func
rtt.o:
@ -235,8 +235,8 @@ rtt.o:
00000000 T RTT_GetTime
00000000 T RTT_SetAlarm
00000000 T RTT_SetPrescaler
00000048 r __FUNCTION__.5772
00000038 r __FUNCTION__.5780
00000048 r __FUNCTION__.5782
00000038 r __FUNCTION__.5790
U __assert_func
spi.o:
@ -300,9 +300,9 @@ tc.o:
00000000 T TC_FindMckDivisor
00000000 T TC_Start
00000000 T TC_Stop
0000006c r __FUNCTION__.5767
00000060 r __FUNCTION__.5773
00000058 r __FUNCTION__.5779
0000006c r __FUNCTION__.5777
00000060 r __FUNCTION__.5783
00000058 r __FUNCTION__.5789
U __assert_func
twi.o:
@ -321,18 +321,18 @@ twi.o:
00000000 T TWI_Stop
00000000 T TWI_TransferComplete
00000000 T TWI_WriteByte
00000180 r __FUNCTION__.6359
0000016c r __FUNCTION__.6374
00000160 r __FUNCTION__.6378
00000150 r __FUNCTION__.6385
00000140 r __FUNCTION__.6389
00000130 r __FUNCTION__.6394
00000120 r __FUNCTION__.6402
00000110 r __FUNCTION__.6416
00000100 r __FUNCTION__.6421
000000f0 r __FUNCTION__.6425
000000dc r __FUNCTION__.6430
000000c4 r __FUNCTION__.6434
00000180 r __FUNCTION__.6369
0000016c r __FUNCTION__.6384
00000160 r __FUNCTION__.6388
00000150 r __FUNCTION__.6395
00000140 r __FUNCTION__.6399
00000130 r __FUNCTION__.6404
00000120 r __FUNCTION__.6412
00000110 r __FUNCTION__.6426
00000100 r __FUNCTION__.6431
000000f0 r __FUNCTION__.6435
000000dc r __FUNCTION__.6440
000000c4 r __FUNCTION__.6444
U __assert_func
twid.o:
@ -352,10 +352,10 @@ twid.o:
U TWI_Stop
U TWI_TransferComplete
U TWI_WriteByte
000000b4 r __FUNCTION__.6364
000000a4 r __FUNCTION__.6371
00000098 r __FUNCTION__.6384
0000008c r __FUNCTION__.6406
000000b4 r __FUNCTION__.6374
000000a4 r __FUNCTION__.6381
00000098 r __FUNCTION__.6394
0000008c r __FUNCTION__.6416
U __assert_func
usart.o:
@ -374,7 +374,7 @@ usart.o:
00000000 T USART_SetTransmitterEnabled
00000000 T USART_Write
00000000 T USART_WriteBuffer
00000024 r __FUNCTION__.6158
00000024 r __FUNCTION__.6168
U __assert_func
wdt.o:
@ -385,3 +385,13 @@ wdt.o:
00000000 T WDT_Restart
core_cm3.o:
timetick.o:
00000000 T GetTickCount
00000000 t NVIC_SetPriority
00000000 T Sleep
00000000 t SysTick_Config
00000000 T TimeTick_Configure
00000000 T TimeTick_Increment
00000000 T Wait
00000000 b _dwTickCount

View File

@ -3,7 +3,7 @@ acc.o:
00000000 T ACC_Configure
00000000 T ACC_GetComparisionResult
00000000 T ACC_SetComparisionPair
00000000 r __FUNCTION__.5770
00000000 r __FUNCTION__.5780
U __assert_func
adc.o:
@ -22,8 +22,8 @@ adc.o:
00000000 T ADC_SetCompareMode
00000000 T ADC_SetComparisonWindow
00000000 T ADC_cfgFrequency
00000000 r __FUNCTION__.5797
00000015 r __FUNCTION__.5802
00000000 r __FUNCTION__.5807
00000015 r __FUNCTION__.5812
U __assert_func
async.o:
@ -38,7 +38,7 @@ dacc.o:
00000000 T DACC_Initialize
00000000 T DACC_SetConversionData
00000000 T DACC_WriteBuffer
00000000 r __FUNCTION__.5774
00000000 r __FUNCTION__.5784
U __assert_func
efc.o:
@ -51,10 +51,10 @@ efc.o:
00000000 T EFC_SetWaitState
00000000 T EFC_StartCommand
00000000 T EFC_TranslateAddress
00000000 b IAP_PerformCommand.6406
00000000 r __FUNCTION__.6368
00000015 r __FUNCTION__.6376
00000028 r __FUNCTION__.6388
00000000 b IAP_PerformCommand.6416
00000000 r __FUNCTION__.6378
00000015 r __FUNCTION__.6386
00000028 r __FUNCTION__.6398
U __assert_func
exceptions.o:
@ -120,12 +120,12 @@ flashd.o:
00000000 T FLASHD_SetGPNVM
00000000 T FLASHD_Unlock
00000000 T FLASHD_Write
00000000 r __FUNCTION__.6140
0000000d r __FUNCTION__.6192
0000001d r __FUNCTION__.6201
0000002f r __FUNCTION__.6205
0000003f r __FUNCTION__.6209
00000051 r __FUNCTION__.6214
00000000 r __FUNCTION__.6150
0000000d r __FUNCTION__.6202
0000001d r __FUNCTION__.6211
0000002f r __FUNCTION__.6215
0000003f r __FUNCTION__.6219
00000051 r __FUNCTION__.6224
U __assert_func
00000004 b _adwPageBuffer
00000000 b _dwUseIAP
@ -154,7 +154,7 @@ pio_capture.o:
00000000 T PIO_CaptureInit
U PMC_EnablePeripheral
00000000 b _PioCaptureCopy
00000000 r __FUNCTION__.6362
00000000 r __FUNCTION__.6372
U __assert_func
pmc.o:
@ -163,13 +163,13 @@ pmc.o:
00000000 T PMC_EnableAllPeripherals
00000000 T PMC_EnablePeripheral
00000000 T PMC_IsPeriphEnabled
00000000 r __FUNCTION__.5764
00000015 r __FUNCTION__.5768
0000002b r __FUNCTION__.5790
00000000 r __FUNCTION__.5774
00000015 r __FUNCTION__.5778
0000002b r __FUNCTION__.5800
U __assert_func
pwmc.o:
00000000 r C.1.6987
00000000 r C.1.7002
00000000 t FindClockConfiguration
00000000 T PWMC_ConfigureChannel
00000000 T PWMC_ConfigureChannelExt
@ -196,14 +196,14 @@ pwmc.o:
00000000 T PWMC_SetSyncChannelUpdatePeriod
00000000 T PWMC_SetSyncChannelUpdateUnlock
00000000 T PWMC_WriteBuffer
0000002c r __FUNCTION__.5768
00000043 r __FUNCTION__.5779
00000059 r __FUNCTION__.5794
00000072 r __FUNCTION__.5805
00000087 r __FUNCTION__.5816
00000099 r __FUNCTION__.5823
000000aa r __FUNCTION__.5905
000000c7 r __FUNCTION__.5911
0000002c r __FUNCTION__.5778
00000043 r __FUNCTION__.5789
00000059 r __FUNCTION__.5804
00000072 r __FUNCTION__.5815
00000087 r __FUNCTION__.5826
00000099 r __FUNCTION__.5833
000000aa r __FUNCTION__.5915
000000c7 r __FUNCTION__.5921
U __assert_func
rtc.o:
@ -219,9 +219,9 @@ rtc.o:
00000000 T RTC_SetHourMode
00000000 T RTC_SetTime
00000000 T RTC_SetTimeAlarm
00000000 r __FUNCTION__.5765
00000010 r __FUNCTION__.5774
0000001d r __FUNCTION__.5779
00000000 r __FUNCTION__.5775
00000010 r __FUNCTION__.5784
0000001d r __FUNCTION__.5789
U __assert_func
rtt.o:
@ -230,8 +230,8 @@ rtt.o:
00000000 T RTT_GetTime
00000000 T RTT_SetAlarm
00000000 T RTT_SetPrescaler
00000000 r __FUNCTION__.5772
0000000d r __FUNCTION__.5780
00000000 r __FUNCTION__.5782
0000000d r __FUNCTION__.5790
U __assert_func
spi.o:
@ -295,9 +295,9 @@ tc.o:
00000000 T TC_FindMckDivisor
00000000 T TC_Start
00000000 T TC_Stop
00000000 r __FUNCTION__.5767
0000000d r __FUNCTION__.5773
00000016 r __FUNCTION__.5779
00000000 r __FUNCTION__.5777
0000000d r __FUNCTION__.5783
00000016 r __FUNCTION__.5789
U __assert_func
twi.o:
@ -316,18 +316,18 @@ twi.o:
00000000 T TWI_Stop
00000000 T TWI_TransferComplete
00000000 T TWI_WriteByte
00000000 r __FUNCTION__.6350
00000014 r __FUNCTION__.6365
00000027 r __FUNCTION__.6369
00000030 r __FUNCTION__.6376
0000003e r __FUNCTION__.6380
0000004b r __FUNCTION__.6385
00000059 r __FUNCTION__.6393
00000068 r __FUNCTION__.6407
00000075 r __FUNCTION__.6412
00000083 r __FUNCTION__.6416
00000091 r __FUNCTION__.6421
000000a5 r __FUNCTION__.6425
00000000 r __FUNCTION__.6360
00000014 r __FUNCTION__.6375
00000027 r __FUNCTION__.6379
00000030 r __FUNCTION__.6386
0000003e r __FUNCTION__.6390
0000004b r __FUNCTION__.6395
00000059 r __FUNCTION__.6403
00000068 r __FUNCTION__.6417
00000075 r __FUNCTION__.6422
00000083 r __FUNCTION__.6426
00000091 r __FUNCTION__.6431
000000a5 r __FUNCTION__.6435
U __assert_func
twid.o:
@ -347,10 +347,10 @@ twid.o:
U TWI_Stop
U TWI_TransferComplete
U TWI_WriteByte
00000000 r __FUNCTION__.6355
00000010 r __FUNCTION__.6362
0000001d r __FUNCTION__.6375
00000027 r __FUNCTION__.6397
00000000 r __FUNCTION__.6365
00000010 r __FUNCTION__.6372
0000001d r __FUNCTION__.6385
00000027 r __FUNCTION__.6407
U __assert_func
usart.o:
@ -369,7 +369,7 @@ usart.o:
00000000 T USART_SetTransmitterEnabled
00000000 T USART_Write
00000000 T USART_WriteBuffer
00000000 r __FUNCTION__.6149
00000000 r __FUNCTION__.6159
U __assert_func
wdt.o:
@ -380,3 +380,11 @@ wdt.o:
00000000 T WDT_Restart
core_cm3.o:
timetick.o:
00000000 T GetTickCount
00000000 T Sleep
00000000 T TimeTick_Configure
00000000 T TimeTick_Increment
00000000 T Wait
00000000 b _dwTickCount

View File

@ -0,0 +1,118 @@
/* ----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support
* ----------------------------------------------------------------------------
* Copyright (c) 2009, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
/**
* \file
* Implement simple system tick usage.
*/
/*----------------------------------------------------------------------------
* Headers
*----------------------------------------------------------------------------*/
#include "chip.h"
/*----------------------------------------------------------------------------
* Local variables
*----------------------------------------------------------------------------*/
/** Tick Counter united by ms */
static volatile uint32_t _dwTickCount=0 ;
/*----------------------------------------------------------------------------
* Exported Functions
*----------------------------------------------------------------------------*/
/**
* \brief Handler for Sytem Tick interrupt.
*/
extern void TimeTick_Increment( void )
{
_dwTickCount++ ;
}
/**
* \brief Configures the SAM3 SysTick & reset tickCount.
* Systick interrupt handler will generates 1ms interrupt and increase a
* tickCount.
* \param dwNew_MCK Current master clock.
*/
extern uint32_t TimeTick_Configure( uint32_t dwNew_MCK )
{
_dwTickCount = 0 ;
return SysTick_Config( dwNew_MCK/1000 ) ;
}
/**
* \brief Get current Tick Count, in ms.
*/
extern uint32_t GetTickCount( void )
{
return _dwTickCount ;
}
/**
* \brief Sync Wait for several ms
*/
extern void Wait( volatile uint32_t dwMs )
{
uint32_t dwStart ;
uint32_t dwCurrent ;
dwStart = _dwTickCount ;
do
{
dwCurrent = _dwTickCount ;
} while ( dwCurrent - dwStart < dwMs ) ;
}
/**
* \brief Sync Sleep for several ms
*/
extern void Sleep( volatile uint32_t dwMs )
{
uint32_t dwStart ;
uint32_t dwCurrent ;
dwStart = _dwTickCount ;
do
{
dwCurrent = _dwTickCount ;
if ( dwCurrent - dwStart > dwMs )
{
break ;
}
__WFI() ;
} while( 1 ) ;
}