Skip to content

Instantly share code, notes, and snippets.

@hans00
Last active March 30, 2017 09:18
Show Gist options
  • Save hans00/8322e47efa5d4e989e67d43ee6ae768c to your computer and use it in GitHub Desktop.
Save hans00/8322e47efa5d4e989e67d43ee6ae768c to your computer and use it in GitHub Desktop.

Revisions

  1. hans00 revised this gist Mar 30, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion low_delay_3ping.ino
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,7 @@
    #endif
    #if F_CPU == 16000000L
    #define dd4tick __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t")
    #define delayOneUs() { dd5tick; dd5tick; dd5tick; dd5tick; }
    #define delayOneUs() { dd4tick; dd4tick; dd4tick; dd4tick; }
    #endif
    #define delay2Us() { delayOneUs(); delayOneUs(); }
    #define delay5Us() { delay2Us(); delay2Us(); delayOneUs(); }
  2. hans00 created this gist Mar 30, 2017.
    21 changes: 21 additions & 0 deletions low_delay_3ping.ino
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    // 優化效率
    #define ddtick __asm__("nop\n\t")
    #if F_CPU == 20000000L
    #define dd5tick __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t")
    #define delayOneUs() { dd5tick; dd5tick; dd5tick; dd5tick; }
    #endif
    #if F_CPU == 16000000L
    #define dd4tick __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t")
    #define delayOneUs() { dd5tick; dd5tick; dd5tick; dd5tick; }
    #endif
    #define delay2Us() { delayOneUs(); delayOneUs(); }
    #define delay5Us() { delay2Us(); delay2Us(); delayOneUs(); }

    int ping() {
    pinMode(PING_PIN, OUTPUT);
    digitalWrite(PING_PIN, LOW); delay2Us();
    digitalWrite(PING_PIN, HIGH); delay5Us();
    digitalWrite(PING_PIN, LOW);
    pinMode(PING_PIN, INPUT);
    return pulseIn(PING_PIN, HIGH) / 29 / 2;
    }