From 66dcf910bd4744d8ced56cb9586aa937a1a2d4c5 Mon Sep 17 00:00:00 2001 From: vg Date: Tue, 7 Jul 2020 16:24:01 +0200 Subject: first commit --- test/applet/HardwareSerial.d | 28 ++ test/applet/Makefile | 231 ++++++++++++ test/applet/Print.d | 22 ++ test/applet/WInterrupts.d | 24 ++ test/applet/WMath.d | 3 + test/applet/board | 1 + test/applet/core.a | Bin 0 -> 65636 bytes test/applet/pins_arduino.d | 24 ++ test/applet/test.cpp | 827 +++++++++++++++++++++++++++++++++++++++++++ test/applet/test.d | 0 test/applet/test.elf | Bin 0 -> 18361 bytes test/applet/test.hex | 315 ++++++++++++++++ test/applet/wiring.d | 22 ++ test/applet/wiring_analog.d | 24 ++ test/applet/wiring_digital.d | 24 ++ test/applet/wiring_pulse.d | 24 ++ test/applet/wiring_shift.d | 22 ++ 17 files changed, 1591 insertions(+) create mode 100644 test/applet/HardwareSerial.d create mode 100644 test/applet/Makefile create mode 100644 test/applet/Print.d create mode 100644 test/applet/WInterrupts.d create mode 100644 test/applet/WMath.d create mode 100644 test/applet/board create mode 100644 test/applet/core.a create mode 100644 test/applet/pins_arduino.d create mode 100644 test/applet/test.cpp create mode 100644 test/applet/test.d create mode 100644 test/applet/test.elf create mode 100644 test/applet/test.hex create mode 100644 test/applet/wiring.d create mode 100644 test/applet/wiring_analog.d create mode 100644 test/applet/wiring_digital.d create mode 100644 test/applet/wiring_pulse.d create mode 100644 test/applet/wiring_shift.d (limited to 'test/applet') diff --git a/test/applet/HardwareSerial.d b/test/applet/HardwareSerial.d new file mode 100644 index 0000000..826b211 --- /dev/null +++ b/test/applet/HardwareSerial.d @@ -0,0 +1,28 @@ +applet/HardwareSerial.o applet/HardwareSerial.d: ardmake/hardware/cores/arduino/HardwareSerial.cpp \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/string.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + ardmake/hardware/cores/arduino/binary.h \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h \ + ardmake/hardware/cores/arduino/HardwareSerial.h \ + ardmake/hardware/cores/arduino/Stream.h \ + ardmake/hardware/cores/arduino/Print.h \ + ardmake/hardware/cores/arduino/WString.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/ctype.h diff --git a/test/applet/Makefile b/test/applet/Makefile new file mode 100644 index 0000000..6728b4c --- /dev/null +++ b/test/applet/Makefile @@ -0,0 +1,231 @@ +compile: do_compile + +TARGET = $(notdir $(CURDIR)) +PORT = /dev/ttyUSB* +UPLOAD_RATE = 57600 +AVRDUDE_PROGRAMMER = stk500v1 +MCU = atmega168 +F_CPU = 16000000 + + +ARDUINO = /usr/share/arduino/hardware/arduino/cores/arduino +AVR_TOOLS_PATH = /usr/bin +SRC = $(ARDUINO)/pins_arduino.c $(ARDUINO)/wiring.c \ +$(ARDUINO)/wiring_analog.c $(ARDUINO)/wiring_digital.c \ +$(ARDUINO)/wiring_pulse.c $(ARDUINO)/wiring_shift.c \ +$(ARDUINO)/WInterrupts.c +CXXSRC = $(ARDUINO)/HardwareSerial.cpp $(ARDUINO)/WMath.cpp \ +$(ARDUINO)/Print.cpp +FORMAT = ihex + + +MAKEFILE = Makefile + +DEBUG = stabs + +OPT = s + +CDEFS = -DF_CPU=$(F_CPU) +CXXDEFS = -DF_CPU=$(F_CPU) + +CINCS = -I$(ARDUINO) +CXXINCS = -I$(ARDUINO) + +CSTANDARD = -std=gnu99 +CDEBUG = -g$(DEBUG) +CWARN = -Wall -Wstrict-prototypes +CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums + +CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA) +CXXFLAGS = $(CDEFS) $(CINCS) -O$(OPT) +LDFLAGS = -lm + + +AVRDUDE_PORT = $(PORT) +AVRDUDE_WRITE_FLASH = -U flash:w:applet/$(TARGET).hex +AVRDUDE_FLAGS = -V -F \ +-p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \ +-b $(UPLOAD_RATE) + +CC = $(AVR_TOOLS_PATH)/avr-gcc +CXX = $(AVR_TOOLS_PATH)/avr-g++ +OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy +OBJDUMP = $(AVR_TOOLS_PATH)/avr-objdump +AR = $(AVR_TOOLS_PATH)/avr-ar +SIZE = $(AVR_TOOLS_PATH)/avr-size +NM = $(AVR_TOOLS_PATH)/avr-nm +AVRDUDE = $(AVR_TOOLS_PATH)/avrdude +REMOVE = rm -f +MV = mv -f + +OBJ = $(SRC:%.c=build/%.o) $(CXXSRC:%.cpp=build/%.o) $(ASRC:%.S=build/%.o) + +LST = $(ASRC:%.S=build/%.lst) $(CXXSRC:%.cpp=build/%.lst) $(SRC:%.c=build/%.lst) + +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) +ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + +all: applet_files build sizeafter + +build: elf hex + +applet_files: $(TARGET).$(EXT) + test -d applet || mkdir applet + echo '#include "WProgram.h"' > applet/$(TARGET).cpp + cat $(TARGET).$(EXT) >> applet/$(TARGET).cpp + cat $(ARDUINO)/main.cxx >> applet/$(TARGET).cpp + +elf: applet/$(TARGET).elf +hex: applet/$(TARGET).hex +eep: applet/$(TARGET).eep +lss: applet/$(TARGET).lss +sym: applet/$(TARGET).sym + +upload: applet/$(TARGET).hex + stty -F $(AVRDUDE_PORT) hupcl ; sleep 0.1 ; stty -F $(AVRDUDE_PORT) -hupcl + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) + + +HEXSIZE = $(SIZE) --target=$(FORMAT) applet/$(TARGET).hex +ELFSIZE = $(SIZE) applet/$(TARGET).elf +sizebefore: + @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi + +sizeafter: + @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi + + +COFFCONVERT=$(OBJCOPY) --debugging \ +--change-section-address .data-0x800000 \ +--change-section-address .bss-0x800000 \ +--change-section-address .noinit-0x800000 \ +--change-section-address .eeprom-0x810000 + + +coff: applet/$(TARGET).elf + $(COFFCONVERT) -O coff-avr applet/$(TARGET).elf $(TARGET).cof + + +extcoff: $(TARGET).elf + $(COFFCONVERT) -O coff-ext-avr applet/$(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) $< $@ + +.elf.lss: + $(OBJDUMP) -h -S $< > $@ + +.elf.sym: + $(NM) -n $< > $@ + + $(CXX) $(ALL_CXXFLAGS) -o $@ applet/$(TARGET).cpp -L. applet/core.a $(LDFLAGS) + +applet/core.a: $(OBJ) + @for i in $(OBJ); do echo $(AR) rcs applet/core.a $$i; $(AR) rcs applet/core.a $$i; done + + + +build/%.o: %.cpp + mkdir -p $(dir $@) + $(CXX) -c $(ALL_CXXFLAGS) $< -o $@ + +build/%.o: %.c + mkdir -p $(dir $@) + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +build/%.s: %.c + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +.S.o: + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + + +build/%.d: %.c + $(CC) -M $(ALL_CFLAGS) $< | sed "s;$(notdir $*).o:;$*.o $*.d:;" > $@ + +build/%.d: %.cpp + $(CXX) -M $(ALL_CXXFLAGS) $< | sed "s;$(notdir $*).o:;$*.o $*.d:;" > $@ + + +clean: + $(REMOVE) applet/$(TARGET).hex applet/$(TARGET).eep applet/$(TARGET).cof applet/$(TARGET).elf \ + applet/$(TARGET).map applet/$(TARGET).sym applet/$(TARGET).lss applet/core.a \ + $(OBJ) $(LST) $(SRC:%.c=build/%.s) $(SRC:%.c=build/%.d) $(CXXSRC:%.cpp=build/%.s) $(CXXSRC:%.cpp=build/%.d) + +.PHONY: all build elf hex eep lss sym program coff extcoff clean applet_files sizebefore sizeafter + +-include $(SRC:%.c=build/%.d) +-include $(CXXSRC:%.cpp=build/%.d) +-e do_compile: do_build show_size +do_build: applet/$(TARGET).hex +applet/$(TARGET).hex: applet/$(TARGET).elf + +ARDMAKE_BOARD=applet/board + +applet/$(TARGET).elf: applet/$(TARGET).cpp applet/core.a + $(CXX) $(ALL_CXXFLAGS) -Wl,--gc-sections $(LDFLAGS) -L. -Lapplet/ -o $@ $< applet/core.a + @chmod a-x $@ >/dev/null 2>&1 || true + +applet/$(TARGET).cpp: $(TARGET).$(EXT) $(ARDUINO)/main.cxx $(ARDUINO)/WProgram.h $(ARDMAKE_BOARD) + echo '#include "WProgram.h"' >$@ + @echo '#line 1 "$<"' >>$@ + cat $(TARGET).$(EXT) >>$@ + @echo '#line 1 "$(ARDUINO)/main.cxx"' >>$@ + cat $(ARDUINO)/main.cxx >>$@ + +show_size: + @echo + @echo Program size: + @$(HEXSIZE) | awk -v m="$(MAX_SIZE)" '{print;if(NR^1){s=$$4}} \ + END {printf("\n%d/%d bytes (%.1f%% of capacity, %d bytes left)\n\n",\ + s,m,s*100.0/m,m-s);}' + +upload_autoreset: do_autoreset upload unreset + +do_autoreset: + @echo Sending reset to prepare for upload... + ( stty hupcl; sleep 0.1; true ) <$(PORT) 2>/dev/null + @echo + +unreset: + @stty -hupcl <$(PORT) 2>/dev/null || true + +$(OBJ): $(ARDMAKE_BOARD) +$(DEPS): $(ARDMAKE_BOARD) + +$(APPC): applet/%.o: %.c + $(CC) -c $(ALL_CFLAGS) -o $@ $< + +$(APPCXX): applet/%.o: %.cpp + $(CXX) -c $(ALL_CXXFLAGS) -o $@ $< + +$(APPA): applet/%.o: %.S + $(CC) -c $(ALL_ASFLAGS) -o $@ $< + +$(APPC:.o=.d): applet/%.d: %.c + $(CC) -M $(ALL_CFLAGS) $< | sed 's;^[^:]*:;applet/$*.o applet/$*.d:;' >$@ + +$(APPCXX:.o=.d): applet/%.d: %.cpp + $(CXX) -M $(ALL_CXXFLAGS) $< | sed 's;^[^:]*:;applet/$*.o applet/$*.d:;' >$@ + +$(APPA:.o=.d): applet/%.d: %.S + $(CC) -M $(ALL_ASFLAGS) $< | sed 's;^[^:]*:;applet/$*.o applet/$*.d:;' >$@ + +applet/$(TARGET).d: applet/$(TARGET).cpp + +vpath %.c applet/ $(sort $(dir $(OBJC))) +vpath %.cpp applet/ $(sort $(dir $(OBJCXX))) +vpath %.S applet/ $(sort $(dir $(OBJA))) + +include $(DEPS) diff --git a/test/applet/Print.d b/test/applet/Print.d new file mode 100644 index 0000000..2e8b58c --- /dev/null +++ b/test/applet/Print.d @@ -0,0 +1,22 @@ +applet/Print.o applet/Print.d: ardmake/hardware/cores/arduino/Print.cpp \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/string.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/math.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + ardmake/hardware/cores/arduino/binary.h \ + ardmake/hardware/cores/arduino/Print.h \ + ardmake/hardware/cores/arduino/WString.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/ctype.h diff --git a/test/applet/WInterrupts.d b/test/applet/WInterrupts.d new file mode 100644 index 0000000..77437b7 --- /dev/null +++ b/test/applet/WInterrupts.d @@ -0,0 +1,24 @@ +applet/WInterrupts.o applet/WInterrupts.d: ardmake/hardware/cores/arduino/WInterrupts.c \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/pgmspace.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + ardmake/hardware/cores/arduino/WConstants.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + ardmake/hardware/cores/arduino/binary.h \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h diff --git a/test/applet/WMath.d b/test/applet/WMath.d new file mode 100644 index 0000000..6d1c210 --- /dev/null +++ b/test/applet/WMath.d @@ -0,0 +1,3 @@ +applet/WMath.o applet/WMath.d: ardmake/hardware/cores/arduino/WMath.cpp \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h diff --git a/test/applet/board b/test/applet/board new file mode 100644 index 0000000..e438487 --- /dev/null +++ b/test/applet/board @@ -0,0 +1 @@ +uno diff --git a/test/applet/core.a b/test/applet/core.a new file mode 100644 index 0000000..1416012 Binary files /dev/null and b/test/applet/core.a differ diff --git a/test/applet/pins_arduino.d b/test/applet/pins_arduino.d new file mode 100644 index 0000000..9b2299c --- /dev/null +++ b/test/applet/pins_arduino.d @@ -0,0 +1,24 @@ +applet/pins_arduino.o applet/pins_arduino.d: ardmake/hardware/cores/arduino/pins_arduino.c \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + ardmake/hardware/cores/arduino/binary.h \ + ardmake/hardware/cores/arduino/pins_arduino.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/pgmspace.h diff --git a/test/applet/test.cpp b/test/applet/test.cpp new file mode 100644 index 0000000..1400654 --- /dev/null +++ b/test/applet/test.cpp @@ -0,0 +1,827 @@ +#include "WProgram.h" +#line 1 "test.pde" +// 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 CUBE_SIZE 8 + +#define AXIS_X 1 +#define AXIS_Y 2 +#define AXIS_Z 3 + +void setup() +{ + Serial.begin(9600); + delay(1000); + Serial.println("begin"); + + DDRB = 0xFF; + DDRD = 0xFC; + + PORTB = 0; + PORTD &= 0x03; + + + // Reset any PWM configuration that the arduino may have set up automagically! + TCCR2A = 0x00; + TCCR2B = 0x00; + + TCCR2A |= (0x01 << WGM21); // CTC mode. clear counter on TCNT2 == OCR2A + OCR2A = 50; // Interrupt every 25600th cpu cycle (256*100) + TCNT2 = 0x00; // start counting at 0 + TCCR2B |= (0x01 << CS22) | (0x01 << CS21); // Start the clock with a 256 prescaler + + TIMSK2 |= (0x01 << OCIE2A); + +} + +volatile unsigned char cube[8][8]; +volatile unsigned char current_layer = 0; + +ISR (TIMER2_COMPA_vect) +{ + PORTB &= ~0x21; // layer and latch low + char current_layer_ = current_layer; + + //for (char j = 0; j < 8; ++j) { + for (char j = 0; j < 4; ++j) { + unsigned char val = cube[7-j][current_layer_]; + unsigned char val2 = cube[3-j][current_layer_]; + for (char i = 0; i < 8; ++i/*, val >>= 1*/) { + PORTB &= ~0x02; + PORTD = (PORTD & ~0x80) | ((val2 << (7-i)) & 0x80); + //PORTD |= 0x80; + PORTD = (PORTD & ~0x40) | (((val << (7-i)) & 0x80) >> 1); + PORTB |= 0x02; + } + } + + PORTB = (PORTB & ~0x1C) | (current_layer_ << 2); + ++current_layer_; + current_layer = current_layer_ & 0x07; + + PORTB |= 0x21; // layer and latch high +} + +/***************************************************************************** + * ACCESSORS + *****************************************************************************/ + +unsigned char inrange(int x, int y, int z) +{ + if (x >= 0 && x < CUBE_SIZE && y >= 0 && y < CUBE_SIZE && z >= 0 && z < CUBE_SIZE) + { + return 1; + } else + { + // One of the coordinates was outside the cube. + return 0; + } +} + +bool get_led(unsigned char x, unsigned char y, unsigned char z) +{ + /* + assert(x >= 0 && x <= 7); + assert(y >= 0 && y <= 7); + assert(z >= 0 && z <= 7); + */ + + if (inrange(x, y, z)) { + return cube[y][z] & (1 << x); + } + + return false; +} + +void set_led(unsigned char x, unsigned char y, unsigned char z, bool on) +{ + + if (!inrange(x, y, z)) { + return; + } + + /* + assert(x >= 0 && x <= 7); + assert(y >= 0 && y <= 7); + assert(z >= 0 && z <= 7); + */ + + if (on) { + cube[y][z] |= ((unsigned char)1) << x; + } + else { + cube[y][z] &= ~(((unsigned char)1) << x); + } +} + +void clear_led() +{ + for (char z = 0; z < 8; ++z) { + for (char y = 0; y < 8; ++y) { + cube[y][z] = 0; + } + } +} +// Set a single voxel to ON +void setvoxel(int x, int y, int z) +{ + if (inrange(x,y,z)) + cube[y][z] |= (1 << x); +} + +unsigned char getvoxel(int x, int y, int z) +{ + if (inrange(x,y,z)) + { + if (cube[y][z] & (1 << x)) + { + return 0x01; + } else + { + return 0x00; + } + } else + { + return 0x00; + } +} + + +// Set a single voxel to ON +void clrvoxel(int x, int y, int z) +{ + if (inrange(x,y,z)) + cube[y][z] &= ~(1 << x); +} +// In some effect we want to just take bool and write it to a voxel +// this function calls the apropriate voxel manipulation function. +void altervoxel(int x, int y, int z, int state) +{ + if (state == 1) + { + setvoxel(x,y,z); + } else + { + clrvoxel(x,y,z); + } +} + +// Shift the entire contents of the cube along an axis +// This is great for effects where you want to draw something +// on one side of the cube and have it flow towards the other +// side. Like rain flowing down the Z axiz. +void shift (char axis, int direction) +{ + int i, x ,y; + int ii, iii; + int state; + + for (i = 0; i < 8; i++) + { + if (direction == -1) + { + ii = i; + } else + { + ii = (7-i); + } + + + for (x = 0; x < 8; x++) + { + for (y = 0; y < 8; y++) + { + if (direction == -1) + { + iii = ii+1; + } else + { + iii = ii-1; + } + + if (axis == AXIS_Z) + { + state = getvoxel(x,y,iii); + altervoxel(x,y,ii,state); + } + + if (axis == AXIS_Y) + { + state = getvoxel(x,iii,y); + altervoxel(x,ii,y,state); + } + + if (axis == AXIS_X) + { + state = getvoxel(iii,y,x); + altervoxel(ii,y,x,state); + } + } + } + } + + if (direction == -1) + { + i = 7; + } else + { + i = 0; + } + + for (x = 0; x < 8; x++) + { + for (y = 0; y < 8; y++) + { + if (axis == AXIS_Z) + clrvoxel(x,y,i); + + if (axis == AXIS_Y) + clrvoxel(x,i,y); + + if (axis == AXIS_X) + clrvoxel(i,y,x); + } + } +} + + +// Delay loop. +// This is not calibrated to milliseconds, +// but we had allready made to many effects using this +// calibration when we figured it might be a good idea +// to calibrate it. +void delay_ms(uint16_t x) +{ + uint8_t y, z; + for ( ; x > 0 ; x--){ + for ( y = 0 ; y < 90 ; y++){ + for ( z = 0 ; z < 6 ; z++){ + asm volatile ("nop"); + } + } + } +} + +void effect_rain (int iterations) +{ + int i, ii; + int rnd_x; + int rnd_y; + int rnd_num; + + for (ii=0;ii? + 0x32,0x49,0x79,0x41,0x3e,0x7e,0x11,0x11,0x11,0x7e, // @A + 0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22, // BC + 0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41, // DE + 0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a, // FG + 0x7f,0x08,0x08,0x08,0x7f,0x00,0x41,0x7f,0x41,0x00, // HI + 0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41, // JK + 0x7f,0x40,0x40,0x40,0x40,0x7f,0x02,0x0c,0x02,0x7f, // LM + 0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, // NO + 0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e, // PQ + 0x7f,0x09,0x19,0x29,0x46,0x46,0x49,0x49,0x49,0x31, // RS + 0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f, // TU + 0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x38,0x40,0x3f, // VW + 0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07, // XY + 0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00, // Z[ + 0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00, // \] + 0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40, // ^_ + 0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78, // `a + 0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20, // bc + 0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18, // de + 0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e, // fg + 0x7f,0x08,0x04,0x04,0x78,0x00,0x44,0x7d,0x40,0x00, // hi + 0x20,0x40,0x44,0x3d,0x00,0x7f,0x10,0x28,0x44,0x00, // jk + 0x00,0x41,0x7f,0x40,0x00,0x7c,0x04,0x18,0x04,0x78, // lm + 0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, // no + 0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c, // pq + 0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20, // rs + 0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c, // tu + 0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x30,0x40,0x3c, // vw + 0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c, // xy + 0x44,0x64,0x54,0x4c,0x44 // z +}; + + +volatile const unsigned char bitmaps[6][8] /*EEMEM*/ = { + {0xc3,0xc3,0x00,0x18,0x18,0x81,0xff,0x7e}, // smiley 3 small + {0x3c,0x42,0x81,0x81,0xc3,0x24,0xa5,0xe7}, // Omega + {0x00,0x04,0x06,0xff,0xff,0x06,0x04,0x00}, // Arrow + {0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81}, // X + {0xBD,0xA1,0xA1,0xB9,0xA1,0xA1,0xA1,0x00}, // ifi + {0xEF,0x48,0x4B,0x49,0x4F,0x00,0x00,0x00} // TG +}; + +const unsigned char paths[44] /*PROGMEM */= {0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x67,0x57,0x47,0x37,0x27,0x17, +0x04,0x03,0x12,0x21,0x30,0x40,0x51,0x62,0x73,0x74,0x65,0x56,0x47,0x37,0x26,0x15}; // circle, len 16, offset 28 + +/* +void font_getpath (unsigned char path, unsigned char *destination, int length) +{ + int i; + int offset = 0; + + if (path == 1) + offset=28; + + for (i = 0; i < length; i++) + destination[i] = pgm_read_byte(&paths[i+offset]); +} +*/ +// Fill a value into all 64 byts of the cube buffer +// Mostly used for clearing. fill(0x00) +// or setting all on. fill(0xff) +void fill (unsigned char pattern) +{ + int z; + int y; + for (z=0;z<8;z++) + { + for (y=0;y<8;y++) + { + cube[z][y] = pattern; + } + } +} + + + +void font_getchar (char chr, unsigned char dst[5]) +{ + //uint8_t i; + unsigned char i; + chr -= 32; // our bitmap font starts at ascii char 32. + + for (i = 0; i < 5; i++) + //dst[i] = (unsigned char)eeprom_read_byte((uint8_t*)&font[(chr*5)+i]); + dst[i] = font[(chr*5)+i]; +} +void effect_stringfly2(const char* str) +{ + //int x,y,i; + unsigned char x,y,i; + unsigned char chr[5]; + const int DELAY = 80; + + clear_led(); + + while (*str) + { + font_getchar(*str++, chr); + + // Put a character on the back of the cube + for (x = 0; x < 5; x++) + { + for (y = 0; y < 8; y++) + { + if ((chr[x] & (0x80>>y))) + { + //setvoxel(7,x+2,y); + //set_led(7,x+2,y); + set_led(x+2, 0, y, true); + } + } + } + + //led_change = true; + //SDL_Delay(1000); + //clear_led(); + //continue; + + // Shift the entire contents of the cube forward by 6 steps + // before placing the next character + for (i = 0; i<6; i++) + { + //delay_ms(1000); + //SDL_Delay(1000); + delay(DELAY); + shift(AXIS_Y,1); + //shift(1,-1); + //set_plane(1, 7, false); + } + } + + //return; + // Shift the last character out of the cube. + for (i = 0; i<8; i++) + { + delay(DELAY); + //delay_ms(1000); + shift(AXIS_Y,1); + //shift(1,-1); + } +} + +// Sets all voxels along a X/Y plane at a given point +// on axis Z +void setplane_z (int z) +{ + int i; + if (z>=0 && z<8) + { + for (i=0;i<8;i++) + cube[z][i] = 0xff; + } +} + +// Clears voxels in the same manner as above +void clrplane_z (int z) +{ + int i; + if (z>=0 && z<8) + { + for (i=0;i<8;i++) + cube[z][i] = 0x00; + } +} + +void setplane_x (int x) +{ + int z; + int y; + if (x>=0 && x<8) + { + for (z=0;z<8;z++) + { + for (y=0;y<8;y++) + { + cube[z][y] |= (1 << x); + } + } + } +} + +void clrplane_x (int x) +{ + int z; + int y; + if (x>=0 && x<8) + { + for (z=0;z<8;z++) + { + for (y=0;y<8;y++) + { + cube[z][y] &= ~(1 << x); + } + } + } +} + +void setplane_y (int y) +{ + int z; + if (y>=0 && y<8) + { + for (z=0;z<8;z++) + cube[z][y] = 0xff; + } +} + +void clrplane_y (int y) +{ + int z; + if (y>=0 && y<8) + { + for (z=0;z<8;z++) + cube[z][y] = 0x00; + } +} + + +void setplane (char axis, unsigned char i) +{ + switch (axis) + { + case AXIS_X: + setplane_x(i); + break; + + case AXIS_Y: + setplane_y(i); + break; + + case AXIS_Z: + setplane_z(i); + break; + } +} + + +// Draw a plane on one axis and send it back and forth once. +void effect_planboing (int plane, int speed) +{ + int i; + for (i=0;i<8;i++) + { + fill(0x00); + setplane(plane, i); + delay_ms(speed); + } + + for (i=7;i>=0;i--) + { + fill(0x00); + setplane(plane,i); + delay_ms(speed); + } +} + +void effect_blinky2() +{ + int i,r; + fill(0x00); + + for (r=0;r<2;r++) + { + i = 750; + while (i>0) + { + fill(0x00); + delay(i/5); + + fill(0xff); + delay(20); + + i = i - (15+(1000/(i/10))); + } + + delay(500); + + i = 750; + while (i>0) + { + fill(0x00); + delay((751-i)/5); + + fill(0xff); + delay(20); + + i = i - (15+(1000/(i/10))); + } + } + +} +// Set or clear exactly 512 voxels in a random order. +void effect_random_filler (int delay, int state) +{ + int x,y,z; + int loop = 0; + + + if (state == 1) + { + fill(0x00); + } else + { + fill(0xff); + } + + while (loop<511) + { + x = rand()%8; + y = rand()%8; + z = rand()%8; + + if ((state == 0 && getvoxel(x,y,z) == 0x01) || (state == 1 && getvoxel(x,y,z) == 0x00)) + { + altervoxel(x,y,z,state); + delay_ms(delay); + loop++; + } + } +} + +void draw_positions_axis (char axis, unsigned char positions[64], int invert) +{ + int x, y, p; + + fill(0x00); + + for (x=0; x<8; x++) + { + for (y=0; y<8; y++) + { + if (invert) + { + p = (7-positions[(x*8)+y]); + } else + { + p = positions[(x*8)+y]; + } + + if (axis == AXIS_Z) + setvoxel(x,y,p); + + if (axis == AXIS_Y) + setvoxel(x,p,y); + + if (axis == AXIS_X) + setvoxel(p,y,x); + } + } + +} + + + +void effect_boxside_randsend_parallel (char axis, int origin, int delay, int mode) +{ + int i; + int done; + unsigned char cubepos[64]; + unsigned char pos[64]; + int notdone = 1; + int notdone2 = 1; + int sent = 0; + + for (i=0;i<64;i++) + { + pos[i] = 0; + } + + while (notdone) + { + if (mode == 1) + { + notdone2 = 1; + while (notdone2 && sent<64) + { + i = rand()%64; + if (pos[i] == 0) + { + sent++; + pos[i] += 1; + notdone2 = 0; + } + } + } else if (mode == 2) + { + if (sent<64) + { + pos[sent] += 1; + sent++; + } + } + + done = 0; + for (i=0;i<64;i++) + { + if (pos[i] > 0 && pos[i] <7) + { + pos[i] += 1; + } + + if (pos[i] == 7) + done++; + } + + if (done == 64) + notdone = 0; + + for (i=0;i<64;i++) + { + if (origin == 0) + { + cubepos[i] = pos[i]; + } else + { + cubepos[i] = (7-pos[i]); + } + } + + + delay_ms(delay); + draw_positions_axis(axis,cubepos,0); + + } + +} + + + + +/***************************************************************************** + * LOOP TEST + *****************************************************************************/ + +void loop() +{ + //for (char i = 0; i < 8; ++i) { + //PORTB = (PORTB & ~0x1C) | ((i & 0x07) << 2); + //display(i); + //delay(2); + + //Serial.println(layer, DEC); + //delay(1000); + //} + clear_led(); + //delay_ms(1000); + delay(1000); + //return; + for (char z = 0; z < 8; ++z) { + for (char y = 0; y < 8; ++y) { + for (char x = 0; x < 8; ++x) { + set_led(x, y, z, true); + delay(5); + delay(100); + //delay(500); + //delay(1000); + //delay_ms(1000); + } + } + } + delay(1000); + //delay_ms(1000); + clear_led(); + /* effect_stringfly2("test de texte - c'est trop super genial et tout " + "yeahhh!!!!!"); + */ + effect_planboing(AXIS_Z, 700); + effect_planboing(AXIS_Y, 700); + effect_planboing(AXIS_X, 700); + + effect_blinky2(); + + effect_random_filler(75,1); + effect_random_filler(75,0); + + for (char i = 0; i < 10; ++i) { + effect_boxside_randsend_parallel (AXIS_X, 0, 950, 2); + effect_boxside_randsend_parallel (AXIS_X, 1, 950, 2); + effect_boxside_randsend_parallel (AXIS_Y, 0, 950, 2); + effect_boxside_randsend_parallel (AXIS_Y, 1, 950, 2); + effect_boxside_randsend_parallel (AXIS_Z, 0, 950, 2); + effect_boxside_randsend_parallel (AXIS_Z, 1, 950, 2); + } + + + //effect_rain(1000) +} +#line 1 "ardmake/hardware/cores/arduino/main.cxx" +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/test/applet/test.d b/test/applet/test.d new file mode 100644 index 0000000..e69de29 diff --git a/test/applet/test.elf b/test/applet/test.elf new file mode 100644 index 0000000..0af1415 Binary files /dev/null and b/test/applet/test.elf differ diff --git a/test/applet/test.hex b/test/applet/test.hex new file mode 100644 index 0000000..d67c46b --- /dev/null +++ b/test/applet/test.hex @@ -0,0 +1,315 @@ +:100000000C9435000C945D000C945D000C945D0024 +:100010000C945D000C945D000C945D000C945F00EA +:100020000C945D000C945D000C945D000C945D00DC +:100030000C945D000C945D000C945D000C945D00CC +:100040000C9463050C945D000C9432060C945D00D6 +:100050000C945D000C945D000C945D000C945D00AC +:100060000C945D000C945D002E0711241FBECFEF91 +:10007000D8E0DEBFCDBF11E0A0E0B1E0E8E7F3E1FA +:1000800002C005900D92AC31B107D9F711E0ACE197 +:10009000B1E001C01D92AD3FB107E1F710E0CAE643 +:1000A000D0E004C02297FE010E943609C836D1076D +:1000B000C9F70E945C050C94BA090C9400001F92C9 +:1000C0000F920FB60F921124EF92FF920F931F938E +:1000D0002F933F934F935F936F937F938F939F9350 +:1000E000AF93BF93CF93DF93EF93FF9385B18E7D53 +:1000F00085B950915C01A7E0B0E0C52FDD27C7FDB1 +:10010000D095FD0173E0EE0FFF1F7A95E1F7EC0F3C +:10011000FD1FE45EFE4F9081FD01349763E0EE0F1A +:10012000FF1F6A95E1F7EC0FFD1FE45EFE4F808133 +:1001300067E070E0082F10E0E92FF0E029984BB15C +:10014000C801062E02C0880F991F0A94E2F7807832 +:100150004F77842B8BB98BB17F01062E02C0EE0C3A +:10016000FF1C0A94E2F797012078307035952795A7 +:100170008F7B822B8BB9299A615070408FEF6F3F34 +:100180007807E1F61197A330B10509F0BACF85B130 +:10019000CC0FDD1FCC0FDD1F837E8C2B85B95F5FFD +:1001A000577050935C0185B1816285B9FF91EF91E1 +:1001B000DF91CF91BF91AF919F918F917F916F917F +:1001C0005F914F913F912F911F910F91FF90EF9071 +:1001D0000F900FBE0F901F901895089778F477FD39 +:1001E0000DC06830710554F457FD08C090E04830E8 +:1001F00051050CF091E081E0982701C090E0892F33 +:100200000895EF92FF920F931F93CF93DF93F82EF1 +:10021000E22E062F10E0C42FD0E090E0B801AE012E +:100220000E94ED00882339F1B801F3E0660F771FD3 +:10023000FA95E1F7EE2079F0FB01EC0FFD1FE45E8B +:10024000FE4F208181E090E002C0880F991FFA9450 +:10025000E2F7282B0FC0FB01EC0FFD1FE45EFE4F01 +:10026000208181E090E002C0880F991FFA94E2F7A4 +:10027000809528232083DF91CF911F910F91FF90CC +:10028000EF90089520E030E014C0FC01A3E0EE0FF1 +:10029000FF1FAA95E1F7E20FF31FE45EFE4F108205 +:1002A00001968830910589F72F5F3F4F283031053F +:1002B00019F080E090E0E9CF0895FF920F931F932B +:1002C000CF93DF93F82EEB018A010E94ED00882383 +:1002D000A1F0FE01B3E0EE0FFF1FBA95E1F7E00FCA +:1002E000F11FE45EFE4F208181E090E002C0880FA4 +:1002F000991FFA94E2F7282B2083DF91CF911F9169 +:100300000F91FF900895FF920F931F93CF93DF9368 +:10031000F82EEB018A010E94ED00882389F083E02A +:10032000CC0FDD1F8A95E1F7C00FD11FC45EDE4FF1 +:10033000888190E002C095958795FA94E2F78170E4 +:10034000DF91CF911F910F91FF900895FF920F932E +:100350001F93CF93DF93F82EEB018A010E94ED00EB +:100360008823A9F0FE0193E0EE0FFF1F9A95E1F7B5 +:10037000E00FF11FE45EFE4F208181E090E002C0BB +:10038000880F991FFA94E2F7809528232083DF9144 +:10039000CF911F910F91FF9008952130310519F4ED +:1003A0000E945D0108950E94A60108950BC020E0FF +:1003B0000000000000000000000000002F5F2A3550 +:1003C000B9F70197009799F7089540E050E010C001 +:1003D000FB01E20FF31FE45EFE4F80832F5F3F4F70 +:1003E00028303105A9F74F5F5F4F4830510549F07C +:1003F00020E030E0BA01E3E0660F771FEA95E1F70D +:10040000E7CF08959C018830910530F581E090E0B8 +:1004100002C0880F991F2A95E2F7982F40E050E01C +:1004200012C0FB01E20FF31FE45EFE4F8081892BB7 +:1004300080832F5F3F4F2830310599F74F5F5F4F23 +:100440004830510549F020E030E0BA01B3E0660FD2 +:10045000771FBA95E1F7E5CF0895823049F08330F0 +:10046000F9F08130A1F5862F90E00E9402020895F4 +:1004700070E06830710558F520E030E08FEFF90149 +:10048000A3E0EE0FFF1FAA95E1F7E60FF71FE45E6A +:10049000FE4F80832F5F3F4F2830310581F708954D +:1004A00070E06830710598F420E030E0E3E0660F1A +:1004B000771FEA95E1F78FEFFB01E20FF31FE45E90 +:1004C000FE4F80832F5F3F4F28303105A9F70895F5 +:1004D000EF92FF920F931F93E82EF62E072F10E056 +:1004E00080E00E94E5018E2D612F0E942D028F2D4C +:1004F000902F0E94D6011F5F183091F717E080E01F +:100500000E94E5018E2D612F0E942D028F2D902FCC +:100510000E94D601115098F71F910F91FF90EF9014 +:1005200008954F925F926F927F929F92AF92BF9287 +:10053000CF92DF92EF92FF920F931F93CF93DF93AF +:10054000982E162F072F3A0180E00E94E501212FF7 +:10055000302FC9016C01C0E0D0E0B7E04B2E512C28 +:1005600035C06114710431F0F5018081A201481B8E +:10057000510904C0F7018081482F50E0F3E09F1635 +:1005800019F4CE01B8010DC082E0981621F4CE0115 +:10059000BA01A80106C091E0991629F4CA01B80170 +:1005A000AE010E945D010F5F1F4F0894A11CB11C9A +:1005B0000894E11CF11C0830110599F62196E8E039 +:1005C000F0E0CE0EDF1EC830D10529F056017601CD +:1005D00000E010E0C6CFDF91CF911F910F91FF9007 +:1005E000EF90DF90CF90BF90AF909F907F906F90F3 +:1005F0005F904F900895EF92FF920F931F93CF93C8 +:10060000DF9380E00E94E50100E010E08FEEE82E2D +:1006100082E0F82E5DC080E00E94E501CE0165E039 +:1006200070E00E949908882777FD8095982F0E9496 +:10063000D1058FEF0E94E50164E170E080E090E079 +:100640000E94D105CE0166EF7FEF0E94990888EEE7 +:1006500093E00E9499086F507040C60FD71F1C1678 +:100660001D06CCF264EF71E080E090E00E94D105BD +:10067000CEEED2E080E00E94E501C7018C1B9D0B0D +:1006800065E070E00E949908882777FD8095982F93 +:100690000E94D1058FEF0E94E50164E170E080E0E7 +:1006A00090E00E94D105CE0166EF7FEF0E9499088D +:1006B00088EE93E00E9499086F507040C60FD71FD4 +:1006C0001C161D06BCF20F5F1F4F0230110519F0FA +:1006D000CEEED2E0A0CFDF91CF911F910F91FF908E +:1006E000EF9008952F923F924F925F926F927F9278 +:1006F0008F929F92AF92BF92CF92DF92EF92FF9232 +:100700000F931F93DF93CF93CDB7DEB7C158D0407F +:100710000FB6F894DEBF0FBECDBFCF57DF4F888333 +:10072000C158D0402B013A01490141E4A42EB12C1B +:10073000AC0EBD1EF50131E8C32ED12CCC0EDD1E52 +:100740001192EC15FD05E1F700E010E01E010894A0 +:10075000211C311C81E088169104C9F414C00E9448 +:100760008B0960E470E00E949908E1E4F0E0EC0F8E +:10077000FD1FE80FF91F8081882389F70F5F1F4F46 +:1007800091E0908316C0003411054CF312C082E052 +:100790008816910471F4003411055CF4E1E4F0E092 +:1007A000EC0FFD1FE00FF11F80818F5F80830F5FD3 +:1007B0001F4FF501EE24FF249081892F8150863050 +:1007C00010F49F5F90838081873019F40894E11CB6 +:1007D000F11C3196EC15FD0579F7D101F501808109 +:1007E0004114510419F097E0981B892F8C9331968E +:1007F0001196EC15FD0599F7C3010E94D601CF575C +:10080000DF4F8881C158D040B10140E050E00E94E4 +:10081000910280E4E816F10409F09CCFCF57DF4F36 +:100820000FB6F894DEBF0FBECDBFCF91DF911F9101 +:100830000F91FF90EF90DF90CF90BF90AF909F907F +:100840008F907F906F905F904F903F902F90089582 +:100850008F929F92AF92BF92CF92DF92EF92FF92D0 +:100860000F931F93CF93DF934C018B016130710580 +:1008700011F480E001C08FEF0E94E501C0E0D0E0FC +:100880000E948B0968E070E00E949908B82EA92E9A +:100890000E948B0968E070E00E949908D82EC92E4A +:1008A0000E948B0968E070E00E949908F82EE92EFA +:1008B0000115110559F48B2D9A2D6D2D7C2D4F2D81 +:1008C0005E2D0E9483018130D9F60DC001301105E3 +:1008D000B9F68B2D9A2D6D2D7C2D4F2D5E2D0E94FE +:1008E0008301882369F68B2D9A2D6D2D7C2D4F2D3C +:1008F0005E2D98010E94CD01C4010E94D60121966F +:1009000081E0CF3FD80709F0BBCFDF91CF911F9196 +:100910000F91FF90EF90DF90CF90BF90AF909F909E +:100920008F900895FF920F931F930E94420168EEEB +:1009300073E080E090E00E94D105FF241EC0812F6B +:10094000602F4F2D21E00E94010165E070E080E002 +:1009500090E00E94D10564E670E080E090E00E94A3 +:10096000D1051F5F183059F70F5F083011F010E004 +:10097000E6CFF39488E0F81611F000E0F8CF68EEC7 +:1009800073E080E090E00E94D1050E94420183E084 +:1009900090E06CEB72E00E94680282E090E06CEB09 +:1009A00072E00E94680281E090E06CEB72E00E94CD +:1009B00068020E94FB028BE490E061E070E00E941C +:1009C00028048BE490E060E070E00E94280410E0CE +:1009D00081E060E070E046EB53E022E030E00E940E +:1009E000720381E061E070E046EB53E022E030E02A +:1009F0000E94720382E060E070E046EB53E022E088 +:100A000030E00E94720382E061E070E046EB53E068 +:100A100022E030E00E94720383E060E070E046EB89 +:100A200053E022E030E00E94720383E061E070E076 +:100A300046EB53E022E030E00E9472031F5F1A3061 +:100A400039F61F910F91FF9008950F931F930AEEAF +:100A500011E0C80140E855E260E070E00E946306E2 +:100A600068EE73E080E090E00E94D105C80160E08C +:100A700071E00E948E088FEF84B98CEF8AB915B8A7 +:100A80008BB183708BB9E0EBF0E01082A1EBB0E0AA +:100A90001C9280818260808382E38093B3001092F5 +:100AA000B2008C9186608C93E0E7F0E080818260F8 +:100AB00080831F910F9108950E94F7050E942505DC +:100AC0000E949204FDCF1F920F920FB60F92112435 +:100AD0002F933F938F939F93AF93BF938091610127 +:100AE00090916201A0916301B09164013091650120 +:100AF0000196A11DB11D232F2D5F2D3720F02D57FD +:100B00000196A11DB11D2093650180936101909311 +:100B10006201A0936301B093640180915D019091A3 +:100B20005E01A0915F01B09160010196A11DB11D10 +:100B300080935D0190935E01A0935F01B09360018B +:100B4000BF91AF919F918F913F912F910F900FBEC9 +:100B50000F901F9018959FB7F89420915D013091E8 +:100B60005E0140915F015091600186B5A89B06C06F +:100B70008F3F21F02F5F3F4F4F4F5F4F9FBF542F4D +:100B8000432F322F2227280F311D411D511D82E096 +:100B9000220F331F441F551F8A95D1F7B901CA018F +:100BA0000895EF92FF920F931F93CF93DF937B01F2 +:100BB0008C010E94AB05EB010EC00E94AB056C1BC3 +:100BC0007D0B685E7340C8F30894E108F1080109E1 +:100BD0001109C851DC4FE114F1040105110569F751 +:100BE000DF91CF911F910F91FF90EF90089578942E +:100BF00084B5826084BD84B5816084BD85B5826022 +:100C000085BD85B5816085BDEEE6F0E080818160BF +:100C10008083E1E8F0E010828081826080838081BF +:100C200081608083E0E8F0E0808181608083E1EB97 +:100C3000F0E0808184608083E0EBF0E0808181607F +:100C40008083EAE7F0E08081846080838081826035 +:100C5000808380818160808380818068808310921E +:100C6000C10008951F920F920FB60F9211242F9377 +:100C70003F934F938F939F93EF93FF934091C600C1 +:100C8000E091E601F091E70131969F012F773070F6 +:100C900031978091E8019091E9012817390739F0DF +:100CA000EA59FE4F40833093E7012093E601FF911C +:100CB000EF919F918F914F913F912F910F900FBE88 +:100CC0000F901F901895CF93DF93EC019A01AB0121 +:100CD000E885F985203081EE380780E0480780E01C +:100CE000580709F449C081E090E00A8802C0880FE3 +:100CF000991F0A94E2F7808360E079E08DE390E049 +:100D00000E94CE082150304040405040CA01B901F5 +:100D100022E030E040E050E00E94CE08EC81FD810E +:100D20003083EE81FF812083EA85FB85208141E0CD +:100D300050E0CA010E8402C0880F991F0A94E2F79E +:100D4000282B2083EA85FB852081CA010F8402C0FD +:100D5000880F991F0A94E2F7282B2083EA85FB85E8 +:100D60008081088802C0440F551F0A94E2F7842B43 +:100D70008083DF91CF910895108220E130E0CECFC3 +:100D8000DC011296ED91FC911397E058FF4F2191F1 +:100D9000319180819181281B390B2F773070C901E7 +:100DA0000895DC011296ED91FC911397EE57FF4FD9 +:100DB0002081318192918291E058F040821793070F +:100DC00019F42FEF3FEF05C0E20FF31F8081282FAA +:100DD00030E0C9010895DC011296ED91FC91139762 +:100DE000DF01AE57BF4F2D913C911197E058FF4F57 +:100DF00080819181E058F0408217930719F42FEF1A +:100E00003FEF0BC0E20FF31F80812F5F3F4F2F7723 +:100E100030702D933C93282F30E0C9010895DC01F8 +:100E20001296ED91FC911397EE57FF4F80819181BF +:100E3000929382930895FC01A085B18521898C91BC +:100E400090E0022E02C0959587950A94E2F780FF04 +:100E5000F6CF0484F585E02D608308958EE091E05F +:100E60009093EB018093EA0186E691E09093ED0187 +:100E70008093EC0185EC90E09093EF018093EE017C +:100E800084EC90E09093F1018093F00180EC90E08D +:100E90009093F3018093F20181EC90E09093F5013F +:100EA0008093F40186EC90E09093F7018093F60133 +:100EB00084E08093F80183E08093F90187E08093D8 +:100EC000FA0185E08093FB0181E08093FC010895A5 +:100ED0000F931F93CF93DF938C01EB0109C02196F1 +:100EE000D801ED91FC910190F081E02DC8010995A8 +:100EF00068816623A1F7DF91CF911F910F9108952B +:100F0000EF92FF920F931F93CF93DF938C017B019E +:100F1000EA010CC0D7016D917D01D801ED91FC91E2 +:100F20000190F081E02DC80109952197209791F754 +:100F3000DF91CF911F910F91FF90EF900895DC0109 +:100F4000ED91FC910280F381E02D099508952F9297 +:100F50003F924F925F926F927F928F929F92AF9249 +:100F6000BF92CF92DF92EF92FF920F931F93DF9386 +:100F7000CF93CDB7DEB7A0970FB6F894DEBF0FBE04 +:100F8000CDBF1C016A017B01411551056105710549 +:100F900049F440E350E060E070E020E030E00E947F +:100FA000410856C0882499245401422E55246624B1 +:100FB000772401E010E00C0F1D1F080D191DC7015B +:100FC000B601A30192010E94AC08F8016083089465 +:100FD000811C911CA11CB11CC701B601A301920187 +:100FE0000E94AC08C901DA016C017D01C114D10471 +:100FF000E104F104F1F681E0E82EF12CEC0EFD1E87 +:10100000E80CF91C3E010894611C711CD501C40157 +:101010000197A109B1096C01C818D90816C0F601D9 +:10102000EE0DFF1D40814A3010F4405D01C0495C67 +:10103000552747FD5095652F752FC10120E030E001 +:101040000E9441080894E108F1086E147F0439F702 +:10105000A0960FB6F894DEBF0FBECDBFCF91DF9143 +:101060001F910F91FF90EF90DF90CF90BF90AF90C6 +:101070009F908F907F906F905F904F903F902F90B8 +:101080000895EF92FF920F931F93CF93DF93EC019C +:101090007A018B012115310541F4E881F981019034 +:1010A000F081E02D642F09951BC02A303105B1F481 +:1010B00077FF10C04DE250E060E070E020E030E0EB +:1010C0000E94410810950095F094E094E11CF11CF9 +:1010D000011D111DCE01B801A7012AE00E94A7073A +:1010E000DF91CF911F910F91FF90EF9008950F9393 +:1010F0001F938C014DE050E060E070E020E030E0B4 +:101100000E944108C8014AE050E060E070E020E041 +:1011100030E00E9441081F910F9108950F931F9393 +:101120008C010E949F07C8010E9477081F910F91B0 +:10113000089597FB092E07260AD077FD04D049D0E1 +:1011400006D000201AF4709561957F4F0895F6F748 +:10115000909581959F4F0895A1E21A2EAA1BBB1B63 +:10116000FD010DC0AA1FBB1FEE1FFF1FA217B30773 +:10117000E407F50720F0A21BB30BE40BF50B661F89 +:10118000771F881F991F1A9469F76095709580954D +:1011900090959B01AC01BD01CF01089597FB092EED +:1011A00005260ED057FD04D0D7DF0AD0001C38F436 +:1011B00050954095309521953F4F4F4F5F4F089583 +:1011C000F6F790958095709561957F4F8F4F9F4F63 +:1011D0000895AA1BBB1B51E107C0AA1FBB1FA6177E +:1011E000B70710F0A61BB70B881F991F5A95A9F7D0 +:1011F00080959095BC01CD0108952F923F924F921A +:101200005F926F927F928F929F92AF92BF92CF9296 +:10121000DF92EF92FF920F931F93CF93DF93CDB79F +:10122000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF17 +:1012300009942A88398848885F846E847D848C84E8 +:101240009B84AA84B984C884DF80EE80FD800C81F1 +:101250001B81AA81B981CE0FD11D0FB6F894DEBFD4 +:101260000FBECDBFED010895EE0FFF1F0590F49165 +:10127000E02D0994A0E0B0E0E0E4F9E00C94050969 +:10128000EC01A880B980CA80DB80A114B104C1043C +:10129000D10441F484E2A82E89EDB82E8BE5C82E46 +:1012A00087E0D82EC601B5012DE133EF41E050E0D3 +:1012B0000E94CE0827EA31E440E050E00E949B09FA +:1012C0007B018C01C601B5012DE133EF41E050E017 +:1012D0000E94CE08CA01B9012CEE34EF4FEF5FEF48 +:1012E0000E949B096E0D7F1D801F911F97FF04C0F8 +:1012F0006150704080409048688379838A839B83E3 +:101300009B013F77C901CDB7DEB7EAE00C94210914 +:101310000E943A09089586E091E00E943A090895F2 +:10132000A0E0B0E08093060190930701A09308012C +:10133000B09309010895629FD001739FF001829FCD +:10134000E00DF11D649FE00DF11D929FF00D839F54 +:10135000F00D749FF00D659FF00D9927729FB00DF1 +:10136000E11DF91F639FB00DE11DF91FBD01CF0104 +:0813700011240895F894FFCF49 +:10137800626567696E0001000000000000001B073D +:0C13880068078007C006EB06D1060F07BF +:00000001FF diff --git a/test/applet/wiring.d b/test/applet/wiring.d new file mode 100644 index 0000000..8983a5e --- /dev/null +++ b/test/applet/wiring.d @@ -0,0 +1,22 @@ +applet/wiring.o applet/wiring.d: ardmake/hardware/cores/arduino/wiring.c \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + ardmake/hardware/cores/arduino/binary.h diff --git a/test/applet/wiring_analog.d b/test/applet/wiring_analog.d new file mode 100644 index 0000000..098a29c --- /dev/null +++ b/test/applet/wiring_analog.d @@ -0,0 +1,24 @@ +applet/wiring_analog.o applet/wiring_analog.d: ardmake/hardware/cores/arduino/wiring_analog.c \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + ardmake/hardware/cores/arduino/binary.h \ + ardmake/hardware/cores/arduino/pins_arduino.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/pgmspace.h diff --git a/test/applet/wiring_digital.d b/test/applet/wiring_digital.d new file mode 100644 index 0000000..a29fcb4 --- /dev/null +++ b/test/applet/wiring_digital.d @@ -0,0 +1,24 @@ +applet/wiring_digital.o applet/wiring_digital.d: ardmake/hardware/cores/arduino/wiring_digital.c \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + ardmake/hardware/cores/arduino/binary.h \ + ardmake/hardware/cores/arduino/pins_arduino.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/pgmspace.h diff --git a/test/applet/wiring_pulse.d b/test/applet/wiring_pulse.d new file mode 100644 index 0000000..e52f4a7 --- /dev/null +++ b/test/applet/wiring_pulse.d @@ -0,0 +1,24 @@ +applet/wiring_pulse.o applet/wiring_pulse.d: ardmake/hardware/cores/arduino/wiring_pulse.c \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + ardmake/hardware/cores/arduino/binary.h \ + ardmake/hardware/cores/arduino/pins_arduino.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/pgmspace.h diff --git a/test/applet/wiring_shift.d b/test/applet/wiring_shift.d new file mode 100644 index 0000000..aefc3d3 --- /dev/null +++ b/test/applet/wiring_shift.d @@ -0,0 +1,22 @@ +applet/wiring_shift.o applet/wiring_shift.d: ardmake/hardware/cores/arduino/wiring_shift.c \ + ardmake/hardware/cores/arduino/wiring_private.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/io.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/sfr_defs.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/inttypes.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdint.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/iom328p.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/portpins.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/common.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/version.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/fuse.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/lock.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/interrupt.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/avr/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/util/delay_basic.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdio.h \ + /usr/lib/gcc/avr/4.3.5/include/stdarg.h \ + /usr/lib/gcc/avr/4.3.5/include/stddef.h \ + ardmake/hardware/cores/arduino/wiring.h \ + /usr/lib/gcc/avr/4.3.5/../../../avr/include/stdlib.h \ + ardmake/hardware/cores/arduino/binary.h -- cgit v1.2.3