mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-11 08:29:19 +01:00
Adding micros() function.
This commit is contained in:
parent
72980ac107
commit
950789ab74
@ -149,6 +149,7 @@ digitalWrite KEYWORD2 DigitalWrite
|
|||||||
digitalRead KEYWORD2 DigitalRead
|
digitalRead KEYWORD2 DigitalRead
|
||||||
interrupts KEYWORD2
|
interrupts KEYWORD2
|
||||||
millis KEYWORD2 Millis
|
millis KEYWORD2 Millis
|
||||||
|
micros KEYWORD2 Micros
|
||||||
noInterrupts KEYWORD2
|
noInterrupts KEYWORD2
|
||||||
pinMode KEYWORD2 PinMode
|
pinMode KEYWORD2 PinMode
|
||||||
pulseIn KEYWORD2 PulseIn
|
pulseIn KEYWORD2 PulseIn
|
||||||
|
@ -24,11 +24,13 @@
|
|||||||
|
|
||||||
#include "wiring_private.h"
|
#include "wiring_private.h"
|
||||||
|
|
||||||
|
volatile unsigned long timer0_overflow_count = 0;
|
||||||
volatile unsigned long timer0_clock_cycles = 0;
|
volatile unsigned long timer0_clock_cycles = 0;
|
||||||
volatile unsigned long timer0_millis = 0;
|
volatile unsigned long timer0_millis = 0;
|
||||||
|
|
||||||
SIGNAL(TIMER0_OVF_vect)
|
SIGNAL(TIMER0_OVF_vect)
|
||||||
{
|
{
|
||||||
|
timer0_overflow_count++;
|
||||||
// timer 0 prescale factor is 64 and the timer overflows at 256
|
// timer 0 prescale factor is 64 and the timer overflows at 256
|
||||||
timer0_clock_cycles += 64UL * 256UL;
|
timer0_clock_cycles += 64UL * 256UL;
|
||||||
while (timer0_clock_cycles > clockCyclesPerMicrosecond() * 1000UL) {
|
while (timer0_clock_cycles > clockCyclesPerMicrosecond() * 1000UL) {
|
||||||
@ -51,6 +53,21 @@ unsigned long millis()
|
|||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long micros() {
|
||||||
|
unsigned long m, t;
|
||||||
|
uint8_t oldSREG = SREG;
|
||||||
|
|
||||||
|
cli();
|
||||||
|
t = TCNT0;
|
||||||
|
if ((TIFR0 & _BV(TOV0)) && (t == 0))
|
||||||
|
t = 256;
|
||||||
|
|
||||||
|
m = timer0_overflow_count;
|
||||||
|
SREG = oldSREG;
|
||||||
|
|
||||||
|
return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond());
|
||||||
|
}
|
||||||
|
|
||||||
void delay(unsigned long ms)
|
void delay(unsigned long ms)
|
||||||
{
|
{
|
||||||
unsigned long start = millis();
|
unsigned long start = millis();
|
||||||
|
@ -113,6 +113,7 @@ int serialRead(void);
|
|||||||
void serialFlush(void);
|
void serialFlush(void);
|
||||||
|
|
||||||
unsigned long millis(void);
|
unsigned long millis(void);
|
||||||
|
unsigned long micros(void);
|
||||||
void delay(unsigned long);
|
void delay(unsigned long);
|
||||||
void delayMicroseconds(unsigned int us);
|
void delayMicroseconds(unsigned int us);
|
||||||
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
|
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user