From e751b61d4d4dbb7622749271100a08cf3ee9f143 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Fri, 14 Apr 2006 11:09:32 +0000 Subject: [PATCH] Updating wiring firmware to version 0006. --- targets/wiring/Binary.h | 516 ++++++++++++++++++++++++++++++++ targets/wiring/Encoder.h | 47 +++ targets/wiring/Encoder.o | Bin 0 -> 9276 bytes targets/wiring/HardwareSerial.h | 60 ++++ targets/wiring/HardwareSerial.o | Bin 0 -> 12184 bytes targets/wiring/LiquidCrystal.h | 67 +++++ targets/wiring/LiquidCrystal.o | Bin 0 -> 16856 bytes targets/wiring/Matrix.h | 64 ++-- targets/wiring/Matrix.o | Bin 0 -> 11328 bytes targets/wiring/QSlide.h | 50 ++++ targets/wiring/QSlide.o | Bin 0 -> 9784 bytes targets/wiring/Servo.h | 30 +- targets/wiring/Servo.o | Bin 10556 -> 10056 bytes targets/wiring/Sprite.h | 49 +++ targets/wiring/Sprite.o | Bin 0 -> 8204 bytes targets/wiring/TwoWire.h | 67 +++++ targets/wiring/TwoWire.o | Bin 0 -> 14180 bytes targets/wiring/WApplet.o | Bin 11172 -> 9968 bytes targets/wiring/WConstants.h | 242 ++++++--------- targets/wiring/WCounter.o | Bin 5528 -> 0 bytes targets/wiring/WDisplay.o | Bin 9768 -> 0 bytes targets/wiring/WEncoder.o | Bin 8920 -> 0 bytes targets/wiring/WInterrupts.o | Bin 7600 -> 7528 bytes targets/wiring/WProgram.h | 65 +--- targets/wiring/WRandom.o | Bin 0 -> 3764 bytes targets/wiring/WSerial.o | Bin 12364 -> 0 bytes targets/wiring/WTimer.o | Bin 17984 -> 20568 bytes targets/wiring/Wire.h | 83 ----- targets/wiring/Wire.o | Bin 16900 -> 0 bytes targets/wiring/buffer.h | 41 +++ targets/wiring/buffer.o | Bin 0 -> 5316 bytes targets/wiring/twi.h | 57 ++++ targets/wiring/twi.o | Bin 0 -> 9988 bytes targets/wiring/uart.h | 40 +++ targets/wiring/uart.o | Bin 0 -> 8792 bytes 35 files changed, 1136 insertions(+), 342 deletions(-) create mode 100644 targets/wiring/Binary.h create mode 100644 targets/wiring/Encoder.h create mode 100644 targets/wiring/Encoder.o create mode 100755 targets/wiring/HardwareSerial.h create mode 100644 targets/wiring/HardwareSerial.o create mode 100644 targets/wiring/LiquidCrystal.h create mode 100644 targets/wiring/LiquidCrystal.o create mode 100644 targets/wiring/Matrix.o create mode 100755 targets/wiring/QSlide.h create mode 100644 targets/wiring/QSlide.o create mode 100644 targets/wiring/Sprite.h create mode 100644 targets/wiring/Sprite.o create mode 100755 targets/wiring/TwoWire.h create mode 100644 targets/wiring/TwoWire.o delete mode 100644 targets/wiring/WCounter.o delete mode 100644 targets/wiring/WDisplay.o delete mode 100644 targets/wiring/WEncoder.o create mode 100644 targets/wiring/WRandom.o delete mode 100644 targets/wiring/WSerial.o delete mode 100755 targets/wiring/Wire.h delete mode 100644 targets/wiring/Wire.o create mode 100755 targets/wiring/buffer.h create mode 100644 targets/wiring/buffer.o create mode 100755 targets/wiring/twi.h create mode 100644 targets/wiring/twi.o create mode 100755 targets/wiring/uart.h create mode 100644 targets/wiring/uart.o diff --git a/targets/wiring/Binary.h b/targets/wiring/Binary.h new file mode 100644 index 000000000..d5692e6e7 --- /dev/null +++ b/targets/wiring/Binary.h @@ -0,0 +1,516 @@ +#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/targets/wiring/Encoder.h b/targets/wiring/Encoder.h new file mode 100644 index 000000000..c4a36cf77 --- /dev/null +++ b/targets/wiring/Encoder.h @@ -0,0 +1,47 @@ +/* + Encoder.cpp - Encoder library for Wiring & Arduino + Copyright (c) 2006 Hernando Barragan and Nicholas Zambetti. + 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 Encoder_h +#define Encoder_h + +#include + +class Encoder +{ + private: + uint8_t _index; + uint8_t _pin_a; + static volatile uint8_t _pin_b; + static volatile int32_t _position; + static uint8_t _count; + static Encoder* _encoders[]; + static void service(void); + public: + Encoder(); + uint8_t attach(uint8_t, uint8_t); + void detach(); + void write(int32_t); + int32_t read(void); + uint8_t attached(void); +}; + +#endif + + diff --git a/targets/wiring/Encoder.o b/targets/wiring/Encoder.o new file mode 100644 index 0000000000000000000000000000000000000000..6f92e7f7de51490de6a010144409c85a423252fa GIT binary patch literal 9276 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 aEFQDC4hIOw1z%o^7g@YjF}?qcSo|Lxa|ql3 literal 0 HcmV?d00001 diff --git a/targets/wiring/HardwareSerial.h b/targets/wiring/HardwareSerial.h new file mode 100755 index 000000000..e9b4ad93f --- /dev/null +++ b/targets/wiring/HardwareSerial.h @@ -0,0 +1,60 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. 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 HardwareSerial_h +#define HardwareSerial_h + +#include + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class HardwareSerial +{ + private: + uint8_t _uart; + void printNumber(unsigned long, uint8_t); + public: + HardwareSerial(uint8_t); + void begin(long); + uint8_t available(void); + int read(void); + void print(char); + void print(char[]); + void print(uint8_t); + void print(int); + void print(long); + void print(long, int); + void println(void); + void println(char); + void println(char[]); + void println(uint8_t); + void println(int); + void println(long); + void println(long, int); +}; + +extern HardwareSerial Serial; +extern HardwareSerial Serial1; + +#endif + diff --git a/targets/wiring/HardwareSerial.o b/targets/wiring/HardwareSerial.o new file mode 100644 index 0000000000000000000000000000000000000000..bd104e580163c5fb435d4947b8e02340a10bc07e GIT binary patch literal 12184 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 + +class LiquidCrystal +{ + private: + uint8_t _control_rs; + uint8_t _control_rw; + uint8_t _control_e; + uint8_t _port; + void display_init(void); + void display_start(void); + void display_wait(void); + void display_control_write(uint8_t); + uint8_t display_control_read(void); + void display_data_write(uint8_t); + uint8_t display_data_read(void); + void display_write(char *, uint8_t); + void printNumber(unsigned long, uint8_t); + public: + //LiquidCrystal(); + LiquidCrystal(uint8_t, uint8_t, uint8_t, uint8_t); +// uint8_t read(void); + void clear(void); + void home(void); + void setCursor(uint8_t, uint8_t); + void print(char); + void print(char[]); + void print(uint8_t); + void print(int); + void print(long); + void print(long, int); + void println(void); + void println(char); + void println(char[]); + void println(uint8_t); + void println(int); + void println(long); + void println(long, int); +}; + + +#endif diff --git a/targets/wiring/LiquidCrystal.o b/targets/wiring/LiquidCrystal.o new file mode 100644 index 0000000000000000000000000000000000000000..327a083728015d87e447527a6f578e4b3b9c1371 GIT binary patch literal 16856 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 literal 0 HcmV?d00001 diff --git a/targets/wiring/Matrix.h b/targets/wiring/Matrix.h index ad43cb632..6c2ac00e3 100755 --- a/targets/wiring/Matrix.h +++ b/targets/wiring/Matrix.h @@ -1,51 +1,55 @@ /* - Matrix.h - Max7219 LED Matrix library file for Wiring - Part of the Wiring project - http://wiring.org.co + Matrix.h - Max7219 LED Matrix library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. - Copyright (c) 2004-2005 Hernando Barragan + 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 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 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, + 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 General Public License for more details. + 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 General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Max7219 LED Matrix library by Nicholas Zambetti + 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 Matrix_h #define Matrix_h -#include +// include core Wiring API +#include "WProgram.h" + +// declare other libraries depended on (if any) +class Sprite; class Matrix { private: - uint8_t _pinClock; - uint8_t _pinLoad; - uint8_t _pinData; + byte _pinData; + byte _pinClock; + byte _pinLoad; - uint8_t _screenBuffer[8]; + byte* _buffer; + byte _screens; + byte _maximumX; - void putByte(uint8_t); + void putByte(byte); + void setRegister(byte, byte); + void syncRow(int); + void setScanLimit(byte); + + void buffer(int, int, byte); public: - Matrix(uint8_t, uint8_t, uint8_t); - void set(uint8_t, uint8_t); - void setAll(uint8_t); - void setScanLimit(uint8_t); - void setIntensity(uint8_t); - void storePixel(uint8_t, uint8_t, uint8_t); - void updatePixels(void); + Matrix(byte, byte, byte, byte = 1); + void setBrightness(byte); + void write(int, int, byte); + void write(int, int, Sprite); + void clear(void); }; #endif diff --git a/targets/wiring/Matrix.o b/targets/wiring/Matrix.o new file mode 100644 index 0000000000000000000000000000000000000000..8edf922deb603fab44d2a7ce837e4963a074476a GIT binary patch literal 11328 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 XR*Yx#^^7Zw=fm>``h(9!ix~eKa`GW- literal 0 HcmV?d00001 diff --git a/targets/wiring/Servo.h b/targets/wiring/Servo.h index 3bfff2ade..a49cf7399 100755 --- a/targets/wiring/Servo.h +++ b/targets/wiring/Servo.h @@ -1,27 +1,23 @@ /* - Servo.h - Servo library file for Wiring - Part of the Wiring project - http://wiring.org.co + Servo.h - Servo library for Arduino & Wiring + Based on Hernando Barragan's original C implementation + Copyright (c) 2006 Nicholas Zambetti. All right reserved. - Copyright (c) 2004-2005 Hernando Barragan + 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 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 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, + 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 General Public License for more details. + 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 General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Servo library by Nicholas Zambetti + 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 Servo_h #define Servo_h diff --git a/targets/wiring/Servo.o b/targets/wiring/Servo.o index a1e1777d624b177163cfe34c07db23bc5a205fc5..285f104e5aaca1a1d447a1c1e512a7e16fa295aa 100644 GIT binary patch literal 10056 zcmcJVdyw1Jb;pnJGsIx8p)nK!N^r23m|eXet2nF^8JvtE8{6OxeF*JJyB3ipA!*mU zrlk@~jZ5vaYsZPxx*3G!$!oO|v$=icAFzx`={fBnWAeLf$V;-k&v)rh99Bw7GrL=;xjhiNgL z@h!V|_lc?2{>ghM7awS^9pC@@{*%7lt9E?QIB>A{;x7~VTY*;kjm|--gctWDknj+rFSZ=yC?6Qe0}=(^x^|c_g}sLjPHWxCC$Z~mh~TL8)3!V z!WkZ=|Lv{TvO9_yokw}icg**-RaZ|hh0QZQ?sd5N^r~+xefsLd15fntojx@E_KNox zb)EhgB+vO4ANbF=W?PNsgZDHhA82uZ?$u~M+S}fz>#N+WaQdVBuH4s{Cfa>Xa<)0p z*w55;TJ_@ym@ay2S?fL6V4L@e%{y9^ma_il+dSHIbI)>P{=Gw=J}T{?GlYhbqjg~^%8)srlJFvGpp%oHZG80p^L zudQM~-fqsVGP*qG(G@>j)O|7wF2)gdg14sDQ;uUKm26&zj`w_ zd?ECe)q&uGCx6a;ngJDO6JDqpYoYb6xp^~wT(6p$TlLllvj@z0zNy(}>-uJsBUj#> zJl>l*(c7-2#_Bq~DzN8genh|)+clJ(z*n=URc6?eDSTG`INDl$Me@U!&NQ1Gvl`=k z{XgCeHyhKt(DQz}7t=Jg|9)!h-$llnY9q7}-S@=<{r*`qABzvn;l5D!%Q31iCEOoG zIhrqb%SwlD1Aj_diSoEMH2;yqk30Ol!|ym8!(a{6x!mpW6Ar)XuT=*Y^Cxl-X-YI-i_-^5O*z_87zwi~pdxRsx2ZaZO|4ewh@I%562tOkH zsPJRL|0MjR@EgK^FH8%0tfz&q5Uk-Y9&t@PP20!k-krU$`Lrb>UZppA!CW;l^UNe@ytWFt22y z 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 O03L`~ho3d~IQ+jUv9>Az literal 10556 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 + +#include "Binary.h" + +class Sprite +{ + private: + uint8_t _width; + uint8_t _height; + uint8_t _depth; + uint8_t _ppb; + uint8_t _bpr; + uint8_t _mask; + uint8_t *_buffer; + + void init(uint8_t width, uint8_t height); + public: + Sprite(uint8_t width, uint8_t height); + Sprite(uint8_t width, uint8_t height, uint8_t row, ...); + uint8_t width() const; + uint8_t height() const; + void write(int8_t x, int8_t y, uint8_t value); + uint8_t read(int8_t x, int8_t y) const; +}; + +#endif + diff --git a/targets/wiring/Sprite.o b/targets/wiring/Sprite.o new file mode 100644 index 0000000000000000000000000000000000000000..e52bd93957ef63fd65049a0f4a237252242c0eb9 GIT binary patch literal 8204 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 Bk2L@Q literal 0 HcmV?d00001 diff --git a/targets/wiring/TwoWire.h b/targets/wiring/TwoWire.h new file mode 100755 index 000000000..9c91b9b39 --- /dev/null +++ b/targets/wiring/TwoWire.h @@ -0,0 +1,67 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. 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 TwoWire_h +#define TwoWire_h + +#include + +#define BUFFER_LENGTH 32 + +class TwoWire +{ + private: + static uint8_t* rxBuffer; + static uint8_t rxBufferIndex; + static uint8_t rxBufferLength; + + static uint8_t txAddress; + static uint8_t* txBuffer; + static uint8_t txBufferIndex; + static uint8_t txBufferLength; + + static uint8_t transmitting; + static void (*user_onRequest)(void); + static void (*user_onReceive)(int); + static void onRequestService(void); + static void onReceiveService(uint8_t*, int); + public: + TwoWire(); + void begin(); + void begin(uint8_t); + void begin(int); + void beginTransmission(uint8_t); + void beginTransmission(int); + void endTransmission(void); + void requestFrom(uint8_t, uint8_t); + void requestFrom(int, int); + void send(uint8_t); + void send(uint8_t*, uint8_t); + void send(int); + void send(char*); + uint8_t available(void); + uint8_t receive(void); + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); +}; + +extern TwoWire Wire; + +#endif + diff --git a/targets/wiring/TwoWire.o b/targets/wiring/TwoWire.o new file mode 100644 index 0000000000000000000000000000000000000000..16b4c237721e0c728c7c70640233b85a798bf8b1 GIT binary patch literal 14180 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 KSTkGkf&T`)m5N6I literal 11172 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 AA^-pY diff --git a/targets/wiring/WConstants.h b/targets/wiring/WConstants.h index 2d70cbdf3..e572378df 100755 --- a/targets/wiring/WConstants.h +++ b/targets/wiring/WConstants.h @@ -1,5 +1,5 @@ /* - WConstats.h - main definitions file for Wiring + WConstants.h - Main definitions file for Wiring Part of the Wiring project - http://wiring.org.co Copyright (c) 2004-2005 Hernando Barragan @@ -22,21 +22,67 @@ #ifndef WConstants_h #define WConstants_h -#define PI (3.1415927) -#define HALF_PI (1.57079) -#define TWO_PI (6.2831854) +// Wiring API version for libraries +// this is also defined at compile-time +#ifndef WIRING +#define WIRING 6 +#endif + +// passed in at compile-time +#ifndef F_CPU +#define F_CPU 16000000L +#endif + +// passed in at compile-time +#ifndef CPU_FREQ +#define CPU_FREQ 16000000L +#endif + +#define LOW 0x0 +#define HIGH 0x1 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI (3.1415927) +#define TWO_PI (6.2831854) +#define HALF_PI (1.57079) +#define EPSILON (0.0001) #define DEG_TO_RAD (0.01745329) #define RAD_TO_DEG (57.2957786) -#define EPSILON (0.0001) -#define WPIN0 (1<<0) -#define WPIN1 (1<<1) -#define WPIN2 (1<<2) -#define WPIN3 (1<<3) -#define WPIN4 (1<<4) -#define WPIN5 (1<<5) -#define WPIN6 (1<<6) -#define WPIN7 (1<<7) +#define int(x) ((int)(x)) +#define char(x) ((char)(x)) +#define long(x) ((long)(x)) +#define byte(x) ((uint8_t)(x)) +#define float(x) ((float)(x)) +#define boolean(x) ((uint8_t)((x)==0?0:1)) + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define sq(x) ((x)*(x)) +#define abs(x) ((x)>0?(x):-(x)) +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#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 constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) + +#define WPIN0 (1<<0) +#define WPIN1 (1<<1) +#define WPIN2 (1<<2) +#define WPIN3 (1<<3) +#define WPIN4 (1<<4) +#define WPIN5 (1<<5) +#define WPIN6 (1<<6) +#define WPIN7 (1<<7) #define WPWMPIN5 (1<<5) // PINB5 #define WPWMPIN4 (1<<6) // PINB6 @@ -69,18 +115,6 @@ #define WDDRF DDRF #define WDDRG DDRG - -#define HIGH 0x1 -#define LOW 0x0 - -#define INPUT 0x0 -#define OUTPUT 0x1 - -#define true 0x1 -#define false 0x0 - -#define CPU_FREQ 16000000L - #define TIMER0OVERFLOW_INT 0 #define TIMER0OUTCOMPARE_INT 1 #define TIMER1OVERFLOW_INT 2 @@ -98,135 +132,31 @@ #define TIMER_NUM_INTERRUPTS 14 -#define TIMER_CLK_STOP 0x00 -#define TIMER_CLK_DIV1 0x01 -#define TIMER_CLK_DIV8 0x02 -#define TIMER_CLK_DIV64 0x03 -#define TIMER_CLK_DIV256 0x04 -#define TIMER_CLK_DIV1024 0x05 -#define TIMER_CLK_T_FALL 0x06 -#define TIMER_CLK_T_RISE 0x07 -#define TIMER_PRESCALE_MASK 0x07 +#define TIMER_CLK_STOP 0x00 +#define TIMER_CLK_DIV1 0x01 +#define TIMER_CLK_DIV8 0x02 +#define TIMER_CLK_DIV64 0x03 +#define TIMER_CLK_DIV256 0x04 +#define TIMER_CLK_DIV1024 0x05 +#define TIMER_CLK_T_FALL 0x06 +#define TIMER_CLK_T_RISE 0x07 +#define TIMER_PRESCALE_MASK 0x07 -#define TIMERRTC_CLK_STOP 0x00 -#define TIMERRTC_CLK_DIV1 0x01 -#define TIMERRTC_CLK_DIV8 0x02 -#define TIMERRTC_CLK_DIV32 0x03 -#define TIMERRTC_CLK_DIV64 0x04 -#define TIMERRTC_CLK_DIV128 0x05 -#define TIMERRTC_CLK_DIV256 0x06 -#define TIMERRTC_CLK_DIV1024 0x07 -#define TIMERRTC_PRESCALE_MASK 0x07 +#define TIMERRTC_CLK_STOP 0x00 +#define TIMERRTC_CLK_DIV1 0x01 +#define TIMERRTC_CLK_DIV8 0x02 +#define TIMERRTC_CLK_DIV32 0x03 +#define TIMERRTC_CLK_DIV64 0x04 +#define TIMERRTC_CLK_DIV128 0x05 +#define TIMERRTC_CLK_DIV256 0x06 +#define TIMERRTC_CLK_DIV1024 0x07 +#define TIMERRTC_PRESCALE_MASK 0x07 -#define TIMER0PRESCALE TIMERRTC_CLK_DIV64 -#define TIMER1PRESCALE TIMER_CLK_DIV64 -#define TIMER2PRESCALE TIMER_CLK_DIV8 +#define TIMER0PRESCALE TIMERRTC_CLK_DIV64 +#define TIMER1PRESCALE TIMER_CLK_DIV64 +#define TIMER2PRESCALE TIMER_CLK_DIV8 #define TIMER3PRESCALE TIMER_CLK_DIV64 -#ifndef __cplusplus -volatile struct { - uint8_t rxInt : 1; - uint8_t rx1Int : 1; - uint8_t uart0TxComplete : 1; - uint8_t uart1TxComplete : 1; -} event; -#endif - -typedef struct wbuffer_t { - uint16_t buflen; - uint16_t bufcnt; - uint8_t * in; - uint8_t * out; - uint8_t * buf; -} WBuffer; - -typedef struct { - void (*begin) (int); - uint8_t (*available) (); - int (*read) (); - void (*write) (int); - void (*writeBytes) (char[]); -} WSerial; - -extern WSerial Serial1; -extern WSerial Serial; - -typedef uint8_t boolean; -typedef uint8_t byte; - -//int serial; -#define DEF_UART 0 -#define AUX_UART 1 -#define SERIAL0 0 -#define SERIAL1 1 - -#define UART_BUF_LEN 32 - - - -#define min(a,b) ((ab)?(a):(b)) -#define abs(x) ((x>0)?(x):(-x)) -#define constrain(amt,low,high) ((amthigh)?(high):(amt))) -#define radians(deg) ((deg)*DEG_TO_RAD) -#define degrees(rad) ((rad)*RAD_TO_DEG) -#define sq(x) ((x)*(x)) - -#define SERVO_NUM_CHANNELS 8 -#define SERVO_MAX 142 -#define SERVO_MIN 34 -#define POSITION_MAX 255 -#define SERVO_DEFAULT_PORT PORTA - - -//static char uartBuffer[UART_BUF_LEN]; -//WBuffer uartbuf; -typedef void (*voidFuncPtru08)(void); -volatile static voidFuncPtru08 uartRxFunc; -typedef void (*voidFuncPtr)(void); - - -#define WD_CTRL_PORT PORTC -#define WD_CTRL_DDR DDRC -#define WD_CTRL_RS 0 -#define WD_CTRL_RW 1 -#define WD_CTRL_E 2 -#define WD_DATA_POUT PORTA -#define WD_DATA_PIN PINA -#define WD_DATA_DDR DDRA -#define WD_LINE0_DDRAMADDR 0x00 -#define WD_LINE1_DDRAMADDR 0x40 -#define WD_LINE2_DDRAMADDR 0x14 -#define WD_LINE3_DDRAMADDR 0x54 - -#define WD_CLR 0 -#define WD_HOME 1 -#define WD_ENTRY_MODE 2 -#define WD_ENTRY_INC 1 -#define WD_ENTRY_SHIFT 0 -#define WD_ON_CTRL 3 -#define WD_ON_DISPLAY 2 -#define WD_ON_CURSOR 1 -#define WD_ON_BLINK 0 -#define WD_MOVE 4 -#define WD_MOVE_DISP 3 -#define WD_MOVE_RIGHT 2 -#define WD_FUNCTION 5 -#define WD_FUNCTION_8BIT 4 -#define WD_FUNCTION_2LINES 3 -#define WD_FUNCTION_10DOTS 2 -#define WD_CGRAM 6 -#define WD_DDRAM 7 -#define WD_BUSY 7 - -#define DATA_8_BITS 0x0 -#define DATA_4_BITS 0x1 - -#define SERIAL 0x0 -#define DISPLAY 0x1 - -#define EXTERNAL_NUM_INTERRUPTS 8 -#define NUM_ENCODERS 4 #define EXTERNAL_INT_0 0 #define EXTERNAL_INT_1 1 #define EXTERNAL_INT_2 2 @@ -236,11 +166,11 @@ typedef void (*voidFuncPtr)(void); #define EXTERNAL_INT_6 6 #define EXTERNAL_INT_7 7 -#ifndef __cplusplus -void print(const char *template, ...); -void pinMode(uint8_t, uint8_t); -void digitalWrite(uint8_t, uint8_t); -void delay(int); -#endif +#define EXTERNAL_NUM_INTERRUPTS 8 + +typedef uint8_t byte; +typedef uint8_t boolean; +typedef void (*voidFuncPtr)(void); #endif + diff --git a/targets/wiring/WCounter.o b/targets/wiring/WCounter.o deleted file mode 100644 index 2962e2ef474ef054a1984ec4e5196f4c0a15f2ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5528 zcmbVQZ)_Y#6(7e=Ndju)00EVh7`Y;GaPDsJ&UY6d0pmD!0->1LC{QZa>$~-N>G|%o zyXQEOC^oG^i%fz^BMOKrG+)vxsv3mLpQObfKu{r(3W*Q>&^8|`)DIBi28n*CFu(U^ zW_N506*9@*{^rf^y?OKAn>o*Y^Wc%emX;QwTZ_ZF z`^K^4xs#+YORY|I)(j+{MmkI+t(Vy)=9Md)L3X^uKHUG_`!| zo~t{qp8CZjW2b)8-uY5A0FD7SxG#&MTqwyR%I2?E(22x zKdIyg@Sat;WZ-WY_;~~0FmMV9nnj=5oPqyr;I|E&+Ys}|4E&gZFBtem1HWeA54Fa2 zdJH^j;28tY8~9lR{|@+D(tWY9Eyf3cXT@iD@a?saf$IC8J8K~U|eCm^*v-$#)kyjpA6*M|Av8| zWd0{u_X=Z=v8ij~mkr%lnJ?-0ZK8Q)Y)g#K@xYGFB>xfPG-Da_gN%R4@__NLr6GK3 zpHD-6uaLgc;J_+ejQ9hhPap)`22eA!=cwI_=L2}2Vmm`55|@Gd#E{qld{yCg9wGaZ zL)`&!NMQSN8xV)Zwg`V#Y>)8g#oZD90yJbB5T3X%!lUA$2!AEY!GO45oQmWRi1`TH z;!=bi@v{g|iq|6ib@4`o9~5sXOzZtOo|mw$4)F*}3s}T%@hiq7z#U>2WBMp-bnHOA zSqoi1Q4+~71+E_?CzHoL->X&ht5o;hq%e4uQYmeh>QfD`>XsA2tA)Mc?o_wcwcqDg zac?G_&lQUFnJW#7u2b$YX6{*UArnokU0&sPj*#dJ?kQA||pj;bS7Cm73ORFvz@@v19J3`L@9jE6XG z=D4Z@tx82&b!VbzSV(n{^DW{_PR*nRyS*2)rg*+e46bs~$9yMo1 zvepi-^A5?-oawq(mP?CtRWBJ9XSyk*^eG3`-pXJtBt{J71|w+fMK;uo$Q0EKLKTte^pcyAnNbEa zh#XO66e+vXl0l$Q!nf!cV7%6vN;1Z%PViENVc3f)aw%3+585S_erQYoEm;OAj>xH) zBK@|cONl%H zJrMF_bPuHIuI>!BcCJ`&f<@x)Y=QbvRQ(*vm5$A0{X8Mgf;`tEO)8F!xW0!ImxPqg zJoYSm;#TB5$lxAGk*oc5CH*HtH(*6xBot9^dUm~VIiv5EB%Dgbxl1eqmRD7}U-(rVrUf4S*V<8&NYTzEOq0eVh12G$x(<0As zMRnY17fBp~5>;wHy|JXg@@Edq9lS8-{018@8p z&H6M(cZ!dzKCZ0X24O(kAc4l+z_UKVwa_E1 z+wcd$MTh*ub&|)(Kl(jE&j~2r#vuI$p_`tI?mH&0gx_@zY7*X>M{m>bFEBWNSs%j_MBH6c=YrzoGhM zsT~&PRG;ps+b|>Do(a<(j{5QjjSd>wdyjUjj<~!LZM$5@Ew6FH<{c@!I1hcB_U776t_5^-=_5-t za1#k|UM1T8hrXaPTRj}@M+2xwXO~W4`bb0{)EEB ReH}P|ip~iM%a45@4yONf!cGcaL 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 aqr>Z{#^K8PyqCrqSHKyRm#m!6r2huw+s#k_ diff --git a/targets/wiring/WEncoder.o b/targets/wiring/WEncoder.o deleted file mode 100644 index 6381ed90f00e7c060aa737a18e9f500210fcdc54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8920 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 HCYb&ojuX%# literal 7600 zcmeHMZ)_Y#6(6@IBu%NCP)aB%2}wll)H(b9`0nCMNa{EVArUc&+laL4W_`ClUv<7S zdwaGM31TIvBoZjTT+Ih6kqT8vl`6uA2mz{S3sFBnMJb{vLY0UFNPrMcsvsdDFu(U^ zX7}0qp^%TLBk#^{e)Ha&w{PCe-i}Z2J+!Z*qeI!!p^mDkrPO`*EA;_%W>}zGtyU}5 zx&Ga^{?xbl(BHZiH(VdNvHOc>Pn=!3u$*0U=H4?a7v|ea&EZavEt;4Ndt-e;*eAkb=<~Pi*d*AZ=(fGg04ZZ%(tDmk`stfC`WEN+yz=Oa$41WOi zoWT`=&kFpKz_$d>Vz4>1seD!7YXbjU;2n2F^5X(u5cmawuL}GJfgijxvQrTFxWHc) z_@cm91pYbj8STDW-5KEnz;o&m?s<~&KE?s#3C8CcPcpv5c$V=M#$RImGsfo_|Bmt3 z8ULN}vy4|`gPc>(F{azMLloi7kgB`~>6mD`?y& z8Sh~1Fn)^h3C3Sz>@vR0xXAcT#wEtL7?&B}|3R{;<3oh?XFGW7|Fpo*v;4!X`zm9~ zKwYdZwJiRP(EUBjYuVA2G_HzE&8`~&7sGX9Y^gu5N<8Sq=w zrLE=s?pB?qwFNcFzsWXfB`Wo2w$sZtsXeSTukkjj zxD2aA%+9~qPKx{2-9^5ogdNRO=den%4Bf~Fh^ijkwx}#oT!xq6oZ1xfd5o+J=~6cB zVBLaY$-cxpgznCm?qSy5Ep#P*MCcC1bjMhCuh5lvpU~YO(`~ZuXN9iB2ZipTnC>~& zJuGx39uc~qkLf+DvhEjzuEfWM?&C4tS6NrDYceow*0{!w&^-~; zeG9r9)mM1jVZ1-O)ejjvjCE#wkMU;a=~lAn*nwK$`F?XMXe5fN@6m?mH~J>}W-5NA zR<>2K?t6V|sc5-aOgY8+$5;g z3#57q{e@%-J=J=xywR$sdv@+_q*Dd5k%mZrsy{4fC39gZsAjEEDc8JGsGQNJGo&Yq zZE0mQU`%;Hj64vxkPZj7E-&#rOWN5C`<;b$Qj8zLLVsjMAmb7njQN!lmUA(`L_n4p zY)sVsAPh`i2PWUMY*MsTY{>0ee0yv({UkPyCi>ybCi}_NJjVdIuq~O&>nRRLh-8r` zp==TZ6;cBO1vOr+yC#oJo}e#-URA0$$Eu!AF(iq}G4A5H$$pauR+W;p>dl7HNMfoR z8Q*iOgPf_o$l7e7GU=90JDDW{IcpS!SD5D`=|Y}7vb}O-OxE)5n0J^AD>GfMl=LGZ z)SPM8sa6^~94W+htCbk4*Q1x8S;MK;t7g(<3OgenxK-AgYn-mq?n<9M&v*;+6F{ zn8B@JF;65D>+Bfwtwa+yt2S@avP5fS?LDAOACGWpi zUN+F^OeGvEX4i41y<$-Jon$BzQmHtVj#HU9H4vw=aVi(5@^LC14e3pLNag(q8?DzN zsxh&Rq(6(GQi>yakzxgZHW?8~5KY$)`bTH?@Oz&!hDDL~+>?y;VCz7>lh%=0o`s_{ z7Sel&W&`gZOj*PuQ(XGpl0sIP+Ws`vKdfxa{J_G_nJbVy(uWP=*Fi8-fy_jTj zI5`=(W2ggP*Ao``Ue!$m-fW-}B{y(YVyw|n31+cBu!=hdVf!`kp7lmZ;AlwU_<#$Y z5ud<$j4jkh<>RtITTESKZx+tt*nx{3H;I+!ZR_T%@y;PmA^^fp?1b)({i8xwtg`Hy8JSrRSw*>VW-&sMi{f+K&NK zAsK4Bs857$E%%pZCMtJgR-;oZJ;qGb&0{`o+V`VgixIwony_tu2bgk;;!pkb<($Pu z=O)y?ih5qO-vIuLX#W;?7;akmKcf9D(Y}E;<-P6yC)!8wu(rJdeJ_gk8njp7`ECD$ zXycEsHR|2PWgp>=bM(mG{f>j*2uDYp&scDXK`=Sx_+FXuDbKH)hS`(ERw8yVb;#rG z!f{Gy;O}qzvhjx%5&YAF|E0mS7yQ~_+Be@8 z{B^-^MX<>qnu~ #include - #include #include - #include #include "WConstants.h" @@ -12,8 +10,9 @@ extern "C" { void loop(void); // timing prototypes - void delay(int); - int millis(void); + void delay(long); + void delayMicroseconds(unsigned int); + long millis(void); // pin prototypes void pinMode(uint8_t, uint8_t); @@ -26,61 +25,15 @@ extern "C" { void analogWrite(int, int); // pulse prototypes - void beginPulse(void); - void endPulse(void); - void pulseFrequency(int, int); - void pulseRun(int, int); - void pulseStop(int); - int pulseRunning(int); - uint16_t pulseIn(uint8_t, uint8_t); + unsigned long pulseIn(int, int); // interrupt management prototypes - void attachInterrupt(uint8_t, void *(void) ); + void attachInterrupt(uint8_t, void (*)(void) ); void detachInterrupt(uint8_t); - - // serial prototypes - void beginSerial(int); - void endSerial(void); - int serialRead(void); - void serialWrite(int); - void serialWriteBytes(char[]); - uint8_t serialAvailable(void); - void beginSerial1(int); - void endSerial1(void); - int serial1Read(void); - void serial1Write(int); - void serial1WriteBytes(char[]); - uint8_t serial1Available(void); - void printMode(int); - void print(const char *, ...); - - /* - // servo prototypes - void beginServo(void); - void endServo(void); - void attachServo(int, int); - uint8_t servoRead(int); - void servoWrite(int, int); - */ - - // lcd prototypes - void beginDisplay(void); - void endDisplay(void); - void displayWrite(int); - void displayClear(void); - void cursorHome(void); - void cursorMoveTo(uint8_t, uint8_t); - - // encoder prototypes - void beginEncoder(void); - void endEncoder(void); - void attachEncoder(int, int, int); - int32_t encoderRead(uint8_t); - void encoderWrite(uint8_t, uint32_t); } -// library includes -#include "Servo.h" -//#include "Wire.h" -//#include "Matrix.h" +// random prototypes +float random(float); +float random(float, float); +void randomSeed(unsigned int); diff --git a/targets/wiring/WRandom.o b/targets/wiring/WRandom.o new file mode 100644 index 0000000000000000000000000000000000000000..26e64dee73ebbf7c6082777122115455fc722d1f GIT binary patch literal 3764 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 literal 17984 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 diff --git a/targets/wiring/Wire.h b/targets/wiring/Wire.h deleted file mode 100755 index aa1bc3b65..000000000 --- a/targets/wiring/Wire.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - Wire.h - TWI/I2C library file for Wiring - Part of the Wiring project - http://wiring.org.co - - Copyright (c) 2004-2005 Hernando Barragan - - 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 2 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, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Wire TWI/I2C library by Nicholas Zambetti -*/ - - -#ifndef Wire_h -#define Wire_h - -#include - -#ifndef TWI_FREQ -#define TWI_FREQ 100000L -#endif - -#ifndef TWI_BUFFERSIZE -#define TWI_BUFFERSIZE 32 -#endif - -class Wire -{ - private: - static volatile uint8_t _state; - static uint8_t _slarw; - - static uint8_t _masterBuffer[TWI_BUFFERSIZE]; - static uint8_t _masterBufferLength; - static volatile uint8_t _masterBufferIndex; - - static void (*Wire::_onSlaveTransmit)(void); - static void (*Wire::_onSlaveReceive)(int); - - static uint8_t _txBuffer[TWI_BUFFERSIZE]; - static volatile uint8_t _txBufferIndex; - static volatile uint8_t _txBufferLength; - - static uint8_t _rxBuffer[TWI_BUFFERSIZE]; - static volatile uint8_t _rxBufferIndex; - - uint8_t readFrom(uint8_t, uint8_t*, uint8_t); - uint8_t writeTo(uint8_t, uint8_t*, uint8_t, uint8_t); - static void reply(uint8_t); - static void stop(void); - static void releaseBus(void); - static void interruptLogic(void); - public: - Wire(uint8_t); - uint8_t read(int); - void readBytes(int, uint8_t*, int); - void readBytes(int, char*, int); - void write(int, int); - void writeBytes(int, uint8_t*, int); - void writeBytes(int, char*); - void transmit(uint8_t); - void transmitBytes(uint8_t*, uint8_t); - void transmitBytes(char*); - uint8_t receive(void); - void receiveBytes(uint8_t*); - void receiveBytes(char*); - void onDataIn( void (*)(int) ); - void onDataOut( void (*)(void) ); -}; - -#endif - diff --git a/targets/wiring/Wire.o b/targets/wiring/Wire.o deleted file mode 100644 index 7787763c70e3e975d6be94427dcf54ff28c711d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16900 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 + + typedef struct { + char* in; + char* out; + char* buf; + uint16_t len; + uint16_t cnt; + } buffer_t; + + void buffer_init(buffer_t*, char*, uint16_t); + void buffer_put(buffer_t*, char); + uint16_t buffer_get(buffer_t*); + uint8_t buffer_look(buffer_t*); + uint8_t buffer_available(buffer_t*); + +#endif + diff --git a/targets/wiring/buffer.o b/targets/wiring/buffer.o new file mode 100644 index 0000000000000000000000000000000000000000..02567111878a9cae7f08e96b9d52cb807edc0a4b GIT binary patch literal 5316 zcmcJTZ){sv6~K?1ZV3ozGuYh1pcyMP?i~Mlb{r>OwiLXsnz|{h72UK=?(?6-kGOn2`2mLYjnv;6sH3L(>GC6g2P4G>w%J5rnD*$~ou$ z@pVGgPh7>mzkANP=bm%!eb4XZ>H7{J^!a?Cnh%aZcLXrK6W}IP#@S#PJ`Me_;XBqk z*cv>u^UQZ!$6K{lwpDNCTLVjPwBK#7`abdv&yUYP-@Moy_K)}fa{bEU#^T_4yFIwP z(f(We?EHm!-|~fpvkSrIWRt9(+0owff&Xg%&cBbe?{2@l_{L(_6IsLg-Rm!WeDUL5 zD_49UHa}?|Sp1~*Vas>^fBQ(a_P0)lFYH_R_qiqEYs1%=zp!s$iTcI)XYbm*-sqg` z3@mMH{G-_!X*5ZPA+%NWhvpxhKXB`}ZW>&p)jqp;J4RpW>{@9w&-iz*pF!XLm8Ub& z ztH{qtKNEdjUPf+!$C{rr*O`CKe3JQ3%->`Fi1`$=Z#&JMWA-yY#T;b*KJz!27nmPm zriuYnm|tZ6A@fg|FEPK&{2S&=%pK-em^YYTW!{Y!LIYl79%X)=`C;bE%r5iqnHQMf zWPX|X&&ugpQ_tIXeI{tq*KiRb|yWBFm0*O{lc*qlST z+Lzz4&CnK`iGF~+@D-Lngggab=21rSZK!!t@)zXnkoE$QmUBszhCT9h6Au9{$t?|c z@Y$z98ommj6Jq2$;TFkzvEL>6A=%GyZ2Nfh9LMl=_#%#$B~xtFdgBrHBu_)Yh+zbj zeHv%bdeqVo(eu*~#r#Dh{R5I!JQs1@y^vt(s~p29$3ueN7=#VU(=cwtFb;To<(7s? zBc6M(DoQ>D!!Iu?pJ>u#wLJCIIF0efB9vSJ~%-`b6~lR5Qruv~f%|}$1v}gl%9!DK%n03>&zOQ*v0U|Zwn>p~GO(%6!fMMhOV4cN;$WlFJSL^bCp6ZRQ!K6>-D|Q-)i?IJV4&9Q(m@A+2T$WF_XQCD4d&kXLKLD{g==LUp@7+a2$Dp1hOf-1INVpD#)#*6mqPF`*4hpP&c%TqK%qE zE-E-UjxQ$a-DEq;K7*eieu!1O{CR*49MBphS9W8_DmFy;BR=!eyS-{^tw9u+c02IF ze@Yo)uk5JbX2?4@aSDZ>LK($H>(V;|jZJ?;7~dt7siyp?vFc6vc38Wn4@iX$hdeYi8Tvk8V0{Wxp@<~JgHO&NT*Lv%}d403uwBF5zZ;|(dhCiyq<8n;z zinn0=^lVH_?`kxzVV}hhy$8|w2iX4tKeR+=ki3fNj-wcF z9}4jvp-|rmlz=XL#dMtmzyJB + + //#define ATMEGA8 + + #ifndef CPU_FREQ + #define CPU_FREQ 16000000L + #endif + + #ifndef TWI_FREQ + #define TWI_FREQ 100000L + #endif + + #ifndef TWI_BUFFER_LENGTH + #define TWI_BUFFER_LENGTH 32 + #endif + + #define TWI_READY 0 + #define TWI_MRX 1 + #define TWI_MTX 2 + #define TWI_SRX 3 + #define TWI_STX 4 + + void twi_init(void); + void twi_setAddress(uint8_t); + uint8_t twi_readFrom(uint8_t, uint8_t*, uint8_t); + uint8_t twi_writeTo(uint8_t, uint8_t*, uint8_t, uint8_t); + uint8_t twi_transmit(uint8_t*, uint8_t); + void twi_attachSlaveRxEvent( void (*)(uint8_t*, int) ); + void twi_attachSlaveTxEvent( void (*)(void) ); + void twi_reply(uint8_t); + void twi_stop(void); + void twi_releaseBus(void); + +#endif + diff --git a/targets/wiring/twi.o b/targets/wiring/twi.o new file mode 100644 index 0000000000000000000000000000000000000000..0e538dbfd9d2ef7b5a838c1bd4de242b3dc60972 GIT binary patch literal 9988 zcmbuE4RBml702(RMN+_~bgC9XQfY()LpHnFrfJeb+S!(`N;_?-4v5=LcGGOxWVgF7 zNn05EQX1Sk6tZ0k0YOkv5ITSZA|S$JM6EMwM+Z@~11aN2)c^?u@B@wKf9}WLOHqrI=%EBhJGx$1Mhs{94k+<6D zx|YrbBMl=b`;+Is>^xNYY}KDC->&ioZY&0(7p{3VaLy-&-}1=wD}_UaQj6* ztGgRcAKOK-&G*sAslEBbFiC04k*SLPgRjYqxnlQ!-#dhS zl57+*$yNI*_fO%Q<2v@F zKj3>yAvxgZ`Fg*fhyBdV0Cwt z=PYM?FW1#JN6BWWkP}1K-yFrv(cZe>*DC2>Z|3L=htRqgsu;^JT`ybrmEFY? zu(#WvvuhJc`p?xe=n==P{Q-ZsX$P}JTg=)IoBYD%6Y}oV@;SRuPnV|lU-ykNHL?BB z;L&Y|O7rgoA1laY;f=zxg@+4w7j7=>ETjw3!kWT`g+QTlsPdW0p{k+z`{kPTXHjvA z5GT=E6&EM)inYMvD~Ok}6ne^y;@uX1-QwR`{2z-Os4Eh&}NlYlfItQS0*frn-Kc#nE5j1c{5S>a%Cli zwqHha-PYGEewXcCwm+3N22b=dpUvFIyqLM4`E$(MnA@4RGjC(w!MvCGTIO#te}(x; z<{O!R%{jJlfnK9(XPEiX*burM$9$5R?Ij21#y<)tEg>xM8p?G zv*D|Sj2f{C(XQlrR-HhNREy0lJ)O8sbQ=HV@k<*RMnqD1kv?^t+Gh>>l=E#V`|K5` zQ;o|MpGh25{Bh-}ye(N5s)*PjPF6PH*@kzDd4_ih_{0$rgW_z7#5ag@41ZOeXLzp& z86L87bu0B>9ucvh*P(8Xv)|;|S9)AV=*$A>KyEebJoHiBYH=Uy_pqPua2|#gBj#@_ zMqeIP{4uT}M0rl6AE+YYK`SQ@S~+>d%E_ZvP9C>%@&hX;KeTf4lv!ya!WZjQ3=#2T z@g>7Q<(xdrao&I2oXC|!=0vm3$w8`HEq>1)53`@&ah!iseC+uk?NKQr4qNxgVJifsU+%LckBAnhw4Ss$VdaO`aHn3? zj);q#X2X{_dWT02+l~B6XN%#hof`}%oFT(ooretPoW~4rcb+nQt@FI$-Oj6q2c5qg z&O7fJ9(F!{f($w$?r_dDe5bR(@ZCHHJGEdA-LEa zt)jOlm)zWwh?}Zm={O9>%2YX@X1d5~Wf9vq8qYeSvap&^p()H^HBp72iOPo7hLRVH zR21xRS}2Px&x@_lt@@0uBG;A9x~8|yvbW8(Q}QgWrZuxfnlG_hAdfPEW@v&92&S2P zN!)sVFw`u^$oMPS(m)&AAl!x)Eov2=sdP+D1U1m43zJsF)4lDfgq$NZ%4(9ZiZf&D z)lllHed%OeR-}Q$!{mJt=UAkDh8WSrm0n`M_H{2lK*A7W?iqbmg?bllJ%(A7(%&KMETyO zFgklwv&e0*j%NCKbfIb4DdRfcs_`KbO*gx{J(I|NxKx`lB$zUc)ByRW-)8PxSf!rk zwCJ^@D)+%!mOj{QVPkG<|vsqg_S8Kl!Q&v z)JW+rCh1}}&A4(-gzM;LtqIfe#}SmoxIIZOV~C~_v0SNtm|N&3SDB(iH^Vfa5RX)u zUIo!v)6`TY`dr?g=_B2O&`~FmP+760LtkIbs2a$*{x?HMQQX(JWx@K9i)9#?m ziSD4S3dyvn{y}597m{gFnT(d}WLi`T0)RZxXa`5Y$BI4 z;+QJ0rKD5-V3ke8;;XXhZn9z76q9(&jkT~@h4KT0;=p;^*6k4eVVAKk6CHg&n7ad?WW0C$2GclJTz`PV{~#9aC;|K z^p?gd8tqGTxan-Pv9ZiF=f>Pb%X&0PvwcM=_qkLo+fNEk6P%`dxceJ)22m%tL=L;s ztxI$yl6}%0-Kjhyx@nFlvMYK!I}=%MhlYNd;*y?tVw;X)ns&9EAyzEzwqrQd!s*Vm z#yH~M$_aZcPgx}__ay3b+q>OZJ6+wZymo2ICQ`9_H?hqX^_WtkzCD){^(>_fbCp;- z8T0e>2mDz;c6go9?~8aczeT^CDji+K8FX4=@$>@vdkG2XHG=Cyhxb6dQNSO4YUSgg zU5O;>)k)w@0`I-H-DzAy{%E@B4U0Wsm79&yx03z8#jns*X>d zZFGR~NxZw4Vi=!nr80a#=8%8n1bsseP~J#aC!l|V_;ot*EdXV#NA#W@jjms}@}g)Iur_+JhSdyi zcZT-Z&CELz*|aLiU4T~dX=^77^!it};!QK<)oz+pu9+<6ErCfpw3Ovr09#GjF<4f% zw3hjj%}1m0G`(A7wnup#l||akvQez4=qH{`L`N)@N_TL%^k55z&bh?i!&V|Iw8kg!MX{?z1c>m zwppd*Snn@YjQf@6pYn61lGBvo@6+%@Ge>wzj&{Fl@lA>`=l3bbJ$;8_+|TzaM%@F7 z5!)k*5%ZghVe_8FXdE%X|4ha3U!fR&PE`y)_+AKmw2SYBVEDwnrMXWr)|MTLk%uoU zMt%+`#=Z22Vyr!nE1pe^Z-?-SHRxrn$!<`tveVaw(o#pvU`iV4L77C&b36N)Jv z;%UX0SHG}qeq-?;EPh!r>b|NNbw@3mHx*-C-cgM4`nO`#{hwmg#WRZ@ms1tfMa)r5 zrUHK()?+$fF~<5V%cjQSI>nej4T>>;niSJTv{*J5ST>hiHtQ_js2K5VQH-4T5YMHK z=r!L#r|4Kfr{*z|X@1XQj3eajWQ(!WjB(M7+=91|%|9(hf3 zLyo;|p2f`;A5@I}?gfiSEk2VbDg0m$tg*Pw;*4VKi`Q9vi^Yc(BX377p0F5yPeohU zKQFd;gT+INv8Uc?@%58#yQ;cxW99N8cFr%1Ui|Z6q hxFW9@^X(SJ)P%T4F%6qIpqRoGPbel7&x2KL{|9fbRWtwq literal 0 HcmV?d00001 diff --git a/targets/wiring/uart.h b/targets/wiring/uart.h new file mode 100755 index 000000000..f00af61cd --- /dev/null +++ b/targets/wiring/uart.h @@ -0,0 +1,40 @@ +/* + uart.h - UART Serial library for Wiring + Based on Hernando Barragan's original C implementation + Copyright (c) 2006 Nicholas Zambetti. 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 uart_h +#define uart_h + + #include + + #ifndef CPU_FREQ + #define CPU_FREQ 16000000L + #endif + + #ifndef UART_BUFFER_LENGTH + #define UART_BUFFER_LENGTH 32 + #endif + + void uart_init(uint8_t, long); + int uart_read(uint8_t); + uint8_t uart_available(uint8_t); + void uart_write(uint8_t, char*, uint8_t); + +#endif + diff --git a/targets/wiring/uart.o b/targets/wiring/uart.o new file mode 100644 index 0000000000000000000000000000000000000000..85a64ac975d5b4dda92eed14f06d49107afd1941 GIT binary patch literal 8792 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 X2RX^<-RwkS#6~%rrx++wmd^hH#Y3>S literal 0 HcmV?d00001