aboutsummaryrefslogtreecommitdiffstats
path: root/wirish/HardwareTimer.h
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2010-07-20 15:34:22 -0400
committerbnewbold <bnewbold@robocracy.org>2010-07-20 15:37:44 -0400
commit895d2a48fa30fa3fb3d6897834f838e25f8a2c58 (patch)
tree46f400e30d5388fdff87540d07bd43156bbac008 /wirish/HardwareTimer.h
parent94fa3a7705bd67f9ec39da16016182362e3756a0 (diff)
downloadlibrambutan-895d2a48fa30fa3fb3d6897834f838e25f8a2c58.tar.gz
librambutan-895d2a48fa30fa3fb3d6897834f838e25f8a2c58.zip
wirish implementation of timers plus test
Diffstat (limited to 'wirish/HardwareTimer.h')
-rw-r--r--wirish/HardwareTimer.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/wirish/HardwareTimer.h b/wirish/HardwareTimer.h
new file mode 100644
index 0000000..c79f54f
--- /dev/null
+++ b/wirish/HardwareTimer.h
@@ -0,0 +1,73 @@
+/* *****************************************************************************
+ * The MIT License
+ *
+ * Copyright (c) 2010 Bryan Newbold.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ * ****************************************************************************/
+
+/**
+ * @brief wirish timer class to manage the four 16-bit timer peripherals
+ */
+
+#ifndef _TIMER_H_
+#define _TIMER_H_
+
+class HardwareTimer {
+ private:
+ uint16 overflow;
+ uint8 timerNum;
+
+ public:
+ HardwareTimer(uint8 timer_num);
+
+ void pause(void);
+ void resume(void);
+ void setPrescaleFactor(uint16 factor);
+ void setOverflow(uint16 val); // truncates to overflow
+ void setCount(uint16 val); // truncates to overflow
+ uint16 getCount(void);
+
+ // tries to set prescaler and overflow wisely; returns overflow
+ uint16 setPeriod(uint32 microseconds);
+ void setChannel1Mode(uint8 mode);
+ void setChannel2Mode(uint8 mode);
+ void setChannel3Mode(uint8 mode);
+ void setChannel4Mode(uint8 mode);
+ void setCompare1(uint16 val); // truncates to overflow
+ void setCompare2(uint16 val); // truncates to overflow
+ void setCompare3(uint16 val); // truncates to overflow
+ void setCompare4(uint16 val); // truncates to overflow
+ void attachCompare1Interrupt(voidFuncPtr handler);
+ void attachCompare2Interrupt(voidFuncPtr handler);
+ void attachCompare3Interrupt(voidFuncPtr handler);
+ void attachCompare4Interrupt(voidFuncPtr handler);
+ void detachCompare1Interrupt(void);
+ void detachCompare2Interrupt(void);
+ void detachCompare3Interrupt(void);
+ void detachCompare4Interrupt(void);
+};
+
+extern HardwareTimer Timer1;
+extern HardwareTimer Timer2;
+extern HardwareTimer Timer3;
+extern HardwareTimer Timer4;
+
+#endif
+