diff options
author | bnewbold <bnewbold@robocracy.org> | 2010-03-31 08:52:45 +0800 |
---|---|---|
committer | iperry <iperry@gmail.com> | 2010-03-31 09:43:10 +0800 |
commit | 1d3861ef93f8423176c6010ab606abdab00a7cbd (patch) | |
tree | 5c95101e295bcfdd7f9f4292ce9204ddf7e7f662 /src/wiring | |
parent | 8d6bf3b196c2a0bc1adda4a04669e54fdc5b65cb (diff) | |
download | librambutan-1d3861ef93f8423176c6010ab606abdab00a7cbd.tar.gz librambutan-1d3861ef93f8423176c6010ab606abdab00a7cbd.zip |
Major hierarchy reorganization; see README.
copy-to-ide and Makefile updated to conform; .gitignore added;
LICENSE added
Diffstat (limited to 'src/wiring')
-rw-r--r-- | src/wiring/Print.cpp | 215 | ||||
-rw-r--r-- | src/wiring/Print.h | 62 | ||||
-rw-r--r-- | src/wiring/WProgram.h | 8 | ||||
-rw-r--r-- | src/wiring/binary.h | 515 | ||||
-rw-r--r-- | src/wiring/bits.h | 35 | ||||
-rw-r--r-- | src/wiring/comm/HardwareSerial.cpp | 97 | ||||
-rw-r--r-- | src/wiring/comm/HardwareSerial.h | 48 | ||||
-rw-r--r-- | src/wiring/comm/HardwareUsb.cpp | 96 | ||||
-rw-r--r-- | src/wiring/comm/HardwareUsb.h | 48 | ||||
-rw-r--r-- | src/wiring/ext_interrupts.c | 104 | ||||
-rw-r--r-- | src/wiring/ext_interrupts.h | 56 | ||||
-rw-r--r-- | src/wiring/io.h | 141 | ||||
-rw-r--r-- | src/wiring/pwm.c | 48 | ||||
-rw-r--r-- | src/wiring/pwm.h | 41 | ||||
-rw-r--r-- | src/wiring/time.c | 72 | ||||
-rw-r--r-- | src/wiring/time.h | 64 | ||||
-rw-r--r-- | src/wiring/wiring.c | 116 | ||||
-rw-r--r-- | src/wiring/wiring.h | 60 | ||||
-rw-r--r-- | src/wiring/wiring_analog.c | 39 | ||||
-rw-r--r-- | src/wiring/wiring_digital.c | 140 | ||||
-rw-r--r-- | src/wiring/wiring_math.cpp | 38 | ||||
-rw-r--r-- | src/wiring/wiring_math.h | 32 | ||||
-rw-r--r-- | src/wiring/wiring_shift.c | 40 |
23 files changed, 0 insertions, 2115 deletions
diff --git a/src/wiring/Print.cpp b/src/wiring/Print.cpp deleted file mode 100644 index efe3eef..0000000 --- a/src/wiring/Print.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* - Print.cpp - Base class that provides print() and println() - Copyright (c) 2008 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Modified 23 November 2006 by David A. Mellis - */ - -#include <stdio.h> -#include <string.h> -#include <math.h> -#include "wiring.h" - -#include "Print.h" - -// Public Methods ////////////////////////////////////////////////////////////// - -/* default implementation: may be overridden */ -void Print::write(const char *str) -{ - while (*str) - write(*str++); -} - -/* default implementation: may be overridden */ -void Print::write(const uint8_t *buffer, size_t size) -{ - while (size--) - write(*buffer++); -} - -void Print::print(uint8_t b) -{ - this->write(b); -} - -void Print::print(char c) -{ - print((byte) c); -} - -void Print::print(const char str[]) -{ - write(str); -} - -void Print::print(int n) -{ - print((long) n); -} - -void Print::print(unsigned int n) -{ - print((unsigned long) n); -} - -void Print::print(long n) -{ - if (n < 0) { - print('-'); - n = -n; - } - printNumber(n, 10); -} - -void Print::print(unsigned long n) -{ - printNumber(n, 10); -} - -void Print::print(long n, int base) -{ - if (base == 0) - print((char) n); - else if (base == 10) - print(n); - else - printNumber(n, base); -} - -void Print::print(double n) -{ - printFloat(n, 2); -} - -void Print::println(void) -{ - print('\r'); - print('\n'); -} - -void Print::println(char c) -{ - print(c); - println(); -} - -void Print::println(const char c[]) -{ - print(c); - println(); -} - -void Print::println(uint8_t b) -{ - print(b); - println(); -} - -void Print::println(int n) -{ - print(n); - println(); -} - -void Print::println(unsigned int n) -{ - print(n); - println(); -} - -void Print::println(long n) -{ - print(n); - println(); -} - -void Print::println(unsigned long n) -{ - print(n); - println(); -} - -void Print::println(long n, int base) -{ - print(n, base); - println(); -} - -void Print::println(double n) -{ - print(n); - println(); -} - -// Private Methods ///////////////////////////////////////////////////////////// - -void Print::printNumber(unsigned long n, uint8_t base) -{ - unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. - unsigned long i = 0; - - if (n == 0) { - print('0'); - return; - } - - while (n > 0) { - buf[i++] = n % base; - n /= base; - } - - for (; i > 0; i--) - print((char) (buf[i - 1] < 10 ? - '0' + buf[i - 1] : - 'A' + buf[i - 1] - 10)); -} - -void Print::printFloat(double number, uint8_t digits) -{ - // Handle negative numbers - if (number < 0.0) - { - print('-'); - number = -number; - } - - // Round correctly so that print(1.999, 2) prints as "2.00" - double rounding = 0.5; - for (uint8_t i=0; i<digits; ++i) - rounding /= 10.0; - - number += rounding; - - // Extract the integer part of the number and print it - unsigned long int_part = (unsigned long)number; - double remainder = number - (double)int_part; - print(int_part); - - // Print the decimal point, but only if there are digits beyond - if (digits > 0) - print("."); - - // Extract digits from the remainder one at a time - while (digits-- > 0) - { - remainder *= 10.0; - int toPrint = int(remainder); - print(toPrint); - remainder -= toPrint; - } -} diff --git a/src/wiring/Print.h b/src/wiring/Print.h deleted file mode 100644 index a69e85d..0000000 --- a/src/wiring/Print.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - Print.h - Base class that provides print() and println() - Copyright (c) 2008 David A. Mellis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Print_h -#define Print_h - -#include <inttypes.h> -#include <stdio.h> // for size_t - -#define DEC 10 -#define HEX 16 -#define OCT 8 -#define BIN 2 -#define BYTE 0 - -class Print -{ - private: - void printNumber(unsigned long, uint8_t); - void printFloat(double, uint8_t); - public: - virtual void write(uint8_t) = 0; - virtual void write(const char *str); - virtual void write(const uint8_t *buffer, size_t size); - void print(char); - void print(const char[]); - void print(uint8_t); - void print(int); - void print(unsigned int); - void print(long); - void print(unsigned long); - void print(long, int); - void print(double); - void println(void); - void println(char); - void println(const char[]); - void println(uint8_t); - void println(int); - void println(unsigned int); - void println(long); - void println(unsigned long); - void println(long, int); - void println(double); -}; - -#endif diff --git a/src/wiring/WProgram.h b/src/wiring/WProgram.h deleted file mode 100644 index 1d38776..0000000 --- a/src/wiring/WProgram.h +++ /dev/null @@ -1,8 +0,0 @@ -#include "wiring.h" -#include "HardwareSerial.h" -#include "HardwareUsb.h" -#include "math.h" -#include "usb.h" - -void setup(); -void loop(); diff --git a/src/wiring/binary.h b/src/wiring/binary.h deleted file mode 100644 index af14980..0000000 --- a/src/wiring/binary.h +++ /dev/null @@ -1,515 +0,0 @@ -#ifndef Binary_h -#define Binary_h - -#define B0 0 -#define B00 0 -#define B000 0 -#define B0000 0 -#define B00000 0 -#define B000000 0 -#define B0000000 0 -#define B00000000 0 -#define B1 1 -#define B01 1 -#define B001 1 -#define B0001 1 -#define B00001 1 -#define B000001 1 -#define B0000001 1 -#define B00000001 1 -#define B10 2 -#define B010 2 -#define B0010 2 -#define B00010 2 -#define B000010 2 -#define B0000010 2 -#define B00000010 2 -#define B11 3 -#define B011 3 -#define B0011 3 -#define B00011 3 -#define B000011 3 -#define B0000011 3 -#define B00000011 3 -#define B100 4 -#define B0100 4 -#define B00100 4 -#define B000100 4 -#define B0000100 4 -#define B00000100 4 -#define B101 5 -#define B0101 5 -#define B00101 5 -#define B000101 5 -#define B0000101 5 -#define B00000101 5 -#define B110 6 -#define B0110 6 -#define B00110 6 -#define B000110 6 -#define B0000110 6 -#define B00000110 6 -#define B111 7 -#define B0111 7 -#define B00111 7 -#define B000111 7 -#define B0000111 7 -#define B00000111 7 -#define B1000 8 -#define B01000 8 -#define B001000 8 -#define B0001000 8 -#define B00001000 8 -#define B1001 9 -#define B01001 9 -#define B001001 9 -#define B0001001 9 -#define B00001001 9 -#define B1010 10 -#define B01010 10 -#define B001010 10 -#define B0001010 10 -#define B00001010 10 -#define B1011 11 -#define B01011 11 -#define B001011 11 -#define B0001011 11 -#define B00001011 11 -#define B1100 12 -#define B01100 12 -#define B001100 12 -#define B0001100 12 -#define B00001100 12 -#define B1101 13 -#define B01101 13 -#define B001101 13 -#define B0001101 13 -#define B00001101 13 -#define B1110 14 -#define B01110 14 -#define B001110 14 -#define B0001110 14 -#define B00001110 14 -#define B1111 15 -#define B01111 15 -#define B001111 15 -#define B0001111 15 -#define B00001111 15 -#define B10000 16 -#define B010000 16 -#define B0010000 16 -#define B00010000 16 -#define B10001 17 -#define B010001 17 -#define B0010001 17 -#define B00010001 17 -#define B10010 18 -#define B010010 18 -#define B0010010 18 -#define B00010010 18 -#define B10011 19 -#define B010011 19 -#define B0010011 19 -#define B00010011 19 -#define B10100 20 -#define B010100 20 -#define B0010100 20 -#define B00010100 20 -#define B10101 21 -#define B010101 21 -#define B0010101 21 -#define B00010101 21 -#define B10110 22 -#define B010110 22 -#define B0010110 22 -#define B00010110 22 -#define B10111 23 -#define B010111 23 -#define B0010111 23 -#define B00010111 23 -#define B11000 24 -#define B011000 24 -#define B0011000 24 -#define B00011000 24 -#define B11001 25 -#define B011001 25 -#define B0011001 25 -#define B00011001 25 -#define B11010 26 -#define B011010 26 -#define B0011010 26 -#define B00011010 26 -#define B11011 27 -#define B011011 27 -#define B0011011 27 -#define B00011011 27 -#define B11100 28 -#define B011100 28 -#define B0011100 28 -#define B00011100 28 -#define B11101 29 -#define B011101 29 -#define B0011101 29 -#define B00011101 29 -#define B11110 30 -#define B011110 30 -#define B0011110 30 -#define B00011110 30 -#define B11111 31 -#define B011111 31 -#define B0011111 31 -#define B00011111 31 -#define B100000 32 -#define B0100000 32 -#define B00100000 32 -#define B100001 33 -#define B0100001 33 -#define B00100001 33 -#define B100010 34 -#define B0100010 34 -#define B00100010 34 -#define B100011 35 -#define B0100011 35 -#define B00100011 35 -#define B100100 36 -#define B0100100 36 -#define B00100100 36 -#define B100101 37 -#define B0100101 37 -#define B00100101 37 -#define B100110 38 -#define B0100110 38 -#define B00100110 38 -#define B100111 39 -#define B0100111 39 -#define B00100111 39 -#define B101000 40 -#define B0101000 40 -#define B00101000 40 -#define B101001 41 -#define B0101001 41 -#define B00101001 41 -#define B101010 42 -#define B0101010 42 -#define B00101010 42 -#define B101011 43 -#define B0101011 43 -#define B00101011 43 -#define B101100 44 -#define B0101100 44 -#define B00101100 44 -#define B101101 45 -#define B0101101 45 -#define B00101101 45 -#define B101110 46 -#define B0101110 46 -#define B00101110 46 -#define B101111 47 -#define B0101111 47 -#define B00101111 47 -#define B110000 48 -#define B0110000 48 -#define B00110000 48 -#define B110001 49 -#define B0110001 49 -#define B00110001 49 -#define B110010 50 -#define B0110010 50 -#define B00110010 50 -#define B110011 51 -#define B0110011 51 -#define B00110011 51 -#define B110100 52 -#define B0110100 52 -#define B00110100 52 -#define B110101 53 -#define B0110101 53 -#define B00110101 53 -#define B110110 54 -#define B0110110 54 -#define B00110110 54 -#define B110111 55 -#define B0110111 55 -#define B00110111 55 -#define B111000 56 -#define B0111000 56 -#define B00111000 56 -#define B111001 57 -#define B0111001 57 -#define B00111001 57 -#define B111010 58 -#define B0111010 58 -#define B00111010 58 -#define B111011 59 -#define B0111011 59 -#define B00111011 59 -#define B111100 60 -#define B0111100 60 -#define B00111100 60 -#define B111101 61 -#define B0111101 61 -#define B00111101 61 -#define B111110 62 -#define B0111110 62 -#define B00111110 62 -#define B111111 63 -#define B0111111 63 -#define B00111111 63 -#define B1000000 64 -#define B01000000 64 -#define B1000001 65 -#define B01000001 65 -#define B1000010 66 -#define B01000010 66 -#define B1000011 67 -#define B01000011 67 -#define B1000100 68 -#define B01000100 68 -#define B1000101 69 -#define B01000101 69 -#define B1000110 70 -#define B01000110 70 -#define B1000111 71 -#define B01000111 71 -#define B1001000 72 -#define B01001000 72 -#define B1001001 73 -#define B01001001 73 -#define B1001010 74 -#define B01001010 74 -#define B1001011 75 -#define B01001011 75 -#define B1001100 76 -#define B01001100 76 -#define B1001101 77 -#define B01001101 77 -#define B1001110 78 -#define B01001110 78 -#define B1001111 79 -#define B01001111 79 -#define B1010000 80 -#define B01010000 80 -#define B1010001 81 -#define B01010001 81 -#define B1010010 82 -#define B01010010 82 -#define B1010011 83 -#define B01010011 83 -#define B1010100 84 -#define B01010100 84 -#define B1010101 85 -#define B01010101 85 -#define B1010110 86 -#define B01010110 86 -#define B1010111 87 -#define B01010111 87 -#define B1011000 88 -#define B01011000 88 -#define B1011001 89 -#define B01011001 89 -#define B1011010 90 -#define B01011010 90 -#define B1011011 91 -#define B01011011 91 -#define B1011100 92 -#define B01011100 92 -#define B1011101 93 -#define B01011101 93 -#define B1011110 94 -#define B01011110 94 -#define B1011111 95 -#define B01011111 95 -#define B1100000 96 -#define B01100000 96 -#define B1100001 97 -#define B01100001 97 -#define B1100010 98 -#define B01100010 98 -#define B1100011 99 -#define B01100011 99 -#define B1100100 100 -#define B01100100 100 -#define B1100101 101 -#define B01100101 101 -#define B1100110 102 -#define B01100110 102 -#define B1100111 103 -#define B01100111 103 -#define B1101000 104 -#define B01101000 104 -#define B1101001 105 -#define B01101001 105 -#define B1101010 106 -#define B01101010 106 -#define B1101011 107 -#define B01101011 107 -#define B1101100 108 -#define B01101100 108 -#define B1101101 109 -#define B01101101 109 -#define B1101110 110 -#define B01101110 110 -#define B1101111 111 -#define B01101111 111 -#define B1110000 112 -#define B01110000 112 -#define B1110001 113 -#define B01110001 113 -#define B1110010 114 -#define B01110010 114 -#define B1110011 115 -#define B01110011 115 -#define B1110100 116 -#define B01110100 116 -#define B1110101 117 -#define B01110101 117 -#define B1110110 118 -#define B01110110 118 -#define B1110111 119 -#define B01110111 119 -#define B1111000 120 -#define B01111000 120 -#define B1111001 121 -#define B01111001 121 -#define B1111010 122 -#define B01111010 122 -#define B1111011 123 -#define B01111011 123 -#define B1111100 124 -#define B01111100 124 -#define B1111101 125 -#define B01111101 125 -#define B1111110 126 -#define B01111110 126 -#define B1111111 127 -#define B01111111 127 -#define B10000000 128 -#define B10000001 129 -#define B10000010 130 -#define B10000011 131 -#define B10000100 132 -#define B10000101 133 -#define B10000110 134 -#define B10000111 135 -#define B10001000 136 -#define B10001001 137 -#define B10001010 138 -#define B10001011 139 -#define B10001100 140 -#define B10001101 141 -#define B10001110 142 -#define B10001111 143 -#define B10010000 144 -#define B10010001 145 -#define B10010010 146 -#define B10010011 147 -#define B10010100 148 -#define B10010101 149 -#define B10010110 150 -#define B10010111 151 -#define B10011000 152 -#define B10011001 153 -#define B10011010 154 -#define B10011011 155 -#define B10011100 156 -#define B10011101 157 -#define B10011110 158 -#define B10011111 159 -#define B10100000 160 -#define B10100001 161 -#define B10100010 162 -#define B10100011 163 -#define B10100100 164 -#define B10100101 165 -#define B10100110 166 -#define B10100111 167 -#define B10101000 168 -#define B10101001 169 -#define B10101010 170 -#define B10101011 171 -#define B10101100 172 -#define B10101101 173 -#define B10101110 174 -#define B10101111 175 -#define B10110000 176 -#define B10110001 177 -#define B10110010 178 -#define B10110011 179 -#define B10110100 180 -#define B10110101 181 -#define B10110110 182 -#define B10110111 183 -#define B10111000 184 -#define B10111001 185 -#define B10111010 186 -#define B10111011 187 -#define B10111100 188 -#define B10111101 189 -#define B10111110 190 -#define B10111111 191 -#define B11000000 192 -#define B11000001 193 -#define B11000010 194 -#define B11000011 195 -#define B11000100 196 -#define B11000101 197 -#define B11000110 198 -#define B11000111 199 -#define B11001000 200 -#define B11001001 201 -#define B11001010 202 -#define B11001011 203 -#define B11001100 204 -#define B11001101 205 -#define B11001110 206 -#define B11001111 207 -#define B11010000 208 -#define B11010001 209 -#define B11010010 210 -#define B11010011 211 -#define B11010100 212 -#define B11010101 213 -#define B11010110 214 -#define B11010111 215 -#define B11011000 216 -#define B11011001 217 -#define B11011010 218 -#define B11011011 219 -#define B11011100 220 -#define B11011101 221 -#define B11011110 222 -#define B11011111 223 -#define B11100000 224 -#define B11100001 225 -#define B11100010 226 -#define B11100011 227 -#define B11100100 228 -#define B11100101 229 -#define B11100110 230 -#define B11100111 231 -#define B11101000 232 -#define B11101001 233 -#define B11101010 234 -#define B11101011 235 -#define B11101100 236 -#define B11101101 237 -#define B11101110 238 -#define B11101111 239 -#define B11110000 240 -#define B11110001 241 -#define B11110010 242 -#define B11110011 243 -#define B11110100 244 -#define B11110101 245 -#define B11110110 246 -#define B11110111 247 -#define B11111000 248 -#define B11111001 249 -#define B11111010 250 -#define B11111011 251 -#define B11111100 252 -#define B11111101 253 -#define B11111110 254 -#define B11111111 255 - -#endif diff --git a/src/wiring/bits.h b/src/wiring/bits.h deleted file mode 100644 index e614094..0000000 --- a/src/wiring/bits.h +++ /dev/null @@ -1,35 +0,0 @@ -// BIT DEFINITION
-
-#define BIT0 0x00000001
-#define BIT1 0x00000002
-#define BIT2 0x00000004
-#define BIT3 0x00000008
-#define BIT4 0x00000010
-#define BIT5 0x00000020
-#define BIT6 0x00000040
-#define BIT7 0x00000080
-#define BIT8 0x00000100
-#define BIT9 0x00000200
-#define BIT10 0x00000400
-#define BIT11 0x00000800
-#define BIT12 0x00001000
-#define BIT13 0x00002000
-#define BIT14 0x00004000
-#define BIT15 0x00008000
-#define BIT16 0x00010000
-#define BIT17 0x00020000
-#define BIT18 0x00040000
-#define BIT19 0x00080000
-#define BIT20 0x00100000
-#define BIT21 0x00200000
-#define BIT22 0x00400000
-#define BIT23 0x00800000
-#define BIT24 0x01000000
-#define BIT25 0x02000000
-#define BIT26 0x04000000
-#define BIT27 0x08000000
-#define BIT28 0x10000000
-#define BIT29 0x20000000
-#define BIT30 0x40000000
-#define BIT31 0x80000000
-
diff --git a/src/wiring/comm/HardwareSerial.cpp b/src/wiring/comm/HardwareSerial.cpp deleted file mode 100644 index 04d8d18..0000000 --- a/src/wiring/comm/HardwareSerial.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/19/09 05:15:24 EST - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file HardwareSerial.cpp - * - * @brief Wiring-like serial api - */ - -#include "wiring.h" -#include "HardwareSerial.h" -#include "usart.h" -#include "gpio.h" -#include "timers.h" - -#define USART1_TX_PORT GPIOA_BASE -#define USART1_TX_PIN 9 -#define USART1_RX_PORT GPIOA_BASE -#define USART1_RX_PIN 10 - -#define USART2_TX_PORT GPIOA_BASE -#define USART2_TX_PIN 2 -#define USART2_RX_PORT GPIOA_BASE -#define USART2_RX_PIN 3 - -#define USART3_TX_PORT GPIOB_BASE -#define USART3_TX_PIN 10 -#define USART3_RX_PORT GPIOB_BASE -#define USART3_RX_PIN 11 - -HardwareSerial::HardwareSerial(uint8_t usartNum) { - ASSERT(usartNum == 1 || - usartNum == 2 || - usartNum == 3); - this->usartNum = usartNum; -} - -uint8_t HardwareSerial::read(void) { - return usart_getc(usartNum); -} - -uint32 HardwareSerial::available(void) { - - return usart_data_available(usartNum); -} - -void HardwareSerial::write(unsigned char ch) { - usart_putc(usartNum, ch); -} - -void HardwareSerial::begin(uint32_t baud) { - ASSERT(!(baud > USART_MAX_BAUD)); - - /* Set appropriate pin modes */ - switch (usartNum) { - case 1: - gpio_set_mode(USART1_TX_PORT, USART1_TX_PIN, GPIO_MODE_AF_OUTPUT_PP); - gpio_set_mode(USART1_RX_PORT, USART1_RX_PIN, GPIO_MODE_INPUT_FLOATING); - /* Turn off any pwm */ - timers_disable_channel(1, 2); - break; - case 2: - gpio_set_mode(USART2_TX_PORT, USART2_TX_PIN, GPIO_MODE_AF_OUTPUT_PP); - gpio_set_mode(USART2_RX_PORT, USART2_RX_PIN, GPIO_MODE_INPUT_FLOATING); - /* Turn off any pwm */ - timers_disable_channel(2, 3); - break; - case 3: - gpio_set_mode(USART3_TX_PORT, USART3_TX_PIN, GPIO_MODE_AF_OUTPUT_PP); - gpio_set_mode(USART3_RX_PORT, USART3_RX_PIN, GPIO_MODE_INPUT_FLOATING); - break; - default: - ASSERT(0); - } - - usart_init(usartNum, baud); -} - -HardwareSerial Serial1(1); -HardwareSerial Serial2(2); -HardwareSerial Serial3(3); diff --git a/src/wiring/comm/HardwareSerial.h b/src/wiring/comm/HardwareSerial.h deleted file mode 100644 index a3913f9..0000000 --- a/src/wiring/comm/HardwareSerial.h +++ /dev/null @@ -1,48 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/19/09 05:45:37 EST - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file HardwareSerial.h - * - * @brief - */ - -#ifndef _HARDWARESERIAL_H_ -#define _HARDWARESERIAL_H_ - -#include "Print.h" - -class HardwareSerial : public Print { - private: - uint8 usartNum; - public: - HardwareSerial(uint8_t); - void begin(uint32_t); - uint32 available(void); - uint8_t read(void); - void flush(void); - virtual void write(unsigned char); - using Print::write; -}; - -extern HardwareSerial Serial1; -extern HardwareSerial Serial2; -extern HardwareSerial Serial3; -#endif - diff --git a/src/wiring/comm/HardwareUsb.cpp b/src/wiring/comm/HardwareUsb.cpp deleted file mode 100644 index 269a68f..0000000 --- a/src/wiring/comm/HardwareUsb.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * ****************************************************************************/ - -/** - * @file HardwareUsb.cpp - * - * @brief Wiring like serial api to USB virtual COM - */ - -#include "wiring.h" -#include "HardwareUsb.h" -#include "bootVect.h" -#include "usb.h" - -HardwareUsb::HardwareUsb(void) { - mapleVectTable = (BootVectTable*)(BOOTLOADER_VECT_TABLE); - mapleVectTable->serial_tx_cb = usb_tx_cb; - mapleVectTable->serial_rx_cb = usb_rx_cb; - mapleVectTable->usb_local_obj_ptr = this; - rx_buffer_offset_in = 0; - rx_buffer_offset_out = 0; -} - -uint8_t HardwareUsb::read(void) { - uint8_t outVal = rx_buffer[rx_buffer_offset_out++]; - -#if 1 - if (rx_buffer_offset_out == rx_buffer_offset_in) { - flush(); - } -#endif - - return outVal; -} - -uint8_t HardwareUsb::available(void) { - ASSERT(rx_buffer_offset_out >= 0); - // return rx_buffer_offset+1; - // return usb_serialGetRecvLen(); - return rx_buffer_offset_in - rx_buffer_offset_out; -} - -void HardwareUsb::flush(void) { - rx_buffer_offset_in = 0; - rx_buffer_offset_out = 0; -} - -void HardwareUsb::write(unsigned char ch) { - usb_serialWriteChar(ch); -} - -void HardwareUsb::begin(void) { - /* placeholder for usb<->uart linking */ -} - -void HardwareUsb::usb_rx_cb(void) { - BootVectTable *vectTable = (BootVectTable*)(BOOTLOADER_VECT_TABLE); - HardwareUsb *thisPtr = (HardwareUsb*) vectTable->usb_local_obj_ptr; - - uint8_t numBytes = usb_serialGetRecvLen(); - -#if 0 - /* ONE-SHOT-TO-READ Version (buffer cleared on next recv interrupt */ - usb_copyRecvBuffer(thisPtr->rx_buffer,numBytes); - thisPtr->rx_buffer_offset_in = numBytes; - thisPtr->rx_buffer_offset_out = 0; -#else - /* FIFO DISCARD OVERFLOW VERSION */ - if ((thisPtr->rx_buffer_offset_in + numBytes) > (USB_SERIAL_BUF_SIZE)) { - numBytes = USB_SERIAL_BUF_SIZE - thisPtr->rx_buffer_offset_in; - } - - if (numBytes > 0) { - ASSERT(thisPtr->rx_buffer_offset_in <= USB_SERIAL_BUF_SIZE); - usb_copyRecvBuffer(&(thisPtr->rx_buffer[thisPtr->rx_buffer_offset_in]),numBytes); - thisPtr->rx_buffer_offset_in += numBytes; - } -#endif -} - -void HardwareUsb::usb_tx_cb(void) { - /* placeholder for when serial dumps exceed buflen */ -} diff --git a/src/wiring/comm/HardwareUsb.h b/src/wiring/comm/HardwareUsb.h deleted file mode 100644 index b8733c1..0000000 --- a/src/wiring/comm/HardwareUsb.h +++ /dev/null @@ -1,48 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * ****************************************************************************/ - -/** - * @file HardwareUsb.h - * - * @brief Wiring like serial api to USB virtual COM - */ - -#ifndef _HARDWAREUSB_H_ -#define _HARDWAREUSB_H_ - -#include "Print.h" -#include "bootVect.h" -#include "usb.h" - -class HardwareUsb : public Print { - private: - BootVectTable* mapleVectTable; - static void usb_rx_cb(void); - static void usb_tx_cb(void); - unsigned char rx_buffer[USB_SERIAL_BUF_SIZE]; - int8_t rx_buffer_offset_out; - int8_t rx_buffer_offset_in; - public: - HardwareUsb(void); - void begin(); - uint8_t available(void); - uint8_t read(void); - void flush(void); - virtual void write(unsigned char); - using Print::write; -}; - -#endif //_HARDWAREUSB_H diff --git a/src/wiring/ext_interrupts.c b/src/wiring/ext_interrupts.c deleted file mode 100644 index 20ec11f..0000000 --- a/src/wiring/ext_interrupts.c +++ /dev/null @@ -1,104 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:39:48 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file ext_interrupts.c - * - * @brief Wiring-like interface for external interrupts - */ - -#include "wiring.h" -#include "exti.h" -#include "ext_interrupts.h" - -typedef struct ExtiInfo { - uint8_t channel; - uint8_t port; -} ExtiInfo; - -static ExtiInfo PIN_TO_EXTI_CHANNEL[NR_MAPLE_PINS] = { - {EXTI3, EXTI_CONFIG_PORTA}, // D0/PA3 - {EXTI2, EXTI_CONFIG_PORTA}, // D1/PA2 - {EXTI0, EXTI_CONFIG_PORTA}, // D2/PA0 - {EXTI1, EXTI_CONFIG_PORTA}, // D3/PA1 - {EXTI5, EXTI_CONFIG_PORTB}, // D4/PB5 - {EXTI6, EXTI_CONFIG_PORTB}, // D5/PB6 - {EXTI8, EXTI_CONFIG_PORTA}, // D6/PA8 - {EXTI9, EXTI_CONFIG_PORTA}, // D7/PA9 - {EXTI10, EXTI_CONFIG_PORTA}, // D8/PA10 - {EXTI7, EXTI_CONFIG_PORTB}, // D9/PB7 - {EXTI4, EXTI_CONFIG_PORTA}, // D10/PA4 - {EXTI7, EXTI_CONFIG_PORTA}, // D11/PA7 - {EXTI6, EXTI_CONFIG_PORTA}, // D12/PA6 - {EXTI5, EXTI_CONFIG_PORTA}, // D13/PA5 -}; - - -/** - * @brief Attach an interrupt handler to be triggered on a given - * transition on the pin. Runs in interrupt context - * - * @param[in] pin Maple pin number - * @param[in] handler Function to run upon external interrupt trigger. - * @param[in] mode Type of transition to trigger on, eg falling, rising, etc. - * - * @sideeffect Registers a handler - */ -int attachInterrupt(uint8_t pin, voidFuncPtr handler, ExtInterruptTriggerMode mode) { - uint8_t outMode; - /* Parameter checking */ - if (pin >= NR_MAPLE_PINS) { - return EXT_INTERRUPT_INVALID_PIN; - } - - if (!handler) { - ASSERT(0); - return EXT_INTERRUPT_INVALID_FUNCTION; - } - - switch (mode) { - case RISING: - outMode = EXTI_RISING; - break; - case FALLING: - outMode = EXTI_FALLING; - break; - case CHANGE: - outMode = EXTI_RISING_FALLING; - break; - default: - ASSERT(0); - return EXT_INTERRUPT_INVALID_MODE;; - } - - exti_attach_interrupt(PIN_TO_EXTI_CHANNEL[pin].channel, - PIN_TO_EXTI_CHANNEL[pin].port, - handler, mode); - - return 0; -} - -int detachInterrupt(uint8_t pin) { - if (!(pin < NR_MAPLE_PINS)) { - return EXT_INTERRUPT_INVALID_PIN; - } - - exti_detach_interrupt(PIN_TO_EXTI_CHANNEL[pin].channel); -} - diff --git a/src/wiring/ext_interrupts.h b/src/wiring/ext_interrupts.h deleted file mode 100644 index d0e6365..0000000 --- a/src/wiring/ext_interrupts.h +++ /dev/null @@ -1,56 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:40:09 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file ext_interrupts.h - * - * @brief External interrupt wiring prototypes and types - */ - -#ifndef _EXT_INTERRUPTS_H_ -#define _EXT_INTERRUPTS_H_ - -typedef enum ExtInterruptTriggerMode { - RISING, - FALLING, - CHANGE -} ExtInterruptTriggerMode; - - -enum ExtInterruptError { - EXT_INTERRUPT_INVALID_PIN = (-1), - EXT_INTERRUPT_INVALID_FUNCTION = (-2), - EXT_INTERRUPT_INVALID_MODE = (-3), - -}; - -#ifdef __cplusplus -extern "C"{ -#endif - -int attachInterrupt(uint8_t pin, voidFuncPtr, ExtInterruptTriggerMode mode); -int detachInterrupt(uint8_t pin); - -#ifdef __cplusplus -} -#endif - - -#endif - diff --git a/src/wiring/io.h b/src/wiring/io.h deleted file mode 100644 index 9f6aa4a..0000000 --- a/src/wiring/io.h +++ /dev/null @@ -1,141 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:40:56 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file io.h - * - * @brief - */ - -#ifndef _IO_H -#define _IO_H - -#include <inttypes.h> -#include "gpio.h" -#include "adc.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -/* stash these here for now */ -#define D0 0 -#define D1 1 -#define D2 2 -#define D3 3 -#define D4 4 -#define D5 5 -#define D6 6 -#define D7 7 -#define D8 8 -#define D9 9 -#define D10 10 -#define D11 11 -#define D12 12 -#define D13 13 -#define D14 14 -#define D15 15 -#define D16 16 -#define D16 16 -#define D17 17 -#define D18 18 -#define D19 19 -#define D20 20 -#define D21 21 -#define D22 22 -#define D23 23 -#define D24 24 -#define D25 25 -#define D26 26 -#define D27 27 -#define D28 28 -#define D29 29 -#define D30 30 -#define D31 31 -#define D32 32 -#define D33 33 -#define D34 34 -#define D35 35 -#define D36 36 -#define D37 37 -#define D38 38 -#define D39 39 - -typedef enum WiringPinMode { - OUTPUT, - OUTPUT_OPEN_DRAIN, - INPUT, - INPUT_ANALOG, - INPUT_PULLUP, - INPUT_PULLDOWN, - INPUT_FLOATING, - PWM -} WiringPinMode; - -typedef struct PinMapping { - GPIO_Port *port; - uint32 pin; - uint32 adc; - TimerCCR timer_channel; -} PinMapping; - -#define ADC_INVALID 0xFFFFFFFF -#define TIMER_INVALID (TimerCCR)0xFFFFFFFF - -/* Set pin to mode - * pinMode(pin, mode): - * pin -> {0-38, D0-D39, A0-16} - * mode -> { - * INPUT/INPUT_DIGITAL - * INPUT_PULLUP - * INPUT_PULLDOWN - * INPUT_ANALOG - * OUTPUT/OUTPUT_PP - * OUTPUT_OPEN_DRAIN - * } - */ -void pinMode(uint8_t, uint8_t); - -/* - * Writes VALUE to digital pin[0-38] - * digitalWrite(pin, value): - * pin -> {0-38, D0-D39, A0-16} - * value -> LOW, HIGH; -*/ -void digitalWrite(uint8_t, uint8_t); - -/* Read a digital value from pin, the pin mode must be set to - * {INPUT, INPUT_PULLUP, INPUT_PULLDOWN} - * digitalRead(pin) - * pin -> {0-38, D0-D39, A0-16} - */ -uint32_t digitalRead(uint8_t); - -/* Read an analog value from pin, the pin mode must be set - * to INPUT_ANALOG - * analogRead(pin) - * pin -> {A0-A16} - * */ -uint32_t analogRead(uint8_t); - -#ifdef __cplusplus -} // extern "C" -#endif -#endif - diff --git a/src/wiring/pwm.c b/src/wiring/pwm.c deleted file mode 100644 index 2cc815c..0000000 --- a/src/wiring/pwm.c +++ /dev/null @@ -1,48 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:41:24 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file pwm.c - * - * @brief - */ - -#include "wiring.h" -#include "timers.h" -#include "io.h" -#include "pwm.h" - -extern const PinMapping PIN_MAP[NR_MAPLE_PINS]; - -void pwmWrite(uint8_t pin, uint16_t duty_cycle) { - TimerCCR ccr; - - if (pin >= NR_MAPLE_PINS) { - return; - } - - ccr = PIN_MAP[pin].timer_channel; - - if (ccr == TIMER_INVALID) - return; - - timer_pwm_write_ccr(ccr, duty_cycle); -} - - diff --git a/src/wiring/pwm.h b/src/wiring/pwm.h deleted file mode 100644 index 60d805d..0000000 --- a/src/wiring/pwm.h +++ /dev/null @@ -1,41 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:41:27 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file pwm.h - * - * @brief - */ - -#ifndef _PWM_H -#define _PWM_H - -#ifdef __cplusplus -extern "C"{ -#endif - -void pwmWrite(uint8_t, uint16_t); - -#ifdef __cplusplus -} -#endif - - -#endif - diff --git a/src/wiring/time.c b/src/wiring/time.c deleted file mode 100644 index 164d978..0000000 --- a/src/wiring/time.c +++ /dev/null @@ -1,72 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:41:36 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file time.c - * - * @brief - */ - -#include "libmaple.h" -#include "systick.h" -#include "time.h" - -#define CYCLES_PER_MICROSECOND 72 -#define FUDGE 42 - -extern volatile uint32_t systick_timer_millis; - -unsigned long millis() { - unsigned long m; - m = systick_timer_millis; - return m; -} - -void delay(unsigned long ms) -{ - unsigned long start = millis(); - - while (millis() - start <= ms) - ; -} - - - -#if 1 -void delayMicroseconds(uint32_t us) { - uint32_t target; - uint32_t last, cur, count; - /* fudge factor hacky hack hack for function overhead */ - target = us * CYCLES_PER_MICROSECOND - FUDGE; - - /* Get current count */ - last = systick_get_count(); - cur = systick_get_count(); - count = last; - while ((count-cur) <= target) { - cur = systick_get_count(); - - /* check for overflow */ - if (cur > last) { - count += MAPLE_RELOAD_VAL; - } - last = cur; - } -} -#endif diff --git a/src/wiring/time.h b/src/wiring/time.h deleted file mode 100644 index 68b3901..0000000 --- a/src/wiring/time.h +++ /dev/null @@ -1,64 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:41:40 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file time.h - * - * @brief - */ - -#ifndef _TIME_H -#define _TIME_H - -#ifdef __cplusplus -extern "C"{ -#endif -/* Returns time since boot in milliseconds */ -uint32_t millis(void); - -/* Time in microseconds since boot */ -uint32_t micros(void); - -/* Delay for ms milliseconds */ -void delay(unsigned long ms); - -/* Delay for us microseconds */ -void delayMicroseconds(uint32_t us); - -#if 0 -static inline void delay_us(uint32 us) { - us *= 12; - asm volatile("mov r0, %[us] \n\t" - "subs r0, #2 \n\t" -"1: \n\t" - "subs r0, r0, #1 \n\t" - "bne 1b" - : - : [us] "r" (us) - : "r0", "cc"); - -} -#endif -#ifdef __cplusplus -} // extern "C" -#endif - - -#endif - diff --git a/src/wiring/wiring.c b/src/wiring/wiring.c deleted file mode 100644 index 04de78a..0000000 --- a/src/wiring/wiring.c +++ /dev/null @@ -1,116 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:41:47 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file wiring.c - * - * @brief - */ - -#include "wiring.h" -#include "stm32f10x_flash.h" -#include "stm32f10x_rcc.h" -#include "stm32f10x_map.h" -#include "stm32f10x_nvic.h" -#include "systick.h" -#include "gpio.h" - -void RCC_Configuration(void); -void NVIC_Configuration(void); - -void init(void) { - RCC_Configuration(); - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | - RCC_APB2Periph_GPIOB | - RCC_APB2Periph_GPIOC | - RCC_APB2Periph_AFIO - , ENABLE); - NVIC_Configuration(); - - systick_init(); - - gpio_init(); - - adc_init(); - - timer_init(1, 1); - timer_init(2, 1); - timer_init(3, 1); - timer_init(4, 1); -} - -void NVIC_Configuration(void) { -#ifdef VECT_TAB_ROM - NVIC_SetVectorTable(USER_ADDR_ROM, 0x0); -#warning writing to ROM -#elif defined VECT_TAB_RAM - NVIC_SetVectorTable(USER_ADDR_RAM, 0x0); -#warning writing to RAM -#else // VECT_TAB_BASE - /* Set the Vector Table base location at 0x08000000 */ - NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); -#endif -} - - -void RCC_Configuration(void) { - ErrorStatus HSEStartUpStatus; - /* RCC system reset(for debug purpose) */ - RCC_DeInit(); - - /* Enable HSE */ - RCC_HSEConfig(RCC_HSE_ON); - - /* Wait till HSE is ready */ - HSEStartUpStatus = RCC_WaitForHSEStartUp(); - - if(HSEStartUpStatus == SUCCESS) { - /* Enable Prefetch Buffer */ - FLASH_PrefetchBufferCmd( (u32)FLASH_PrefetchBuffer_Enable); - - /* Flash 2 wait state */ - FLASH_SetLatency(FLASH_Latency_2); - - /* HCLK = SYSCLK */ - RCC_HCLKConfig(RCC_SYSCLK_Div1); - - /* PCLK2 = HCLK APB2 Periphs, no prescaler 72MHz */ - RCC_PCLK2Config(RCC_HCLK_Div1); - - /* PCLK1 = HCLK/2 APB1 periphs = 36MHZ*/ - RCC_PCLK1Config(RCC_HCLK_Div2); - - /* PLLCLK = 8MHz * 9 = 72 MHz */ - RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); - - /* Enable PLL */ - RCC_PLLCmd(ENABLE); - - /* Wait till PLL is ready */ - while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) - ; - - /* Select PLL as system clock source */ - RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); - - /* Wait till PLL is used as system clock source */ - while(RCC_GetSYSCLKSource() != 0x08) - ; - } -} diff --git a/src/wiring/wiring.h b/src/wiring/wiring.h deleted file mode 100644 index bcf6eda..0000000 --- a/src/wiring/wiring.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef _WIRING_H_ -#define _WIRING_H_ - -#include "libmaple.h" -#include "timers.h" -#include "io.h" -#include "binary.h" -#include "bits.h" -#include "time.h" -#include "pwm.h" -#include "ext_interrupts.h" - -#ifdef __cplusplus -extern "C"{ -#endif - -#define MAPLE 1 -#define NR_MAPLE_PINS 39 // temporary - -#define HIGH 0x1 -#define LOW 0x0 - -#define true 0x1 -#define false 0x0 - -#define SERIAL 0x0 -#define DISPLAY 0x1 - -#define LSBFIRST 0 -#define MSBFIRST 1 - -#define USER_ADDR_ROM 0x08005000 -#define USER_ADDR_RAM 0x20000C00 - -#define lowByte(w) ((w) & 0xff) -#define highByte(w) ((w) >> 8) -#define bitRead(value, bit) (((value) >> (bit)) & 0x01) -#define bitSet(value, bit) ((value) |= (1UL << (bit))) -#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) -#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) -#define bit(b) (1UL << (b)) - - -typedef uint8 boolean; -typedef uint8 byte; - -void init(void); -unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); -void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val); - - -#ifdef __cplusplus -} // extern "C" -#endif - - - - -#endif - diff --git a/src/wiring/wiring_analog.c b/src/wiring/wiring_analog.c deleted file mode 100644 index d7d7150..0000000 --- a/src/wiring/wiring_analog.c +++ /dev/null @@ -1,39 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:41:55 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file wiring_analog.c - * - * @brief - */ - -#include "libmaple.h" -#include "wiring.h" -#include "io.h" - -extern const PinMapping PIN_MAP[NR_MAPLE_PINS]; - -/* Assumes that the ADC has been initialized and - * that the pin is set to ANALOG_INPUT */ -uint32_t analogRead(uint8_t pin) { - if (pin >= NR_ANALOG_PINS) - return 0; - - return adc_read(PIN_MAP[pin].adc); -} diff --git a/src/wiring/wiring_digital.c b/src/wiring/wiring_digital.c deleted file mode 100644 index 71dae57..0000000 --- a/src/wiring/wiring_digital.c +++ /dev/null @@ -1,140 +0,0 @@ -/* ***************************************************************************** - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * Created: 12/18/09 02:42:00 - * Copyright (c) 2009 Perry L. Hung. All rights reserved. - * - * ****************************************************************************/ - -/** - * @file wiring_digital.c - * - * @brief - */ - -#include "wiring.h" -#include "io.h" - -#define ADC0 0 -#define ADC1 1 -#define ADC2 2 -#define ADC3 3 -#define ADC4 4 -#define ADC5 5 -#define ADC6 6 -#define ADC7 7 -#define ADC8 8 -#define ADC9 9 -#define ADC10 10 -#define ADC11 11 -#define ADC12 12 -#define ADC13 13 -#define ADC14 14 -#define ADC15 15 -#define ADC16 16 - -const PinMapping PIN_MAP[NR_MAPLE_PINS] = { - {GPIOA_BASE, 3, ADC3, TIMER2_CH4_CCR}, // D0/PA3 - {GPIOA_BASE, 2, ADC2, TIMER2_CH3_CCR}, // D1/PA2 - {GPIOA_BASE, 0, ADC0, TIMER2_CH1_CCR}, // D2/PA0 - {GPIOA_BASE, 1, ADC1, TIMER2_CH2_CCR}, // D3/PA1 - {GPIOB_BASE, 5, ADC_INVALID, TIMER_INVALID}, // D4/PB5 - {GPIOB_BASE, 6, ADC_INVALID, TIMER4_CH1_CCR}, // D5/PB6 - {GPIOA_BASE, 8, ADC_INVALID, TIMER1_CH1_CCR}, // D6/PA8 - {GPIOA_BASE, 9, ADC_INVALID, TIMER1_CH2_CCR}, // D7/PA9 - {GPIOA_BASE, 10, ADC_INVALID, TIMER1_CH3_CCR}, // D8/PA10 - {GPIOB_BASE, 7, ADC_INVALID, TIMER4_CH2_CCR}, // D9/PB7 - {GPIOA_BASE, 4, ADC4, TIMER_INVALID}, // D10/PA4 - {GPIOA_BASE, 7, ADC7, TIMER3_CH2_CCR}, // D11/PA7 - {GPIOA_BASE, 6, ADC6, TIMER3_CH1_CCR}, // D12/PA6 - {GPIOA_BASE, 5, ADC5, TIMER_INVALID}, // D13/PA5 - {GPIOB_BASE, 8, ADC_INVALID, TIMER4_CH3_CCR}, // D14/PB8 - /* Little header */ - {GPIOC_BASE, 0, ADC10, TIMER_INVALID}, // D15/PC0 - {GPIOC_BASE, 1, ADC11, TIMER_INVALID}, // D16/PC1 - {GPIOC_BASE, 2, ADC12, TIMER_INVALID}, // D17/PC2 - {GPIOC_BASE, 3, ADC13, TIMER_INVALID}, // D18/PC3 - {GPIOC_BASE, 4, ADC14, TIMER_INVALID}, // D19/PC4 - {GPIOC_BASE, 5, ADC15, TIMER_INVALID}, // D20/PC5 - /* External header */ - {GPIOC_BASE, 13, ADC_INVALID, TIMER_INVALID}, // D21/PC13 - {GPIOC_BASE, 14, ADC_INVALID, TIMER_INVALID}, // D22/PC14 - {GPIOC_BASE, 15, ADC_INVALID, TIMER_INVALID}, // D23/PC15 - {GPIOB_BASE, 9, ADC_INVALID, TIMER4_CH4_CCR}, // D24/PB9 - {GPIOD_BASE, 2, ADC_INVALID, TIMER_INVALID}, // D25/PD2 - {GPIOC_BASE, 10, ADC_INVALID, TIMER_INVALID}, // D26/PC10 - {GPIOB_BASE, 0, ADC8, TIMER3_CH3_CCR}, // D27/PB0 - {GPIOB_BASE, 1, ADC9, TIMER3_CH4_CCR}, // D28/PB1 - {GPIOB_BASE, 10, ADC_INVALID, TIMER_INVALID}, // D29/PB10 - {GPIOB_BASE, 11, ADC_INVALID, TIMER_INVALID}, // D30/PB11 - {GPIOB_BASE, 12, ADC_INVALID, TIMER_INVALID}, // D31/PB12 - {GPIOB_BASE, 13, ADC_INVALID, TIMER_INVALID}, // D32/PB13 - {GPIOB_BASE, 14, ADC_INVALID, TIMER_INVALID}, // D33/PB14 - {GPIOB_BASE, 15, ADC_INVALID, TIMER_INVALID}, // D34/PB15 - {GPIOC_BASE, 6, ADC_INVALID, TIMER_INVALID}, // D35/PC6 - {GPIOC_BASE, 7, ADC_INVALID, TIMER_INVALID}, // D36/PC7 - {GPIOC_BASE, 8, ADC_INVALID, TIMER_INVALID}, // D37/PC8 - {GPIOC_BASE, 9, ADC_INVALID, TIMER_INVALID} // D38/PC9 -}; - -void pinMode(uint8_t pin, WiringPinMode mode) { - uint8 outputMode; - - if (pin >= NR_MAPLE_PINS) - return; - - switch(mode) { - case OUTPUT: - outputMode = GPIO_MODE_OUTPUT_PP; - break; - case OUTPUT_OPEN_DRAIN: - outputMode = GPIO_MODE_OUTPUT_OD; - break; - case INPUT: - case INPUT_FLOATING: - outputMode = GPIO_MODE_INPUT_FLOATING; - break; - case INPUT_ANALOG: - outputMode = GPIO_MODE_INPUT_ANALOG; - case INPUT_PULLUP: - outputMode = GPIO_MODE_INPUT_PU; - break; - case INPUT_PULLDOWN: - outputMode = GPIO_MODE_INPUT_PD; - break; - case PWM: - outputMode = GPIO_MODE_AF_OUTPUT_PP; - break; - default: - ASSERT(0); - return; - } - - gpio_set_mode(PIN_MAP[pin].port, PIN_MAP[pin].pin, outputMode); -} - - -uint32_t digitalRead(uint8_t pin) { - if (pin >= NR_MAPLE_PINS) - return 0; - - return (PIN_MAP[pin].port->IDR & BIT(PIN_MAP[pin].pin)) ? 1 : 0; -} - -void digitalWrite(uint8_t pin, uint8_t val) { - if (pin >= NR_MAPLE_PINS) - return; - - gpio_write_bit(PIN_MAP[pin].port, PIN_MAP[pin].pin, val); -} diff --git a/src/wiring/wiring_math.cpp b/src/wiring/wiring_math.cpp deleted file mode 100644 index 9be7dc3..0000000 --- a/src/wiring/wiring_math.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include <stdlib.h> -#include "math.h" - -/* from newlib: - * - * rand returns the next pseudo-random integer in sequence; it is a number - * between 0 and RAND_MAX (inclusive). - * - * srand does not return a result. */ - - -/* The rest copied from WMath.cpp */ -void randomSeed(unsigned int seed) { - if (seed != 0) { - srand(seed); - } -} - -long random(long howbig) { - if (howbig == 0) { - return 0; - } - return rand() % howbig; -} - -long random(long howsmall, long howbig) { - if (howsmall >= howbig) { - return howsmall; - } - long diff = howbig - howsmall; - return random(diff) + howsmall; -} - -long map(long x, long in_min, long in_max, long out_min, long out_max) { - return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; -} - - diff --git a/src/wiring/wiring_math.h b/src/wiring/wiring_math.h deleted file mode 100644 index f000bbd..0000000 --- a/src/wiring/wiring_math.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef _WIRING_MATH_H_ -#define _WIRING_MATH_H_ - -#include <math.h> - -void randomSeed(unsigned int); -long random(long); -long random(long, long); -long map(long, long, long, long, long); - -#define PI 3.1415926535897932384626433832795 -#define HALF_PI 1.5707963267948966192313216916398 -#define TWO_PI 6.283185307179586476925286766559 -#define DEG_TO_RAD 0.017453292519943295769236907684886 -#define RAD_TO_DEG 57.295779513082320876798154814105 - -#define min(a,b) ((a)<(b)?(a):(b)) -#define max(a,b) ((a)>(b)?(a):(b)) -#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) -#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) -#define radians(deg) ((deg)*DEG_TO_RAD) -#define degrees(rad) ((rad)*RAD_TO_DEG) -#define sq(x) ((x)*(x)) - -/* undefine stdlib's abs if encountered */ -#ifdef abs -#undef abs -#endif -#define abs(x) (((x) > 0) ? (x) : -(unsigned)(x)) - -#endif - diff --git a/src/wiring/wiring_shift.c b/src/wiring/wiring_shift.c deleted file mode 100644 index 28c6dfc..0000000 --- a/src/wiring/wiring_shift.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - wiring_shift.c - shiftOut() function - Part of Arduino - http://www.arduino.cc/ - - Copyright (c) 2005-2006 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA - - $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ -*/ - -#include "wiring.h" - -void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val) -{ - int i; - - for (i = 0; i < 8; i++) { - if (bitOrder == LSBFIRST) - digitalWrite(dataPin, !!(val & (1 << i))); - else - digitalWrite(dataPin, !!(val & (1 << (7 - i)))); - - digitalWrite(clockPin, HIGH); - digitalWrite(clockPin, LOW); - } -} |