Galileo Gen2 の Fast GPIOについて
環境
windows 7 x64
Arduino1.5.3 Intel1.0.4
下記コードで出せるPinのオンオフの繰り返しは、最大約2.3uSecが最短のようです。
Gen1は触ったことが無いのですがかなり高速化されたようですね。
1 2 3 4 5 6 7 8 9 10 |
void setup() { // put your setup code here, to run once: pinMode(2,OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(2,HIGH); digitalWrite(2,LOW); } |
更に早くする方法があるそうです。
参考:http://www.emutexlabs.com/component/content/article?id=203:getting-started-with-intel-galileo-gen-2
下記コードで試すと1.46uSecでした。周波数で表すと680kHzです。
1 2 3 4 5 6 7 8 9 10 11 12 |
void setup() { // put your setup code here, to run once: pinMode(2,OUTPUT); } void loop() { // put your main code here, to run repeatedly: //digitalWrite(2,HIGH); fastGpioDigitalWrite(GPIO_FAST_IO2, HIGH); //digitalWrite(2,LOW); fastGpioDigitalWrite(GPIO_FAST_IO2, LOW); } |
さらに下記コードだと最大336nSecまで短縮できます。周波数でいうと2.9MHzです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void setup() { // put your setup code here, to run once: pinMode(2,OUTPUT); } void loop() { unsigned long snapshot = fastGpioDigitalRegSnapshot(GPIO_FAST_IO2); while(1){ snapshot ^= GPIO_FAST_IO2; fastGpioDigitalRegWriteUnsafe(GPIO_FAST_IO2, snapshot); } } |