diff options
Diffstat (limited to 'targets/arduino')
| -rwxr-xr-x | targets/arduino/HardwareSerial.cpp | 170 | ||||
| -rwxr-xr-x | targets/arduino/HardwareSerial.h | 64 | ||||
| -rwxr-xr-x | targets/arduino/Makefile | 239 | ||||
| -rw-r--r-- | targets/arduino/WConstants.h | 1 | ||||
| -rwxr-xr-x | targets/arduino/WInterrupts.c | 98 | ||||
| -rwxr-xr-x | targets/arduino/WProgram.h | 17 | ||||
| -rw-r--r-- | targets/arduino/WRandom.cpp | 54 | ||||
| -rw-r--r-- | targets/arduino/binary.h | 515 | ||||
| -rwxr-xr-x | targets/arduino/main.cxx | 12 | ||||
| -rwxr-xr-x | targets/arduino/pins_arduino.c | 169 | ||||
| -rw-r--r-- | targets/arduino/pins_arduino.h | 65 | ||||
| -rwxr-xr-x | targets/arduino/wiring.c | 196 | ||||
| -rwxr-xr-x | targets/arduino/wiring.h | 112 | ||||
| -rwxr-xr-x | targets/arduino/wiring_analog.c | 110 | ||||
| -rwxr-xr-x | targets/arduino/wiring_digital.c | 99 | ||||
| -rwxr-xr-x | targets/arduino/wiring_private.h | 59 | ||||
| -rwxr-xr-x | targets/arduino/wiring_pulse.c | 55 | ||||
| -rwxr-xr-x | targets/arduino/wiring_serial.c | 212 | ||||
| -rwxr-xr-x | targets/arduino/wiring_shift.c | 40 | 
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);		 -	} -}  | 
