aboutsummaryrefslogtreecommitdiff
path: root/targets/arduino
diff options
context:
space:
mode:
Diffstat (limited to 'targets/arduino')
-rwxr-xr-xtargets/arduino/HardwareSerial.cpp170
-rwxr-xr-xtargets/arduino/HardwareSerial.h64
-rwxr-xr-xtargets/arduino/Makefile239
-rw-r--r--targets/arduino/WConstants.h1
-rwxr-xr-xtargets/arduino/WInterrupts.c98
-rwxr-xr-xtargets/arduino/WProgram.h17
-rw-r--r--targets/arduino/WRandom.cpp54
-rw-r--r--targets/arduino/binary.h515
-rwxr-xr-xtargets/arduino/main.cxx12
-rwxr-xr-xtargets/arduino/pins_arduino.c169
-rw-r--r--targets/arduino/pins_arduino.h65
-rwxr-xr-xtargets/arduino/wiring.c196
-rwxr-xr-xtargets/arduino/wiring.h112
-rwxr-xr-xtargets/arduino/wiring_analog.c110
-rwxr-xr-xtargets/arduino/wiring_digital.c99
-rwxr-xr-xtargets/arduino/wiring_private.h59
-rwxr-xr-xtargets/arduino/wiring_pulse.c55
-rwxr-xr-xtargets/arduino/wiring_serial.c212
-rwxr-xr-xtargets/arduino/wiring_shift.c40
19 files changed, 0 insertions, 2287 deletions
diff --git a/targets/arduino/HardwareSerial.cpp b/targets/arduino/HardwareSerial.cpp
deleted file mode 100755
index f78eb2d..0000000
--- a/targets/arduino/HardwareSerial.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- HarwareSerial.cpp - 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
-
- Modified 23 November 2006 by David A. Mellis
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <inttypes.h>
-#include "wiring.h"
-
-#include "HardwareSerial.h"
-
-// Constructors ////////////////////////////////////////////////////////////////
-
-HardwareSerial::HardwareSerial(uint8_t uart)
-{
- //if(uart == 0){
- // _uart = 0;
- //}else{
- // _uart = 1;
- //}
-}
-
-// Public Methods //////////////////////////////////////////////////////////////
-
-void HardwareSerial::begin(long speed)
-{
- beginSerial(speed);
-}
-
-uint8_t HardwareSerial::available(void)
-{
- return serialAvailable();
-}
-
-int HardwareSerial::read(void)
-{
- return serialRead();
-}
-
-void HardwareSerial::flush()
-{
- serialFlush();
-}
-
-void HardwareSerial::print(char c)
-{
- printByte(c);
-}
-
-void HardwareSerial::print(const char c[])
-{
- printString(c);
-}
-
-void HardwareSerial::print(uint8_t b)
-{
- printByte(b);
-}
-
-void HardwareSerial::print(int n)
-{
- print((long) n);
-}
-
-void HardwareSerial::print(unsigned int n)
-{
- print((unsigned long) n);
-}
-
-void HardwareSerial::print(long n)
-{
- if (n < 0) {
- print('-');
- n = -n;
- }
- printNumber(n, 10);
-}
-
-void HardwareSerial::print(unsigned long n)
-{
- printNumber(n, 10);
-}
-
-void HardwareSerial::print(long n, int base)
-{
- if (base == 0)
- print((char) n);
- else if (base == 10)
- print(n);
- else
- printNumber(n, base);
-}
-
-void HardwareSerial::println(void)
-{
- print('\r');
- print('\n');
-}
-
-void HardwareSerial::println(char c)
-{
- print(c);
- println();
-}
-
-void HardwareSerial::println(const char c[])
-{
- print(c);
- println();
-}
-
-void HardwareSerial::println(uint8_t b)
-{
- print(b);
- println();
-}
-
-void HardwareSerial::println(int n)
-{
- print(n);
- println();
-}
-
-void HardwareSerial::println(long n)
-{
- print(n);
- println();
-}
-
-void HardwareSerial::println(unsigned long n)
-{
- print(n);
- println();
-}
-
-void HardwareSerial::println(long n, int base)
-{
- print(n, base);
- println();
-}
-
-// Private Methods /////////////////////////////////////////////////////////////
-
-void HardwareSerial::printNumber(unsigned long n, uint8_t base)
-{
- printIntegerInBase(n, base);
-}
-
-// Preinstantiate Objects //////////////////////////////////////////////////////
-
-HardwareSerial Serial = HardwareSerial(0);
-//HardwareSerial Serial1 = HardwareSerial(1);
-
diff --git a/targets/arduino/HardwareSerial.h b/targets/arduino/HardwareSerial.h
deleted file mode 100755
index 4f0cb54..0000000
--- a/targets/arduino/HardwareSerial.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- 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 <inttypes.h>
-
-#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 flush(void);
- 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 println(void);
- void println(char);
- void println(const char[]);
- void println(uint8_t);
- void println(int);
- void println(long);
- void println(unsigned long);
- void println(long, int);
-};
-
-extern HardwareSerial Serial;
-//extern HardwareSerial Serial1;
-
-#endif
-
diff --git a/targets/arduino/Makefile b/targets/arduino/Makefile
deleted file mode 100755
index 9290fcc..0000000
--- a/targets/arduino/Makefile
+++ /dev/null
@@ -1,239 +0,0 @@
-# Arduino makefile
-#
-# This makefile allows you to build sketches from the command line
-# without the Arduino environment (or Java).
-#
-# The Arduino environment does preliminary processing on a sketch before
-# compiling it. If you're using this makefile instead, you'll need to do
-# a few things differently:
-#
-# - Give your program's file a .cpp extension (e.g. foo.cpp).
-#
-# - Put this line at top of your code: #include <WProgram.h>
-#
-# - Write prototypes for all your functions (or define them before you
-# call them). A prototype declares the types of parameters a
-# function will take and what type of value it will return. This
-# means that you can have a call to a function before the definition
-# of the function. A function prototype looks like the first line of
-# the function, with a semi-colon at the end. For example:
-# int digitalRead(int pin);
-#
-# - Write a main() function for your program that returns an int, calls
-# init() and setup() once (in that order), and then calls loop()
-# repeatedly():
-#
-# int main()
-# {
-# init();
-# setup();
-#
-# for (;;)
-# loop();
-#
-# return 0;
-# }
-#
-# Instructions for using the makefile:
-#
-# 1. Copy this file into the folder with your sketch.
-#
-# 2. Below, modify the line containing "TARGET" to refer to the name of
-# of your program's file without an extension (e.g. TARGET = foo).
-#
-# 3. Modify the line containg "ARDUINO" to point the directory that
-# contains the Arduino core (for normal Arduino installations, this
-# is the lib/targets/arduino sub-directory).
-#
-# 4. Modify the line containing "PORT" to refer to the filename
-# representing the USB or serial connection to your Arduino board
-# (e.g. PORT = /dev/tty.USB0). If the exact name of this file
-# changes, you can use * as a wildcard (e.g. PORT = /dev/tty.USB*).
-#
-# 5. At the command line, change to the directory containing your
-# program's file and the makefile.
-#
-# 6. Type "make" and press enter to compile/verify your program.
-#
-# 7. Type "make upload", reset your Arduino board, and press enter to
-# upload your program to the Arduino board.
-#
-# $Id$
-
-PORT = /dev/tty.usbserial*
-TARGET = foo
-ARDUINO = arduino
-SRC = $(ARDUINO)/pins_arduino.c $(ARDUINO)/wiring.c \
-$(ARDUINO)/wiring_analog.c $(ARDUINO)/wiring_digital.c \
-$(ARDUINO)/wiring_pulse.c $(ARDUINO)/wiring_serial.c \
-$(ARDUINO)/wiring_shift.c $(ARDUINO)/WInterrupts.c
-CXXSRC = $(ARDUINO)/HardwareSerial.cpp $(ARDUINO)/WRandom.cpp
-MCU = atmega168
-F_CPU = 16000000
-FORMAT = ihex
-UPLOAD_RATE = 19200
-
-# Name of this Makefile (used for "make depend").
-MAKEFILE = Makefile
-
-# Debugging format.
-# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
-# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
-DEBUG = stabs
-
-OPT = s
-
-# Place -D or -U options here
-CDEFS = -DF_CPU=$(F_CPU)
-CXXDEFS = -DF_CPU=$(F_CPU)
-
-# Place -I options here
-CINCS = -I$(ARDUINO)
-CXXINCS = -I$(ARDUINO)
-
-# Compiler flag to set the C Standard level.
-# c89 - "ANSI" C
-# gnu89 - c89 plus GCC extensions
-# c99 - ISO C99 standard (not yet fully implemented)
-# gnu99 - c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-CDEBUG = -g$(DEBUG)
-CWARN = -Wall -Wstrict-prototypes
-CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
-
-CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA)
-CXXFLAGS = $(CDEFS) $(CINCS) -O$(OPT)
-#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-LDFLAGS = -lm
-
-
-# Programming support using avrdude. Settings and variables.
-AVRDUDE_PROGRAMMER = stk500
-AVRDUDE_PORT = $(PORT)
-AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
-AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
- -b $(UPLOAD_RATE)
-
-# Program settings
-CC = avr-gcc
-CXX = avr-g++
-OBJCOPY = avr-objcopy
-OBJDUMP = avr-objdump
-AR = avr-ar
-SIZE = avr-size
-NM = avr-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-MV = mv -f
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o)
-
-# Define all listing files.
-LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst)
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
-ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-# Default target.
-all: build
-
-build: elf hex
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-eep: $(TARGET).eep
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-# Program the device.
-upload: $(TARGET).hex
- $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)
-
-
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000
-
-
-coff: $(TARGET).elf
- $(COFFCONVERT) -O coff-avr $(TARGET).elf $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
- $(COFFCONVERT) -O coff-ext-avr $(TARGET).elf $(TARGET).cof
-
-
-.SUFFIXES: .elf .hex .eep .lss .sym
-
-.elf.hex:
- $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-.elf.eep:
- -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
- --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-.elf.lss:
- $(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-.elf.sym:
- $(NM) -n $< > $@
-
-
-core.a: $(OBJ)
- @for i in $(OBJ); do echo $(AR) rcs core.a $$i; $(AR) rcs core.a $$i; done
-
-# Link: create ELF output file from library.
-$(TARGET).elf: core.a
- $(CC) $(ALL_CFLAGS) -o $@ $(TARGET).cpp -L. core.a $(LDFLAGS)
-
-# Compile: create object files from C++ source files.
-.cpp.o:
- $(CXX) -c $(ALL_CXXFLAGS) $< -o $@
-
-# Compile: create object files from C source files.
-.c.o:
- $(CC) -c $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files.
-.c.s:
- $(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-.S.o:
- $(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-
-
-# Target: clean project.
-clean:
- $(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).cof $(TARGET).elf \
- $(TARGET).map $(TARGET).sym $(TARGET).lss core.a \
- $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d)
-
-depend:
- if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \
- then \
- sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \
- $(MAKEFILE).$$$$ && \
- $(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \
- fi
- echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \
- >> $(MAKEFILE); \
- $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE)
-
-.PHONY: all build elf hex eep lss sym program coff extcoff clean depend
diff --git a/targets/arduino/WConstants.h b/targets/arduino/WConstants.h
deleted file mode 100644
index 3e19ac4..0000000
--- a/targets/arduino/WConstants.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "wiring.h"
diff --git a/targets/arduino/WInterrupts.c b/targets/arduino/WInterrupts.c
deleted file mode 100755
index 38992ee..0000000
--- a/targets/arduino/WInterrupts.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
-
-/*
- Part of the Wiring project - http://wiring.uniandes.edu.co
-
- Copyright (c) 2004-05 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 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
-
- Modified 24 November 2006 by David A. Mellis
-*/
-
-#include <inttypes.h>
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <avr/signal.h>
-#include <avr/pgmspace.h>
-#include <stdio.h>
-
-#include "WConstants.h"
-#include "wiring_private.h"
-
-volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS];
-// volatile static voidFuncPtr twiIntFunc;
-
-#if defined(__AVR_ATmega168__)
-#define MCUCR EICRA
-#define GICR EIMSK
-#endif
-
-void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) {
- if(interruptNum < EXTERNAL_NUM_INTERRUPTS) {
- intFunc[interruptNum] = userFunc;
-
- if (interruptNum == 0) {
- // Configure the interrupt mode (trigger on low input, any change, rising
- // edge, or falling edge). The mode constants were chosen to correspond
- // to the configuration bits in the hardware register, so we simply shift
- // the mode into place.
- MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
-
- // Enable the interrupt.
- GICR |= (1 << INT0);
- } else {
- MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
- GICR |= (1 << INT1);
- }
- }
-}
-
-void detachInterrupt(uint8_t interruptNum) {
- if(interruptNum < EXTERNAL_NUM_INTERRUPTS) {
- if (interruptNum == 0)
- // Disable the interrupt.
- GICR &= ~(1 << INT0);
- else
- GICR &= ~(1 << INT1);
-
- intFunc[interruptNum] = 0;
- }
-}
-
-/*
-void attachInterruptTwi(void (*userFunc)(void) ) {
- twiIntFunc = userFunc;
-}
-*/
-
-SIGNAL(SIG_INTERRUPT0) {
- if(intFunc[EXTERNAL_INT_0])
- intFunc[EXTERNAL_INT_0]();
-}
-
-SIGNAL(SIG_INTERRUPT1) {
- if(intFunc[EXTERNAL_INT_1])
- intFunc[EXTERNAL_INT_1]();
-}
-
-/*
-SIGNAL(SIG_2WIRE_SERIAL) {
- if(twiIntFunc)
- twiIntFunc();
-}
-*/
-
diff --git a/targets/arduino/WProgram.h b/targets/arduino/WProgram.h
deleted file mode 100755
index d6d5ccc..0000000
--- a/targets/arduino/WProgram.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include <avr/interrupt.h>
-#include <avr/signal.h>
-
-#include "wiring.h"
-
-#ifdef __cplusplus
-#include "HardwareSerial.h"
-
-// random prototypes
-long random(long);
-long random(long, long);
-void randomSeed(unsigned int);
-#endif
diff --git a/targets/arduino/WRandom.cpp b/targets/arduino/WRandom.cpp
deleted file mode 100644
index c45c306..0000000
--- a/targets/arduino/WRandom.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
-
-/*
- Part of the Wiring project - http://wiring.org.co
- Copyright (c) 2004-06 Hernando Barragan
- Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/
-
- 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$
-*/
-
-extern "C" {
- #include "stdlib.h"
-}
-
-void randomSeed(unsigned int seed)
-{
- if(seed != 0){
- srand(seed);
- }
-}
-
-long random(long howbig)
-{
- long value;
- 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;
-}
-
diff --git a/targets/arduino/binary.h b/targets/arduino/binary.h
deleted file mode 100644
index af14980..0000000
--- a/targets/arduino/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/targets/arduino/main.cxx b/targets/arduino/main.cxx
deleted file mode 100755
index 52351e4..0000000
--- a/targets/arduino/main.cxx
+++ /dev/null
@@ -1,12 +0,0 @@
-int main(void)
-{
- init();
-
- setup();
-
- for (;;)
- loop();
-
- return 0;
-}
-
diff --git a/targets/arduino/pins_arduino.c b/targets/arduino/pins_arduino.c
deleted file mode 100755
index 3ef07b6..0000000
--- a/targets/arduino/pins_arduino.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- pins_arduino.c - pin definitions for the Arduino board
- Part of Arduino / Wiring Lite
-
- Copyright (c) 2005 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$
-*/
-
-#include <avr/io.h>
-#include "wiring_private.h"
-#include "pins_arduino.h"
-
-// On the Arduino board, digital pins are also used
-// for the analog output (software PWM). Analog input
-// pins are a separate set.
-
-// ATMEL ATMEGA8 & 168 / ARDUINO
-//
-// +-\/-+
-// PC6 1| |28 PC5 (AI 5)
-// (D 0) PD0 2| |27 PC4 (AI 4)
-// (D 1) PD1 3| |26 PC3 (AI 3)
-// (D 2) PD2 4| |25 PC2 (AI 2)
-// PWM+ (D 3) PD3 5| |24 PC1 (AI 1)
-// (D 4) PD4 6| |23 PC0 (AI 0)
-// VCC 7| |22 GND
-// GND 8| |21 AREF
-// PB6 9| |20 AVCC
-// PB7 10| |19 PB5 (D 13)
-// PWM+ (D 5) PD5 11| |18 PB4 (D 12)
-// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM
-// (D 7) PD7 13| |16 PB2 (D 10) PWM
-// (D 8) PB0 14| |15 PB1 (D 9) PWM
-// +----+
-//
-// (PWM+ indicates the additional PWM pins on the ATmega168.)
-
-
-#define PB 2
-#define PC 3
-#define PD 4
-
-// these arrays map port names (e.g. port B) to the
-// appropriate addresses for various functions (e.g. reading
-// and writing)
-const uint8_t PROGMEM port_to_mode_PGM[] = {
- NOT_A_PORT,
- NOT_A_PORT,
- &DDRB,
- &DDRC,
- &DDRD,
-};
-
-const uint8_t PROGMEM port_to_output_PGM[] = {
- NOT_A_PORT,
- NOT_A_PORT,
- &PORTB,
- &PORTC,
- &PORTD,
-};
-
-const uint8_t PROGMEM port_to_input_PGM[] = {
- NOT_A_PORT,
- NOT_A_PORT,
- &PINB,
- &PINC,
- &PIND,
-};
-
-const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
- PD, /* 0 */
- PD,
- PD,
- PD,
- PD,
- PD,
- PD,
- PD,
- PB, /* 8 */
- PB,
- PB,
- PB,
- PB,
- PB,
- PC, /* 14 */
- PC,
- PC,
- PC,
- PC,
- PC,
-};
-
-const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
- _BV(0), /* 0, port D */
- _BV(1),
- _BV(2),
- _BV(3),
- _BV(4),
- _BV(5),
- _BV(6),
- _BV(7),
- _BV(0), /* 8, port B */
- _BV(1),
- _BV(2),
- _BV(3),
- _BV(4),
- _BV(5),
- _BV(0), /* 14, port C */
- _BV(1),
- _BV(2),
- _BV(3),
- _BV(4),
- _BV(5),
-};
-
-const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
- NOT_ON_TIMER, /* 0 - port D */
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- // on the ATmega168, digital pin 3 has hardware pwm
-#if defined(__AVR_ATmega168__)
- TIMER2B,
-#else
- NOT_ON_TIMER,
-#endif
- NOT_ON_TIMER,
- // on the ATmega168, digital pins 5 and 6 have hardware pwm
-#if defined(__AVR_ATmega168__)
- TIMER0B,
- TIMER0A,
-#else
- NOT_ON_TIMER,
- NOT_ON_TIMER,
-#endif
- NOT_ON_TIMER,
- NOT_ON_TIMER, /* 8 - port B */
- TIMER1A,
- TIMER1B,
-#if defined(__AVR_ATmega168__)
- TIMER2A,
-#else
- TIMER2,
-#endif
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER, /* 14 - port C */
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
- NOT_ON_TIMER,
-};
-
diff --git a/targets/arduino/pins_arduino.h b/targets/arduino/pins_arduino.h
deleted file mode 100644
index e0b7add..0000000
--- a/targets/arduino/pins_arduino.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- pins_arduino.h - Pin definition functions for Arduino
- Part of Arduino - http://www.arduino.cc/
-
- Copyright (c) 2007 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.h 249 2007-02-03 16:52:51Z mellis $
-*/
-
-#ifndef Pins_Arduino_h
-#define Pins_Arduino_h
-
-#include <avr/pgmspace.h>
-
-#define NOT_A_PIN 0
-#define NOT_A_PORT 0
-
-#define NOT_ON_TIMER 0
-#define TIMER0A 1
-#define TIMER0B 2
-#define TIMER1A 3
-#define TIMER1B 4
-#define TIMER2 5
-#define TIMER2A 6
-#define TIMER2B 7
-
-extern const uint8_t PROGMEM port_to_mode_PGM[];
-extern const uint8_t PROGMEM port_to_input_PGM[];
-extern const uint8_t PROGMEM port_to_output_PGM[];
-
-extern const uint8_t PROGMEM digital_pin_to_port_PGM[];
-extern const uint8_t PROGMEM digital_pin_to_bit_PGM[];
-extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[];
-
-extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];
-
-// Get the bit location within the hardware port of the given virtual pin.
-// This comes from the pins_*.c file for the active board configuration.
-//
-// These perform slightly better as macros compared to inline functions
-//
-#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
-#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) )
-#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) )
-#define analogInPinToBit(P) (P)
-#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_output_PGM + (P))) )
-#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_input_PGM + (P))) )
-#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_mode_PGM + (P))) )
-
-#endif
diff --git a/targets/arduino/wiring.c b/targets/arduino/wiring.c
deleted file mode 100755
index 5dda822..0000000
--- a/targets/arduino/wiring.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- wiring.c - Partial implementation of the Wiring API for the ATmega8.
- 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$
-*/
-
-#include "wiring_private.h"
-
-// The number of times timer 0 has overflowed since the program started.
-// Must be volatile or gcc will optimize away some uses of it.
-volatile unsigned long timer0_overflow_count;
-
-SIGNAL(SIG_OVERFLOW0)
-{
- timer0_overflow_count++;
-}
-
-unsigned long millis()
-{
- // timer 0 increments every 64 cycles, and overflows when it reaches
- // 256. we would calculate the total number of clock cycles, then
- // divide by the number of clock cycles per millisecond, but this
- // overflows too often.
- //return timer0_overflow_count * 64UL * 256UL / (F_CPU / 1000UL);
-
- // instead find 1/128th the number of clock cycles and divide by
- // 1/128th the number of clock cycles per millisecond
- return timer0_overflow_count * 64UL * 2UL / (F_CPU / 128000UL);
-}
-
-void delay(unsigned long ms)
-{
- unsigned long start = millis();
-
- while (millis() - start < ms)
- ;
-}
-
-/* Delay for the given number of microseconds. Assumes a 16 MHz clock.
- * Disables interrupts, which will disrupt the millis() function if used
- * too frequently. */
-void delayMicroseconds(unsigned int us)
-{
- uint8_t oldSREG;
-
- // calling avrlib's delay_us() function with low values (e.g. 1 or
- // 2 microseconds) gives delays longer than desired.
- //delay_us(us);
-
-#if F_CPU >= 16000000L
- // for the 16 MHz clock on most Arduino boards
-
- // for a one-microsecond delay, simply return. the overhead
- // of the function call yields a delay of approximately 1 1/8 us.
- if (--us == 0)
- return;
-
- // the following loop takes a quarter of a microsecond (4 cycles)
- // per iteration, so execute it four times for each microsecond of
- // delay requested.
- us <<= 2;
-
- // account for the time taken in the preceeding commands.
- us -= 2;
-#else
- // for the 8 MHz internal clock on the ATmega168
-
- // for a one- or two-microsecond delay, simply return. the overhead of
- // the function calls takes more than two microseconds. can't just
- // subtract two, since us is unsigned; we'd overflow.
- if (--us == 0)
- return;
- if (--us == 0)
- return;
-
- // the following loop takes half of a microsecond (4 cycles)
- // per iteration, so execute it twice for each microsecond of
- // delay requested.
- us <<= 1;
-
- // partially compensate for the time taken by the preceeding commands.
- // we can't subtract any more than this or we'd overflow w/ small delays.
- us--;
-#endif
-
- // disable interrupts, otherwise the timer 0 overflow interrupt that
- // tracks milliseconds will make us delay longer than we want.
- oldSREG = SREG;
- cli();
-
- // busy wait
- __asm__ __volatile__ (
- "1: sbiw %0,1" "\n\t" // 2 cycles
- "brne 1b" : "=w" (us) : "0" (us) // 2 cycles
- );
-
- // reenable interrupts.
- SREG = oldSREG;
-}
-
-void init()
-{
- // this needs to be called before setup() or some functions won't
- // work there
- sei();
-
- // timer 0 is used for millis() and delay()
- timer0_overflow_count = 0;
- // on the ATmega168, timer 0 is also used for fast hardware pwm
- // (using phase-correct PWM would mean that timer 0 overflowed half as often
- // resulting in different millis() behavior on the ATmega8 and ATmega168)
-#if defined(__AVR_ATmega168__)
- sbi(TCCR0A, WGM01);
- sbi(TCCR0A, WGM00);
-#endif
- // set timer 0 prescale factor to 64
-#if defined(__AVR_ATmega168__)
- sbi(TCCR0B, CS01);
- sbi(TCCR0B, CS00);
-#else
- sbi(TCCR0, CS01);
- sbi(TCCR0, CS00);
-#endif
- // enable timer 0 overflow interrupt
-#if defined(__AVR_ATmega168__)
- sbi(TIMSK0, TOIE0);
-#else
- sbi(TIMSK, TOIE0);
-#endif
-
- // timers 1 and 2 are used for phase-correct hardware pwm
- // this is better for motors as it ensures an even waveform
- // note, however, that fast pwm mode can achieve a frequency of up
- // 8 MHz (with a 16 MHz clock) at 50% duty cycle
-
- // set timer 1 prescale factor to 64
- sbi(TCCR1B, CS11);
- sbi(TCCR1B, CS10);
- // put timer 1 in 8-bit phase correct pwm mode
- sbi(TCCR1A, WGM10);
-
- // set timer 2 prescale factor to 64
-#if defined(__AVR_ATmega168__)
- sbi(TCCR2B, CS22);
-#else
- sbi(TCCR2, CS22);
-#endif
- // configure timer 2 for phase correct pwm (8-bit)
-#if defined(__AVR_ATmega168__)
- sbi(TCCR2A, WGM20);
-#else
- sbi(TCCR2, WGM20);
-#endif
-
- // set a2d reference to AVCC (5 volts)
- cbi(ADMUX, REFS1);
- sbi(ADMUX, REFS0);
-
- // set a2d prescale factor to 128
- // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range.
- // XXX: this will not work properly for other clock speeds, and
- // this code should use F_CPU to determine the prescale factor.
- sbi(ADCSRA, ADPS2);
- sbi(ADCSRA, ADPS1);
- sbi(ADCSRA, ADPS0);
-
- // enable a2d conversions
- sbi(ADCSRA, ADEN);
-
- // the bootloader connects pins 0 and 1 to the USART; disconnect them
- // here so they can be used as normal digital i/o; they will be
- // reconnected in Serial.begin()
-#if defined(__AVR_ATmega168__)
- UCSR0B = 0;
-#else
- UCSRB = 0;
-#endif
-} \ No newline at end of file
diff --git a/targets/arduino/wiring.h b/targets/arduino/wiring.h
deleted file mode 100755
index 3c77389..0000000
--- a/targets/arduino/wiring.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- wiring.h - Partial implementation of the Wiring API for the ATmega8.
- 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$
-*/
-
-#ifndef Wiring_h
-#define Wiring_h
-
-#include <avr/io.h>
-#include "binary.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-#define HIGH 0x1
-#define LOW 0x0
-
-#define INPUT 0x0
-#define OUTPUT 0x1
-
-#define true 0x1
-#define false 0x0
-
-#define PI 3.14159265
-#define HALF_PI 1.57079
-#define TWO_PI 6.283185
-
-#define SERIAL 0x0
-#define DISPLAY 0x1
-
-#define LSBFIRST 0
-#define MSBFIRST 1
-
-#define CHANGE 1
-#define FALLING 2
-#define RISING 3
-
-#define min(a,b) ((a)<(b)?(a):(b))
-#define max(a,b) ((a)>(b)?(a):(b))
-#define abs(x) ((x)>0?(x):-(x))
-#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
-#define radians(deg) ((deg)*DEG_TO_RAD)
-#define degrees(rad) ((rad)*RAD_TO_DEG)
-#define sq(x) ((x)*(x))
-
-#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
-#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
-
-typedef uint8_t boolean;
-typedef uint8_t byte;
-
-void init(void);
-
-void pinMode(uint8_t, uint8_t);
-void digitalWrite(uint8_t, uint8_t);
-int digitalRead(uint8_t);
-int analogRead(uint8_t);
-void analogWrite(uint8_t, int);
-
-void beginSerial(long);
-void serialWrite(unsigned char);
-int serialAvailable(void);
-int serialRead(void);
-void serialFlush(void);
-void printMode(int);
-void printByte(unsigned char c);
-void printNewline(void);
-void printString(const char *s);
-void printInteger(long n);
-void printHex(unsigned long n);
-void printOctal(unsigned long n);
-void printBinary(unsigned long n);
-void printIntegerInBase(unsigned long n, unsigned long base);
-
-unsigned long millis(void);
-void delay(unsigned long);
-void delayMicroseconds(unsigned int us);
-unsigned long pulseIn(uint8_t pin, uint8_t state);
-
-void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val);
-
-void attachInterrupt(uint8_t, void (*)(void), int mode);
-void detachInterrupt(uint8_t);
-
-void setup(void);
-void loop(void);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/targets/arduino/wiring_analog.c b/targets/arduino/wiring_analog.c
deleted file mode 100755
index 0ab32eb..0000000
--- a/targets/arduino/wiring_analog.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- wiring_analog.c - analog input and output
- 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_private.h"
-#include "pins_arduino.h"
-
-int analogRead(uint8_t pin)
-{
- uint8_t low, high, ch = analogInPinToBit(pin);
-
- // the low 4 bits of ADMUX select the ADC channel
- ADMUX = (ADMUX & (unsigned int) 0xf0) | (ch & (unsigned int) 0x0f);
-
- // without a delay, we seem to read from the wrong channel
- //delay(1);
-
- // start the conversion
- sbi(ADCSRA, ADSC);
-
- // ADSC is cleared when the conversion finishes
- while (bit_is_set(ADCSRA, ADSC));
-
- // we have to read ADCL first; doing so locks both ADCL
- // and ADCH until ADCH is read. reading ADCL second would
- // cause the results of each conversion to be discarded,
- // as ADCL and ADCH would be locked when it completed.
- low = ADCL;
- high = ADCH;
-
- // combine the two bytes
- return (high << 8) | low;
-}
-
-// Right now, PWM output only works on the pins with
-// hardware support. These are defined in the appropriate
-// pins_*.c file. For the rest of the pins, we default
-// to digital output.
-void analogWrite(uint8_t pin, int val)
-{
- // We need to make sure the PWM output is enabled for those pins
- // that support it, as we turn it off when digitally reading or
- // writing with them. Also, make sure the pin is in output mode
- // for consistenty with Wiring, which doesn't require a pinMode
- // call for the analog output pins.
- pinMode(pin, OUTPUT);
-
- if (digitalPinToTimer(pin) == TIMER1A) {
- // connect pwm to pin on timer 1, channel A
- sbi(TCCR1A, COM1A1);
- // set pwm duty
- OCR1A = val;
- } else if (digitalPinToTimer(pin) == TIMER1B) {
- // connect pwm to pin on timer 1, channel B
- sbi(TCCR1A, COM1B1);
- // set pwm duty
- OCR1B = val;
-#if defined(__AVR_ATmega168__)
- } else if (digitalPinToTimer(pin) == TIMER0A) {
- // connect pwm to pin on timer 0, channel A
- sbi(TCCR0A, COM0A1);
- // set pwm duty
- OCR0A = val;
- } else if (digitalPinToTimer(pin) == TIMER0B) {
- // connect pwm to pin on timer 0, channel B
- sbi(TCCR0A, COM0B1);
- // set pwm duty
- OCR0B = val;
- } else if (digitalPinToTimer(pin) == TIMER2A) {
- // connect pwm to pin on timer 2, channel A
- sbi(TCCR2A, COM2A1);
- // set pwm duty
- OCR2A = val;
- } else if (digitalPinToTimer(pin) == TIMER2B) {
- // connect pwm to pin on timer 2, channel B
- sbi(TCCR2A, COM2B1);
- // set pwm duty
- OCR2B = val;
-#else
- } else if (digitalPinToTimer(pin) == TIMER2) {
- // connect pwm to pin on timer 2, channel B
- sbi(TCCR2, COM21);
- // set pwm duty
- OCR2 = val;
-#endif
- } else if (val < 128)
- digitalWrite(pin, LOW);
- else
- digitalWrite(pin, HIGH);
-}
diff --git a/targets/arduino/wiring_digital.c b/targets/arduino/wiring_digital.c
deleted file mode 100755
index f38b2e1..0000000
--- a/targets/arduino/wiring_digital.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- wiring_digital.c - digital input and output functions
- 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_private.h"
-#include "pins_arduino.h"
-
-void pinMode(uint8_t pin, uint8_t mode)
-{
- uint8_t bit = digitalPinToBitMask(pin);
- uint8_t port = digitalPinToPort(pin);
- volatile uint8_t *reg;
-
- if (port == NOT_A_PIN) return;
-
- // JWS: can I let the optimizer do this?
- reg = portModeRegister(port);
-
- if (mode == INPUT) *reg &= ~bit;
- else *reg |= bit;
-}
-
-// Forcing this inline keeps the callers from having to push their own stuff
-// on the stack. It is a good performance win and only takes 1 more byte per
-// user than calling. (It will take more bytes on the 168.)
-//
-// But shouldn't this be moved into pinMode? Seems silly to check and do on
-// each digitalread or write.
-//
-static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline));
-static inline void turnOffPWM(uint8_t timer)
-{
- if (timer == TIMER1A) cbi(TCCR1A, COM1A1);
- if (timer == TIMER1B) cbi(TCCR1A, COM1B1);
-
-#if defined(__AVR_ATmega168__)
- if (timer == TIMER0A) cbi(TCCR0A, COM0A1);
- if (timer == TIMER0B) cbi(TCCR0A, COM0B1);
- if (timer == TIMER2A) cbi(TCCR2A, COM2A1);
- if (timer == TIMER2B) cbi(TCCR2A, COM2B1);
-#else
- if (timer == TIMER2) cbi(TCCR2, COM21);
-#endif
-}
-
-void digitalWrite(uint8_t pin, uint8_t val)
-{
- uint8_t timer = digitalPinToTimer(pin);
- uint8_t bit = digitalPinToBitMask(pin);
- uint8_t port = digitalPinToPort(pin);
- volatile uint8_t *out;
-
- if (port == NOT_A_PIN) return;
-
- // If the pin that support PWM output, we need to turn it off
- // before doing a digital write.
- if (timer != NOT_ON_TIMER) turnOffPWM(timer);
-
- out = portOutputRegister(port);
-
- if (val == LOW) *out &= ~bit;
- else *out |= bit;
-}
-
-int digitalRead(uint8_t pin)
-{
- uint8_t timer = digitalPinToTimer(pin);
- uint8_t bit = digitalPinToBitMask(pin);
- uint8_t port = digitalPinToPort(pin);
-
- if (port == NOT_A_PIN) return LOW;
-
- // If the pin that support PWM output, we need to turn it off
- // before getting a digital reading.
- if (timer != NOT_ON_TIMER) turnOffPWM(timer);
-
- if (*portInputRegister(port) & bit) return HIGH;
- return LOW;
-}
diff --git a/targets/arduino/wiring_private.h b/targets/arduino/wiring_private.h
deleted file mode 100755
index affccd8..0000000
--- a/targets/arduino/wiring_private.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- wiring_private.h - Internal header file.
- 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.h 239 2007-01-12 17:58:39Z mellis $
-*/
-
-#ifndef WiringPrivate_h
-#define WiringPrivate_h
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <avr/signal.h>
-#include <avr/delay.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-#include "wiring.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-#ifndef cbi
-#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
-#endif
-#ifndef sbi
-#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
-#endif
-
-#define EXTERNAL_INT_0 0
-#define EXTERNAL_INT_1 1
-
-#define EXTERNAL_NUM_INTERRUPTS 2
-
-typedef void (*voidFuncPtr)(void);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif
diff --git a/targets/arduino/wiring_pulse.c b/targets/arduino/wiring_pulse.c
deleted file mode 100755
index 642a5a2..0000000
--- a/targets/arduino/wiring_pulse.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- wiring_pulse.c - pulseIn() 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_private.h"
-#include "pins_arduino.h"
-
-/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH
- * or LOW, the type of pulse to measure. Works on pulses from 10 microseconds
- * to 3 minutes in length, but must be called at least N microseconds before
- * the start of the pulse. */
-unsigned long pulseIn(uint8_t pin, uint8_t state)
-{
- // cache the port and bit of the pin in order to speed up the
- // pulse width measuring loop and achieve finer resolution. calling
- // digitalRead() instead yields much coarser resolution.
- uint8_t bit = digitalPinToBitMask(pin);
- uint8_t port = digitalPinToPort(pin);
- uint8_t stateMask = (state ? bit : 0);
- unsigned long width = 0; // keep initialization out of time critical area
-
- // wait for the pulse to start
- while ((*portInputRegister(port) & bit) != stateMask)
- ;
-
- // wait for the pulse to stop
- while ((*portInputRegister(port) & bit) == stateMask)
- width++;
-
- // convert the reading to microseconds. The loop has been determined
- // to be 10 clock cycles long and have about 12 clocks between the edge
- // and the start of the loop. There will be some error introduced by
- // the interrupt handlers.
- return clockCyclesToMicroseconds(width * 10 + 12);
-}
diff --git a/targets/arduino/wiring_serial.c b/targets/arduino/wiring_serial.c
deleted file mode 100755
index 9392a09..0000000
--- a/targets/arduino/wiring_serial.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- wiring_serial.c - serial functions.
- 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_private.h"
-
-// Define constants and variables for buffering incoming serial data. We're
-// using a ring buffer (I think), in which rx_buffer_head is the index of the
-// location to which to write the next incoming character and rx_buffer_tail
-// is the index of the location from which to read.
-#define RX_BUFFER_SIZE 128
-
-unsigned char rx_buffer[RX_BUFFER_SIZE];
-
-int rx_buffer_head = 0;
-int rx_buffer_tail = 0;
-
-void beginSerial(long baud)
-{
-#if defined(__AVR_ATmega168__)
- UBRR0H = ((F_CPU / 16 + baud / 2) / baud - 1) >> 8;
- UBRR0L = ((F_CPU / 16 + baud / 2) / baud - 1);
-
- // enable rx and tx
- sbi(UCSR0B, RXEN0);
- sbi(UCSR0B, TXEN0);
-
- // enable interrupt on complete reception of a byte
- sbi(UCSR0B, RXCIE0);
-#else
- UBRRH = ((F_CPU / 16 + baud / 2) / baud - 1) >> 8;
- UBRRL = ((F_CPU / 16 + baud / 2) / baud - 1);
-
- // enable rx and tx
- sbi(UCSRB, RXEN);
- sbi(UCSRB, TXEN);
-
- // enable interrupt on complete reception of a byte
- sbi(UCSRB, RXCIE);
-#endif
-
- // defaults to 8-bit, no parity, 1 stop bit
-}
-
-void serialWrite(unsigned char c)
-{
-#if defined(__AVR_ATmega168__)
- while (!(UCSR0A & (1 << UDRE0)))
- ;
-
- UDR0 = c;
-#else
- while (!(UCSRA & (1 << UDRE)))
- ;
-
- UDR = c;
-#endif
-}
-
-int serialAvailable()
-{
- return (RX_BUFFER_SIZE + rx_buffer_head - rx_buffer_tail) % RX_BUFFER_SIZE;
-}
-
-int serialRead()
-{
- // if the head isn't ahead of the tail, we don't have any characters
- if (rx_buffer_head == rx_buffer_tail) {
- return -1;
- } else {
- unsigned char c = rx_buffer[rx_buffer_tail];
- rx_buffer_tail = (rx_buffer_tail + 1) % RX_BUFFER_SIZE;
- return c;
- }
-}
-
-void serialFlush()
-{
- // don't reverse this or there may be problems if the RX interrupt
- // occurs after reading the value of rx_buffer_head but before writing
- // the value to rx_buffer_tail; the previous value of rx_buffer_head
- // may be written to rx_buffer_tail, making it appear as if the buffer
- // were full, not empty.
- rx_buffer_head = rx_buffer_tail;
-}
-
-#if defined(__AVR_ATmega168__)
-SIGNAL(SIG_USART_RECV)
-#else
-SIGNAL(SIG_UART_RECV)
-#endif
-{
-#if defined(__AVR_ATmega168__)
- unsigned char c = UDR0;
-#else
- unsigned char c = UDR;
-#endif
-
- int i = (rx_buffer_head + 1) % RX_BUFFER_SIZE;
-
- // if we should be storing the received character into the location
- // just before the tail (meaning that the head would advance to the
- // current location of the tail), we're about to overflow the buffer
- // and so we don't write the character or advance the head.
- if (i != rx_buffer_tail) {
- rx_buffer[rx_buffer_head] = c;
- rx_buffer_head = i;
- }
-}
-
-void printMode(int mode)
-{
- // do nothing, we only support serial printing, not lcd.
-}
-
-void printByte(unsigned char c)
-{
- serialWrite(c);
-}
-
-void printNewline()
-{
- printByte('\n');
-}
-
-void printString(const char *s)
-{
- while (*s)
- printByte(*s++);
-}
-
-void printIntegerInBase(unsigned long n, unsigned long base)
-{
- unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
- unsigned long i = 0;
-
- if (n == 0) {
- printByte('0');
- return;
- }
-
- while (n > 0) {
- buf[i++] = n % base;
- n /= base;
- }
-
- for (; i > 0; i--)
- printByte(buf[i - 1] < 10 ?
- '0' + buf[i - 1] :
- 'A' + buf[i - 1] - 10);
-}
-
-void printInteger(long n)
-{
- if (n < 0) {
- printByte('-');
- n = -n;
- }
-
- printIntegerInBase(n, 10);
-}
-
-void printHex(unsigned long n)
-{
- printIntegerInBase(n, 16);
-}
-
-void printOctal(unsigned long n)
-{
- printIntegerInBase(n, 8);
-}
-
-void printBinary(unsigned long n)
-{
- printIntegerInBase(n, 2);
-}
-
-/* Including print() adds approximately 1500 bytes to the binary size,
- * so we replace it with the smaller and less-confusing printString(),
- * printInteger(), etc.
-void print(const char *format, ...)
-{
- char buf[256];
- va_list ap;
-
- va_start(ap, format);
- vsnprintf(buf, 256, format, ap);
- va_end(ap);
-
- printString(buf);
-}
-*/
diff --git a/targets/arduino/wiring_shift.c b/targets/arduino/wiring_shift.c
deleted file mode 100755
index 956f864..0000000
--- a/targets/arduino/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_private.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);
- }
-}