コード例 #1
0
ファイル: wpulse.cpp プロジェクト: drbokko/86Duino
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) {
	uint8_t _state;
	unsigned long long int _timeout, now_time, width = 0L;
	
	if(pin >= PINS) return 0x00;
	
	_timeout = ((unsigned long long int)timeout)*333L + getclocks64(); // CPUCLK = 300MHz
	while(digitalRead(pin) == state)
		if(getclocks64() >= _timeout)
			return 0;
	while(digitalRead(pin) != state)
		if(getclocks64() >= _timeout)
			return 0;
	now_time = getclocks64();
	while(digitalRead(pin) == state)
		if(getclocks64() >= _timeout)
			return 0;
	width = getclocks64() - now_time;
	width = (unsigned long long int)(width * 0.00333); // CPUCLK = 300MHz
  
	return ((unsigned long)width); // unit is micro second 
}
コード例 #2
0
ファイル: wiring.cpp プロジェクト: jack23912/86Duino
unsigned long long int micros() {
	#define CLOCKS_PER_MICROSEC (299UL)
	return (getclocks64()/CLOCKS_PER_MICROSEC);
}