]> www.fi.muni.cz Git - openparking.git/blobdiff - firmware/firmware.c
Clock handling factored out to a separate file.
[openparking.git] / firmware / firmware.c
index 2019402b56c834bdeabf27899f311abe92615924..d70705d5993c25a2ce5829200e12d38a2349c6c3 100644 (file)
@@ -2,9 +2,11 @@
 #include <avr/interrupt.h>
 #include <util/delay.h>
 #include <stdio.h>
+#include "clock.h"
 #include "modbus.h"
 
-#define TIMEOUT 0x2FF
+#define ECHO_TIMEOUT           (CLOCK_HZ/10)   // 10 ms
+#define MEASUREMENT_WAIT       (CLOCK_HZ/3)    // three triggers per second
 
 #define N_TRIGGERS 3
 #define N_SENSORS 12
@@ -48,13 +50,13 @@ static void do_measurement(unsigned char trig)
 
        pull_trigger(trig);
 
-       starttime = TCNT1;
+       starttime = get_clock();
 
        while (to_start || to_measure) {
                uint8_t bits = 0;
-               uint16_t now = TCNT1;
+               uint16_t now = get_clock();
 
-               if (now-starttime >= TIMEOUT)
+               if (now-starttime >= ECHO_TIMEOUT)
                        break;
 
                bits = get_pin(trig);
@@ -180,8 +182,8 @@ int main()
                for (trig = 0; trig < N_TRIGGERS; trig++) {
                        uint16_t now;
                        do_measurement(trig);
-                       now = TCNT1;
-                       while (TCNT1-now < 200)
+                       now = get_clock();
+                       while (get_clock()-now < MEASUREMENT_WAIT)
                                modbus_poll();
                }