mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-09-24 01:06:14 +08:00
9d330dde87
TC1 counts the number of TC0 overflows (carry bits). In random conditions TC1 would return or stay at zero, instead of counting up. This due to the behavior of the reset signal. SAM7S Series Datasheet, 33.5.6 Trigger: Regardless of the trigger used, it will be taken into account at the following active edge of the selected clock. This means that the counter value can be read differently from zero just after a trigger, especially when a low frequency signal is selected as the clock. The new code first prepares TC1 and asserts TC1 trigger and then prepares TC0 and asserts TC0 trigger. The TC0 start-up will reset TC1.
46 lines
1.2 KiB
C
46 lines
1.2 KiB
C
//-----------------------------------------------------------------------------
|
|
// Jonathan Westhues, Aug 2005
|
|
// Iceman, Sept 2016
|
|
//
|
|
// This code is licensed to you under the terms of the GNU GPL, version 2 or,
|
|
// at your option, any later version. See the LICENSE.txt file for the text of
|
|
// the license.
|
|
//-----------------------------------------------------------------------------
|
|
// Timers, Clocks functions used in LF or Legic where you would need detailed time.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef __TICKS_H
|
|
#define __TICKS_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include "common.h"
|
|
#include "apps.h"
|
|
#include "proxmark3.h"
|
|
|
|
#ifndef GET_TICKS
|
|
#define GET_TICKS GetTicks()
|
|
#endif
|
|
|
|
void SpinDelay(int ms);
|
|
void SpinDelayUs(int us);
|
|
|
|
void StartTickCount(void);
|
|
uint32_t RAMFUNC GetTickCount(void);
|
|
|
|
void StartCountUS(void);
|
|
uint32_t RAMFUNC GetCountUS(void);
|
|
void ResetUSClock(void);
|
|
void SpinDelayCountUs(uint32_t us);
|
|
|
|
void StartCountSspClk();
|
|
void ResetSspClk(void);
|
|
uint32_t RAMFUNC GetCountSspClk();
|
|
|
|
void StartTicks(void);
|
|
uint32_t GetTicks(void);
|
|
void WaitTicks(uint32_t ticks);
|
|
void WaitUS(uint16_t us);
|
|
void WaitMS(uint16_t ms);
|
|
void StopTicks(void);
|
|
#endif |