|
楼主 |
发表于 2018-6-26 17:35:01
|
显示全部楼层
本帖最后由 eddiewwm 于 2020-3-3 11:28 编辑
詳細檢查後,發現是忘了把板型從 Arduino Nano 轉至 LGT8F328P。
改正後,結果為 ~239kHz。
- void setup()
- {
- sysClock(INT_OSC); //use internal 32MHz RC clock
- CLKPR = 0x80;
- // CLKPR = 0x00; //Divider=1, =>32MHz/1 = 32MHz
- CLKPR = 0x01; //Divider=2, =>32MHz/2 = 16MHz
- Serial.begin(9600);
- pinMode(9, OUTPUT);
- pinMode(10, INPUT);
- Serial.println("Speed Test will begin momentarily.");
- Serial.println("");
- delay(4000);
- speedTest();
- }
- void loop()
- {
- // Do nothing
- }
- void speedTest(void)
- {
- register int i, j;
- volatile unsigned char c1, c2;
- volatile int v;
- volatile long l1, l2;
- volatile float f1, f2;
- int p, q;
- long int r;
- unsigned long m, n;
- float d, overhead;
- char buffer[30];
- Serial.println(F(""));
- Serial.println(F("Speed test"));
- Serial.println(F("----------"));
- Serial.print(F("F_CPU = "));
- Serial.print(F_CPU, DEC);
- Serial.println(F(" Hz"));
- Serial.print(F("1/F_CPU = "));
- Serial.print((1000000.0 / (float)F_CPU), 4);
- Serial.println(F(" us"));
- delay(800); // Allow the Serial text to be transmitted
- for (int outPin=2; outPin<20; outPin++){
- pinMode(outPin, OUTPUT);
- }
- for (int k = 2; k < 20; k++) {
- Serial.print(F(" digitalWrite "));
- Serial.print(k);
- Serial.print(F(" :\t"));
- delay(70); // Allow the Serial text to be transmitted
- m = millis();
- for (i = 0; i < 2; i++)
- {
- for (j = 0; j < 10000; j++)
- {
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- digitalWrite(k, HIGH);
- digitalWrite(k, LOW);
- }
- }
- n = millis();
- d = ((float)n - (float)m) / ((float)i * (float)j);
- d *= 1000.0;
- // d -= overhead;
- d -= 4; //overhead 32MHz = 2, 16MHz = 4
- d /= 20.0;
- Serial.print (d, 3);
- Serial.print (F("\t us,\t Max Frequency :\t"));
- Serial.print (500/d, 3);
- Serial.println (F("\t kHz"));
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|