Add squeak0

main
Michael Hayes 14 years ago
parent e024a1e207
commit b7340eae00

@ -33,7 +33,6 @@ int main (void)
count++;
if (count >= period)
count = 0;
}
return 0;

@ -0,0 +1,63 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 12 Sep 2010
# Descr: Makefile for squeak0
# Definitions.
CC = avr-gcc
CFLAGS = -mmcu=atmega32u2 -Os -Wall -Wstrict-prototypes -Wextra -g -I../../drivers/avr -I../../extra -I../../drivers -I../../utils
OBJCOPY = avr-objcopy
SIZE = avr-size
DEL = rm
# Default target.
all: squeak0.out
# Compile: create object files from C source files.
squeak0.o: squeak0.c ../../drivers/avr/pio.h ../../drivers/avr/system.h ../../drivers/avr/timer.h ../../extra/mmelody.h ../../extra/ticker.h ../../extra/tweeter.h ../../utils/task.h
$(CC) -c $(CFLAGS) $< -o $@
pio.o: ../../drivers/avr/pio.c ../../drivers/avr/pio.h ../../drivers/avr/system.h
$(CC) -c $(CFLAGS) $< -o $@
system.o: ../../drivers/avr/system.c ../../drivers/avr/system.h
$(CC) -c $(CFLAGS) $< -o $@
timer.o: ../../drivers/avr/timer.c ../../drivers/avr/system.h ../../drivers/avr/timer.h
$(CC) -c $(CFLAGS) $< -o $@
mmelody.o: ../../extra/mmelody.c ../../drivers/avr/system.h ../../extra/mmelody.h
$(CC) -c $(CFLAGS) $< -o $@
ticker.o: ../../extra/ticker.c
$(CC) -c $(CFLAGS) $< -o $@
tweeter.o: ../../extra/tweeter.c ../../drivers/avr/system.h ../../extra/ticker.h ../../extra/tweeter.h
$(CC) -c $(CFLAGS) $< -o $@
task.o: ../../utils/task.c ../../drivers/avr/system.h ../../drivers/avr/timer.h ../../utils/task.h
$(CC) -c $(CFLAGS) $< -o $@
# Link: create ELF output file from object files.
squeak0.out: squeak0.o pio.o system.o timer.o mmelody.o ticker.o tweeter.o task.o
$(CC) $(CFLAGS) $^ -o $@ -lm
$(SIZE) $@
# Target: clean project.
.PHONY: clean
clean:
-$(DEL) *.o *.out *.hex
# Target: program project.
.PHONY: program
program: squeak0.out
$(OBJCOPY) -O ihex squeak0.out squeak0.hex
dfu-programmer atmega32u2 erase; dfu-programmer atmega32u2 flash squeak0.hex; dfu-programmer atmega32u2 start

@ -0,0 +1,61 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 11 Sep 2010
# Descr: Makefile for squeak1
CC = gcc
CFLAGS = -Wall -Wstrict-prototypes -Wextra -g -I../../drivers/test -I../../drivers -I../../extra -I../../utils
DEL = rm
# Default target.
all: squeak1
# Compile: create object files from C source files.
squeak1-test.o: squeak1.c ../../drivers/led.h ../../drivers/test/avrtest.h ../../drivers/test/pio.h ../../drivers/test/system.h ../../drivers/test/timer.h ../../extra/mmelody.h ../../extra/ticker.h ../../extra/tweeter.h ../../utils/task.h
$(CC) -c $(CFLAGS) $< -o $@
led-test.o: ../../drivers/led.c ../../drivers/led.h ../../drivers/test/avrtest.h ../../drivers/test/pio.h ../../drivers/test/system.h
$(CC) -c $(CFLAGS) $< -o $@
mgetkey-test.o: ../../drivers/test/mgetkey.c ../../drivers/test/mgetkey.h
$(CC) -c $(CFLAGS) $< -o $@
pio-test.o: ../../drivers/test/pio.c ../../drivers/test/avrtest.h ../../drivers/test/pio.h ../../drivers/test/system.h
$(CC) -c $(CFLAGS) $< -o $@
system-test.o: ../../drivers/test/system.c ../../drivers/test/avrtest.h ../../drivers/test/mgetkey.h ../../drivers/test/pio.h ../../drivers/test/system.h
$(CC) -c $(CFLAGS) $< -o $@
timer-test.o: ../../drivers/test/timer.c ../../drivers/test/system.h ../../drivers/test/timer.h
$(CC) -c $(CFLAGS) $< -o $@
mmelody-test.o: ../../extra/mmelody.c ../../drivers/test/system.h ../../extra/mmelody.h
$(CC) -c $(CFLAGS) $< -o $@
ticker-test.o: ../../extra/ticker.c
$(CC) -c $(CFLAGS) $< -o $@
tweeter-test.o: ../../extra/tweeter.c ../../drivers/test/system.h ../../extra/ticker.h ../../extra/tweeter.h
$(CC) -c $(CFLAGS) $< -o $@
task-test.o: ../../utils/task.c ../../drivers/test/system.h ../../drivers/test/timer.h ../../utils/task.h
$(CC) -c $(CFLAGS) $< -o $@
# Link: create executable file from object files.
squeak1: squeak1-test.o led-test.o mgetkey-test.o pio-test.o system-test.o timer-test.o mmelody-test.o ticker-test.o tweeter-test.o task-test.o
$(CC) $(CFLAGS) $^ -o $@ -lrt
# Clean: delete derived files.
.PHONY: clean
clean:
-$(DEL) squeak1 squeak1-test.o led-test.o mgetkey-test.o pio-test.o system-test.o timer-test.o mmelody-test.o ticker-test.o tweeter-test.o task-test.o

@ -0,0 +1,42 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 11 Sep 2010
# Descr: Makefile for squeak0 docs
DEL = rm
all: file_dependencies.pdf module_dependencies.pdf makefile_dependencies.pdf build_dependencies.pdf callgraph.pdf
file_dependencies.pdf: files.d
../../../etc/graphdeps.py $< --out $@
module_dependencies.pdf: modules.d
../../../etc/graphdeps.py $< --modules --out $@
makefile_dependencies.pdf: ../Makefile
../../../etc/graphdeps.py $< --out $@
build_dependencies.pdf: ../Makefile
../../../etc/graphdeps.py $< --out $@ --showops
callgraph.pdf: callgraph.d
../../../etc/graphdeps.py --calls --modules $< --out $@ --showops
files.d: ../Makefile
(cd ..; ../../etc/makemake.py --relpath --files . . ../../drivers ../../drivers/avr ../../utils ../../extra --exclude system.h > doc/files.d)
modules.d: ../Makefile
(cd ..; ../../etc/makemake.py --relpath --modules . . ../../drivers ../../drivers/avr ../../utils ../../extra --exclude system > doc/modules.d)
callgraph.d: ../Makefile
(cd ..; ../../etc/makemake.py --cc="avr-gcc" --cflags="-Os -mmcu=atmega32u2" --relpath --calls . . ../../drivers ../../drivers/avr ../../utils ../../extra --exclude system.h > doc/callgraph.d)
# Clean: delete derived files.
.PHONY: clean
clean:
-$(DEL) *.d *.pdf

@ -0,0 +1,16 @@
Running make in this directory will generate a number of PDF graphs.
In the callgraph, the arrows means "calls". In the dependency graphs,
the arrows means "requires" (or "depends upon").
callgraph.pdf This shows the callgraph, i.e., what functions each
function in the program calls.
module_dependencies.pdf This shows the dependencies between the modules.
file_dependencies.pdf This shows the dependencies between the files.
makefile_dependencies.pdf This shows the dependencies required by make when
building the program.
build_dependencies.pdf This is like makefile_dependencies.pdf but shows
the operations performed to generate the new file.
callgraph.d This shows the callgraph in text format.
files.d This shows the file dependencies in text format.
modules.d This shows the module dependencies in text format.

@ -0,0 +1 @@
"*8<G///>3<D#//A#G///>2 ///D+///D+///D+///D#+//A#F#///D#//A#G/// ///"

@ -0,0 +1,89 @@
/** @file squeak0.c
@author M.P. Hayes
@date 16 Sep 2011
*/
#include "system.h"
#include "pio.h"
#include "task.h"
#include "tweeter.h"
#include "mmelody.h"
/* Connect piezo tweeter to outermost pins of UCFK4 P1 connector. */
#define PIEZO_PIO PIO_DEFINE (PORT_D, 6)
/* Define polling rates in Hz. */
#define TWEETER_TASK_RATE 20000
#define TUNE_TASK_RATE 100
#define TUNE_BPM_RATE 200
static tweeter_t tweeter;
static mmelody_t melody;
static mmelody_obj_t melody_info;
static tweeter_obj_t tweeter_info;
static const char tune1[] =
{
#include "imperial_march.mmel"
" :"
};
static void tweeter_task_init (void)
{
static tweeter_scale_t scale_table[] = TWEETER_SCALE_TABLE (TWEETER_TASK_RATE);
tweeter = tweeter_init (&tweeter_info, TWEETER_TASK_RATE, scale_table);
pio_config_set (PIEZO_PIO, PIO_OUTPUT_LOW);
}
static void tweeter_task (__unused__ void *data)
{
pio_output_set (PIEZO_PIO, tweeter_update (tweeter));
}
static void tune_task_init (void)
{
melody = mmelody_init (&melody_info, TUNE_TASK_RATE,
(mmelody_callback_t) tweeter_note_play, tweeter);
mmelody_speed_set (melody, TUNE_BPM_RATE);
mmelody_play (melody, tune1);
}
static void tune_task (__unused__ void *data)
{
mmelody_update (melody);
}
int main (void)
{
/* There are two tasks:
the tweeter task plays the notes
the tune tasks sequences the tune.
*/
task_t tasks[] =
{
{.func = tweeter_task, .period = TASK_RATE / TWEETER_TASK_RATE},
{.func = tune_task, .period = TASK_RATE / TUNE_TASK_RATE},
};
system_init ();
tweeter_task_init ();
tune_task_init ();
task_schedule (tasks, ARRAY_SIZE (tasks));
return 0;
}

@ -1 +1 @@
"*16<G///>3<D#//A#G///>2 ///D+///D+///D+///D#+//A#F#///D#//A#G/// ///"
"*8<G///>3<D#//A#G///>2 ///D+///D+///D+///D#+//A#F#///D#//A#G/// ///"

Loading…
Cancel
Save