Project

General

Profile

Revision 1538

Added by John Sexton over 14 years ago

Copying over files originally used to test net BOM IR vector calculations. They will now be used to try tracking the location of one robot in 2D
space.

View differences:

trunk/code/projects/bom_tracker/vectorTest.c
1
#include <stdint.h>
2
#include <dragonfly_lib.h>
3
#include <wl_basic.h>
4
#include <stdlib.h>
5

  
6
int main (void) {
7

  
8
	Vector v;
9
	int i;
10
	int bomVals[16];
11

  
12
	dragonfly_init(ALL_ON);
13
	xbee_init();
14
	encoders_init();
15

  
16
	orbs_set_color(BLUE, GREEN);
17
	delay_ms(1000);
18
	orbs_set_color(GREEN, BLUE);
19
	delay_ms(1000);
20
	orbs_set_color(RED, RED);
21

  
22
	while (1) {
23

  
24
		bom_refresh(BOM_ALL);
25
		for (i = 0; i < 16; i++) {
26
			bomVals[i] = bom_get(i);
27
		}
28

  
29
		bom_print_usb(bomVals);
30

  
31
		bom_get_norm_vector(&v, bomVals);
32

  
33
		usb_puts("x: ");	
34
		usb_puti(v.x);
35
		usb_puts("\ty: ");
36
		usb_puti(v.y);
37
		usb_puts("\n");
38

  
39
		delay_ms(50);
40

  
41
	}
42

  
43
	while(1);
44

  
45
}
trunk/code/projects/bom_tracker/Makefile
1
########Update This Section########
2
#
3
#
4

  
5
# Relative path to the root directory (containing lib directory)
6
ifndef COLONYROOT
7
COLONYROOT = ../../..
8
endif
9

  
10
# Target file name (without extension).
11
TARGET = push_pull
12

  
13
# Uncomment this to use the wireless library
14
USE_WIRELESS = 1
15

  
16
# com1 = serial port. Use lpt1 to connect to parallel port.
17
#AVRDUDE_PORT = com4
18
AVRDUDE_PORT = $(shell if uname -s |grep -i w32 >/dev/null; then echo 'COM4:'; else echo '/dev/ttyUSB0'; fi)
19
#
20
#
21
###################################
22

  
23
# Hey Emacs, this is a -*- makefile -*-
24
#----------------------------------------------------------------------------
25
# WinAVR Makefile Template written by Eric B. Weddington, J?rg Wunsch, et al.
26
#
27
# Released to the Public Domain
28
#
29
# Additional material for this makefile was written by:
30
# Peter Fleury
31
# Tim Henigan
32
# Colin O'Flynn
33
# Reiner Patommel
34
# Markus Pfaff
35
# Sander Pool
36
# Frederik Rouleau
37
#
38
#----------------------------------------------------------------------------
39
# On command line:
40
#
41
# make all = Make software.
42
#
43
# make clean = Clean out built project files.
44
#
45
# make coff = Convert ELF to AVR COFF.
46
#
47
# make extcoff = Convert ELF to AVR Extended COFF.
48
#
49
# make program = Download the hex file to the device, using avrdude.
50
#                Please customize the avrdude settings below first!
51
#
52
# make debug = Start either simulavr or avarice as specified for debugging,
53
#              with avr-gdb or avr-insight as the front end for debugging.
54
#
55
# make filename.s = Just compile filename.c into the assembler code only.
56
#
57
# make filename.i = Create a preprocessed source file for use in submitting
58
#                   bug reports to the GCC project.
59
#
60
# To rebuild project do "make clean" then "make all".
61
#----------------------------------------------------------------------------
62

  
63
#if you want your code to work on the Firefly++ and not Firefly+
64
#then add the -DFFPP line to CDEFS
65
CDEFS =
66
#-DFFPP
67

  
68
# MCU name
69
MCU = atmega128
70

  
71
# Processor frequency.
72
#     This will define a symbol, F_CPU, in all source code files equal to the
73
#     processor frequency. You can then use this symbol in your source code to
74
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
75
#     automatically to create a 32-bit value in your source code.
76
F_CPU = 8000000
77

  
78
# Output format. (can be srec, ihex, binary)
79
FORMAT = ihex
80

  
81
# List C source files here. (C dependencies are automatically generated.)
82
SRC = $(wildcard *.c)
83

  
84
# List Assembler source files here.
85
#     Make them always end in a capital .S.  Files ending in a lowercase .s
86
#     will not be considered source files but generated files (assembler
87
#     output from the compiler), and will be deleted upon "make clean"!
88
#     Even though the DOS/Win* filesystem matches both .s and .S the same,
89
#     it will preserve the spelling of the filenames, and gcc itself does
90
#     care about how the name is spelled on its command-line.
91
ASRC =
92

  
93
# Optimization level, can be [0, 1, 2, 3, s].
94
#     0 = turn off optimization. s = optimize for size.
95
#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
96
OPT = s
97

  
98
# Debugging format.
99
#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
100
#     AVR Studio 4.10 requires dwarf-2.
101
#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
102
DEBUG =
103

  
104
# Compiler flag to set the C Standard level.
105
#     c89   = "ANSI" C
106
#     gnu89 = c89 plus GCC extensions
107
#     c99   = ISO C99 standard (not yet fully implemented)
108
#     gnu99 = c99 plus GCC extensions
109
CSTANDARD = -std=gnu99
110

  
111
# Place -D or -U options here
112
CDEFS += -DF_CPU=$(F_CPU)UL
113
CDEFS += -DFFP
114
# for wireless library
115
ifdef USE_WIRELESS
116
	CDEFS += -DROBOT
117
endif
118

  
119
# Place -I, -L options here
120
CINCS = -I$(COLONYROOT)/lib/include/libdragonfly
121
CINCS += -L$(COLONYROOT)/lib/bin
122
ifdef USE_WIRELESS
123
	CINCS += -I$(COLONYROOT)/lib/include/libwireless
124
endif
125

  
126
#---------------- Compiler Options ----------------
127
#  -g*:          generate debugging information
128
#  -O*:          optimization level
129
#  -f...:        tuning, see GCC manual and avr-libc documentation
130
#  -Wall...:     warning level
131
#  -Wa,...:      tell GCC to pass this to the assembler.
132
#    -adhlns...: create assembler listing
133
CFLAGS =
134
# CFLAGS = -g$(DEBUG)
135
CFLAGS += $(CDEFS) $(CINCS)
136
CFLAGS += -O$(OPT)
137
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
138
CFLAGS += -Wall -Wstrict-prototypes
139
CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
140
CFLAGS += $(CSTANDARD)
141

  
142
#---------------- Assembler Options ----------------
143
#  -Wa,...:   tell GCC to pass this to the assembler.
144
#  -ahlms:    create listing
145
#  -gstabs:   have the assembler create line number information; note that
146
#             for use in COFF files, additional information about filenames
147
#             and function names needs to be present in the assembler source
148
#             files -- see avr-libc docs [FIXME: not yet described there]
149
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
150

  
151

  
152
#---------------- Library Options ----------------
153
# Minimalistic printf version
154
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
155

  
156
# Floating point printf version (requires MATH_LIB = -lm below)
157
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
158

  
159
# If this is left blank, then it will use the Standard printf version.
160
PRINTF_LIB =
161
#PRINTF_LIB = $(PRINTF_LIB_MIN)
162
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
163

  
164

  
165
# Minimalistic scanf version
166
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
167

  
168
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
169
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
170

  
171
# If this is left blank, then it will use the Standard scanf version.
172
SCANF_LIB =
173
#SCANF_LIB = $(SCANF_LIB_MIN)
174
#SCANF_LIB = $(SCANF_LIB_FLOAT)
175

  
176
MATH_LIB = -lm
177

  
178
#---------------- External Memory Options ----------------
179

  
180
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
181
# used for variables (.data/.bss) and heap (malloc()).
182
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
183

  
184
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
185
# only used for heap (malloc()).
186
#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
187

  
188
EXTMEMOPTS =
189

  
190
#---------------- Linker Options ----------------
191
#  -Wl,...:     tell GCC to pass this to linker.
192
#    -Map:      create map file
193
#    --cref:    add cross reference to  map file
194
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
195
LDFLAGS += $(EXTMEMOPTS)
196
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
197
ifdef USE_WIRELESS
198
	LDFLAGS += -lwireless
199
endif
200
LDFLAGS += -ldragonfly
201

  
202

  
203

  
204
#---------------- Programming Options (avrdude) ----------------
205

  
206
# Programming hardware: alf avr910 avrisp bascom bsd
207
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
208
#
209
# Type: avrdude -c ?
210
# to get a full listing.
211
#
212
AVRDUDE_PROGRAMMER = avrisp
213

  
214
# programmer connected to serial device
215

  
216
AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
217
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
218

  
219

  
220
# Uncomment the following if you want avrdude's erase cycle counter.
221
# Note that this counter needs to be initialized first using -Yn,
222
# see avrdude manual.
223
#AVRDUDE_ERASE_COUNTER = -y
224

  
225
# Uncomment the following if you do /not/ wish a verification to be
226
# performed after programming the device.
227
#AVRDUDE_NO_VERIFY = -V
228

  
229
# Increase verbosity level.  Please use this when submitting bug
230
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
231
# to submit bug reports.
232
#AVRDUDE_VERBOSE = -v -v
233

  
234
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
235
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
236
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
237
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
238

  
239
#don't check for device signature
240
AVRDUDE_FLAGS += -F
241

  
242

  
243

  
244
#---------------- Debugging Options ----------------
245

  
246
# For simulavr only - target MCU frequency.
247
DEBUG_MFREQ = $(F_CPU)
248

  
249
# Set the DEBUG_UI to either gdb or insight.
250
# DEBUG_UI = gdb
251
DEBUG_UI = insight
252

  
253
# Set the debugging back-end to either avarice, simulavr.
254
DEBUG_BACKEND = avarice
255
#DEBUG_BACKEND = simulavr
256

  
257
# GDB Init Filename.
258
GDBINIT_FILE = __avr_gdbinit
259

  
260
# When using avarice settings for the JTAG
261
JTAG_DEV = /dev/com1
262

  
263
# Debugging port used to communicate between GDB / avarice / simulavr.
264
DEBUG_PORT = 4242
265

  
266
# Debugging host used to communicate between GDB / avarice / simulavr, normally
267
#     just set to localhost unless doing some sort of crazy debugging when
268
#     avarice is running on a different computer.
269
DEBUG_HOST = localhost
270

  
271

  
272

  
273
#============================================================================
274

  
275

  
276
# Define programs and commands.
277
SHELL = sh
278
CC = avr-gcc
279
OBJCOPY = avr-objcopy
280
OBJDUMP = avr-objdump
281
SIZE = avr-size
282
NM = avr-nm
283
AVRDUDE = avrdude
284
REMOVE = rm -f
285
REMOVEDIR = rm -rf
286
COPY = cp
287
WINSHELL = cmd
288

  
289

  
290
# Define Messages
291
# English
292
MSG_ERRORS_NONE = Errors: none
293
MSG_BEGIN = -------- begin --------
294
MSG_END = --------  end  --------
295
MSG_SIZE_BEFORE = Size before:
296
MSG_SIZE_AFTER = Size after:
297
MSG_COFF = Converting to AVR COFF:
298
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
299
MSG_FLASH = Creating load file for Flash:
300
MSG_EEPROM = Creating load file for EEPROM:
301
MSG_EXTENDED_LISTING = Creating Extended Listing:
302
MSG_SYMBOL_TABLE = Creating Symbol Table:
303
MSG_LINKING = Linking:
304
MSG_COMPILING = Compiling:
305
MSG_ASSEMBLING = Assembling:
306
MSG_CLEANING = Cleaning project:
307

  
308

  
309

  
310

  
311
# Define all object files.
312
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
313

  
314
# Define all listing files.
315
LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
316

  
317

  
318
# Compiler flags to generate dependency files.
319
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
320

  
321

  
322
# Combine all necessary flags and optional flags.
323
# Add target processor to flags.
324
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
325
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
326

  
327

  
328

  
329

  
330

  
331
# Default target.
332
all: begin gccversion sizebefore build sizeafter end
333

  
334
build: elf hex eep lss sym
335

  
336
elf: $(TARGET).elf
337
hex: $(TARGET).hex
338
eep: $(TARGET).eep
339
lss: $(TARGET).lss
340
sym: $(TARGET).sym
341

  
342

  
343

  
344
# Eye candy.
345
# AVR Studio 3.x does not check make's exit code but relies on
346
# the following magic strings to be generated by the compile job.
347
begin:
348
	@echo
349
	@echo $(MSG_BEGIN)
350

  
351
end:
352
	@echo $(MSG_END)
353
	@echo
354

  
355

  
356
# Display size of file.
357
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
358
ELFSIZE = $(SIZE) -A $(TARGET).elf
359
AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
360

  
361
sizebefore:
362
	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
363
	$(AVRMEM) 2>/dev/null; echo; fi
364

  
365
sizeafter:
366
	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
367
	$(AVRMEM) 2>/dev/null; echo; fi
368

  
369

  
370

  
371
# Display compiler version information.
372
gccversion :
373
	@$(CC) --version
374

  
375

  
376

  
377
# Program the device.
378
program: $(TARGET).hex $(TARGET).eep
379
	#-taskkill /IM ttermpro.exe
380
	#sleep 1
381
	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
382

  
383

  
384
# Generate avr-gdb config/init file which does the following:
385
#     define the reset signal, load the target file, connect to target, and set
386
#     a breakpoint at main().
387
gdb-config:
388
	@$(REMOVE) $(GDBINIT_FILE)
389
	@echo define reset >> $(GDBINIT_FILE)
390
	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
391
	@echo end >> $(GDBINIT_FILE)
392
	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
393
	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
394
ifeq ($(DEBUG_BACKEND),simulavr)
395
	@echo load  >> $(GDBINIT_FILE)
396
endif
397
	@echo break main >> $(GDBINIT_FILE)
398

  
399
debug: gdb-config $(TARGET).elf
400
ifeq ($(DEBUG_BACKEND), avarice)
401
	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
402
	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
403
	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
404
	@$(WINSHELL) /c pause
405

  
406
else
407
	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
408
	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
409
endif
410
	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
411

  
412

  
413

  
414

  
415
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
416
COFFCONVERT=$(OBJCOPY) --debugging \
417
--change-section-address .data-0x800000 \
418
--change-section-address .bss-0x800000 \
419
--change-section-address .noinit-0x800000 \
420
--change-section-address .eeprom-0x810000
421

  
422

  
423
coff: $(TARGET).elf
424
	@echo
425
	@echo $(MSG_COFF) $(TARGET).cof
426
	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
427

  
428

  
429
extcoff: $(TARGET).elf
430
	@echo
431
	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
432
	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
433

  
434

  
435

  
436
# Create final output files (.hex, .eep) from ELF output file.
437
%.hex: %.elf
438
	@echo
439
	@echo $(MSG_FLASH) $@
440
	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
441

  
442
%.eep: %.elf
443
	@echo
444
	@echo $(MSG_EEPROM) $@
445
	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
446
	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
447

  
448
# Create extended listing file from ELF output file.
449
%.lss: %.elf
450
	@echo
451
	@echo $(MSG_EXTENDED_LISTING) $@
452
	$(OBJDUMP) -h -S $< > $@
453

  
454
# Create a symbol table from ELF output file.
455
%.sym: %.elf
456
	@echo
457
	@echo $(MSG_SYMBOL_TABLE) $@
458
	$(NM) -n $< > $@
459

  
460

  
461

  
462
# Link: create ELF output file from object files.
463
.SECONDARY : $(TARGET).elf
464
.PRECIOUS : $(OBJ)
465
%.elf: $(OBJ)
466
	@echo
467
	@echo $(MSG_LINKING) $@
468
	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
469

  
470

  
471
# Compile: create object files from C source files.
472
%.o : %.c
473
	@echo
474
	@echo $(MSG_COMPILING) $<
475
	$(CC) -c $(ALL_CFLAGS) $< -o $@
476

  
477

  
478
# Compile: create assembler files from C source files.
479
%.s : %.c
480
	$(CC) -S $(ALL_CFLAGS) $< -o $@
481

  
482

  
483
# Assemble: create object files from assembler source files.
484
%.o : %.S
485
	@echo
486
	@echo $(MSG_ASSEMBLING) $<
487
	$(CC) -c $(ALL_ASFLAGS) $< -o $@
488

  
489
# Create preprocessed source for use in sending a bug report.
490
%.i : %.c
491
	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
492

  
493

  
494
# Target: clean project.
495
clean: begin clean_list end
496

  
497
clean_list :
498
	@echo
499
	@echo $(MSG_CLEANING)
500
	$(REMOVE) $(TARGET).hex
501
	$(REMOVE) $(TARGET).eep
502
	$(REMOVE) $(TARGET).cof
503
	$(REMOVE) $(TARGET).elf
504
	$(REMOVE) $(TARGET).map
505
	$(REMOVE) $(TARGET).sym
506
	$(REMOVE) $(TARGET).lss
507
	$(REMOVE) $(OBJ)
508
	$(REMOVE) $(LST)
509
	$(REMOVE) $(SRC:.c=.s)
510
	$(REMOVE) $(SRC:.c=.d)
511
	$(REMOVEDIR) .dep
512

  
513

  
514

  
515
# Include the dependency files.
516
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
517

  
518

  
519
# Listing of phony targets.
520
.PHONY : all begin finish end sizebefore sizeafter gccversion \
521
build elf hex eep lss sym coff extcoff \
522
clean clean_list program debug gdb-config
523

  

Also available in: Unified diff