main
Michael Hayes 14 years ago
parent c1fef5ff4c
commit f8c79b474a

@ -0,0 +1,69 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 12 Sep 2010
# Descr: Makefile for hello5
# Definitions.
CC = avr-gcc
CFLAGS = -mmcu=atmega32u2 -Os -Wall -Wstrict-prototypes -Wextra -g -I../../drivers -I../../fonts -I../../drivers/avr -I../../utils
OBJCOPY = avr-objcopy
SIZE = avr-size
DEL = rm
# Default target.
all: hello5.out
# Compile: create object files from C source files.
hello5.o: hello5.c ../../drivers/avr/system.h ../../drivers/display.h ../../drivers/navswitch.h ../../fonts/font5x7_1.h ../../utils/font.h ../../utils/pacer.h ../../utils/tinygl.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 $@
display.o: ../../drivers/display.c ../../drivers/avr/system.h ../../drivers/display.h ../../drivers/ledmat.h
$(CC) -c $(CFLAGS) $< -o $@
ledmat.o: ../../drivers/ledmat.c ../../drivers/avr/pio.h ../../drivers/avr/system.h ../../drivers/ledmat.h
$(CC) -c $(CFLAGS) $< -o $@
navswitch.o: ../../drivers/navswitch.c ../../drivers/avr/delay.h ../../drivers/avr/pio.h ../../drivers/avr/system.h ../../drivers/navswitch.h
$(CC) -c $(CFLAGS) $< -o $@
font.o: ../../utils/font.c ../../drivers/avr/system.h ../../utils/font.h
$(CC) -c $(CFLAGS) $< -o $@
pacer.o: ../../utils/pacer.c ../../drivers/avr/system.h ../../drivers/avr/timer.h ../../utils/pacer.h
$(CC) -c $(CFLAGS) $< -o $@
tinygl.o: ../../utils/tinygl.c ../../drivers/avr/system.h ../../drivers/display.h ../../utils/font.h ../../utils/tinygl.h
$(CC) -c $(CFLAGS) $< -o $@
# Link: create ELF output file from object files.
hello5.out: hello5.o pio.o system.o timer.o display.o ledmat.o navswitch.o font.o pacer.o tinygl.o
$(CC) $(CFLAGS) $^ -o $@ -lm
$(SIZE) $@
# Target: clean project.
.PHONY: clean
clean:
-$(DEL) *.o *.out *.hex
# Target: program project.
.PHONY: program
program: hello5.out
$(OBJCOPY) -O ihex hello5.out hello5.hex
dfu-programmer atmega32u2 erase; dfu-programmer atmega32u2 flash hello5.hex; dfu-programmer atmega32u2 start

@ -0,0 +1,64 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 11 Sep 2010
# Descr: Makefile for hello5
CC = gcc
CFLAGS = -Wall -Wstrict-prototypes -Wextra -g -I../../drivers/test -I../../drivers -I../../fonts -I../../utils
DEL = rm
# Default target.
all: hello5
# Compile: create object files from C source files.
hello5-test.o: hello5.c ../../drivers/display.h ../../drivers/navswitch.h ../../drivers/test/system.h ../../fonts/font5x7_1.h ../../utils/font.h ../../utils/pacer.h ../../utils/tinygl.h
$(CC) -c $(CFLAGS) $< -o $@
display-test.o: ../../drivers/display.c ../../drivers/display.h ../../drivers/ledmat.h ../../drivers/test/system.h
$(CC) -c $(CFLAGS) $< -o $@
ledmat-test.o: ../../drivers/ledmat.c ../../drivers/ledmat.h ../../drivers/test/avrtest.h ../../drivers/test/pio.h ../../drivers/test/system.h
$(CC) -c $(CFLAGS) $< -o $@
navswitch-test.o: ../../drivers/navswitch.c ../../drivers/navswitch.h ../../drivers/test/avrtest.h ../../drivers/test/delay.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 $@
font-test.o: ../../utils/font.c ../../drivers/test/system.h ../../utils/font.h
$(CC) -c $(CFLAGS) $< -o $@
pacer-test.o: ../../utils/pacer.c ../../drivers/test/system.h ../../drivers/test/timer.h ../../utils/pacer.h
$(CC) -c $(CFLAGS) $< -o $@
tinygl-test.o: ../../utils/tinygl.c ../../drivers/display.h ../../drivers/test/system.h ../../utils/font.h ../../utils/tinygl.h
$(CC) -c $(CFLAGS) $< -o $@
# Link: create executable file from object files.
hello5: hello5-test.o display-test.o ledmat-test.o navswitch-test.o mgetkey-test.o pio-test.o system-test.o timer-test.o font-test.o pacer-test.o tinygl-test.o
$(CC) $(CFLAGS) $^ -o $@ -lrt
# Clean: delete derived files.
.PHONY: clean
clean:
-$(DEL) hello5 hello5-test.o display-test.o ledmat-test.o navswitch-test.o mgetkey-test.o pio-test.o system-test.o timer-test.o font-test.o pacer-test.o tinygl-test.o

@ -0,0 +1,42 @@
# File: Makefile
# Author: M. P. Hayes, UCECE
# Date: 11 Sep 2010
# Descr: Makefile for hello5 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,78 @@
system_clock_init@system.c:
system_watchdog_timer_init@system.c:
system_init@system.c: system_clock_init system_watchdog_timer_init
pio_config_set@pio.c:
ledmat_init@ledmat.c: pio_config_set pio_config_set
display_clear@display.c:
display_init@display.c: ledmat_init display_clear
tinygl_text_speed_set@tinygl.c:
tinygl_clear@tinygl.c: display_clear
tinygl_init@tinygl.c: display_init tinygl_text_speed_set tinygl_clear
navswitch_init@navswitch.c:
tinygl_font_set@tinygl.c:
tinygl_text_mode_set@tinygl.c:
tinygl_text_dir_set@tinygl.c:
tinygl_point@tinygl.c:
tinygl_text@tinygl.c: strncpy
timer_init@timer.c:
pacer_init@pacer.c: timer_init
timer_get@timer.c:
timer_wait_until@timer.c: timer_get
pacer_wait@pacer.c: timer_wait_until
font_pixel_get@font.c:
tinygl_font_pixel_get@tinygl.c: font_pixel_get
display_pixel_set@display.c:
tinygl_draw_point@tinygl.c: display_pixel_set
tinygl_draw_char@tinygl.c: tinygl_point tinygl_font_pixel_get tinygl_draw_point tinygl_point tinygl_draw_point tinygl_point tinygl_font_pixel_get tinygl_draw_point tinygl_point tinygl_draw_point
tinygl_draw_string@tinygl.c: tinygl_draw_char
tinygl_text_advance@tinygl.c: tinygl_draw_char tinygl_draw_string
pio_output_high@pio.c:
pio_output_low@pio.c:
ledmat_display_column@ledmat.c: pio_output_high pio_output_low pio_output_high pio_output_low
display_update@display.c: ledmat_display_column
tinygl_update@tinygl.c: tinygl_text_advance display_update
pio_config_get@pio.c:
_delay_loop_1@navswitch.c:
pio_input_get@pio.c:
navswitch_update@navswitch.c: pio_config_get pio_config_set pio_config_set _delay_loop_1 pio_input_get pio_config_set
navswitch_push_event_p@navswitch.c:
main@hello5.c: system_init tinygl_init navswitch_init tinygl_font_set tinygl_text_speed_set tinygl_text_mode_set tinygl_text_dir_set tinygl_point tinygl_text pacer_init pacer_wait tinygl_update navswitch_update navswitch_push_event_p tinygl_text_mode_set navswitch_push_event_p tinygl_text_mode_set

@ -0,0 +1,62 @@
../../drivers/avr/timer.h:
../../drivers/avr/timer.c: ../../drivers/avr/timer.h
../../drivers/avr/timer.o: ../../drivers/avr/timer.c
../../drivers/navswitch.h:
../../drivers/display.h:
../../utils/font.h:
../../utils/tinygl.h: ../../drivers/display.h ../../utils/font.h
../../utils/pacer.h:
../../fonts/font3x5_1.h: ../../utils/font.h
hello5.c: ../../drivers/navswitch.h ../../utils/tinygl.h ../../utils/pacer.h ../../fonts/font3x5_1.h
hello5.o: hello5.c
../../drivers/avr/delay.h:
../../drivers/avr/pio.h:
../../drivers/navswitch.c: ../../drivers/navswitch.h ../../drivers/avr/delay.h ../../drivers/avr/pio.h
../../drivers/navswitch.o: ../../drivers/navswitch.c
../../drivers/ledmat.h:
../../drivers/ledmat.c: ../../drivers/avr/pio.h ../../drivers/ledmat.h
../../drivers/ledmat.o: ../../drivers/ledmat.c
../../utils/font.c: ../../utils/font.h
../../utils/font.o: ../../utils/font.c
../../drivers/avr/pio.c: ../../drivers/avr/pio.h
../../drivers/avr/pio.o: ../../drivers/avr/pio.c
../../utils/pacer.c: ../../drivers/avr/timer.h ../../utils/pacer.h
../../utils/pacer.o: ../../utils/pacer.c
../../drivers/display.c: ../../drivers/ledmat.h ../../drivers/display.h
../../drivers/display.o: ../../drivers/display.c
../../utils/tinygl.c: ../../utils/tinygl.h ../../drivers/display.h ../../utils/font.h
../../utils/tinygl.o: ../../utils/tinygl.c
../../drivers/avr/system.c:
../../drivers/avr/system.o: ../../drivers/avr/system.c
hello5.out: ../../drivers/avr/timer.o hello5.o ../../drivers/navswitch.o ../../drivers/ledmat.o ../../utils/font.o ../../drivers/avr/pio.o ../../utils/pacer.o ../../drivers/display.o ../../utils/tinygl.o ../../drivers/avr/system.o

@ -0,0 +1,18 @@
pio:
navswitch: pio
ledmat: pio
display: ledmat
font:
tinygl: display font
timer:
pacer: timer
hello5: navswitch tinygl pacer

@ -0,0 +1,58 @@
/** @file hello5.c
@author M. P. Hayes, UCECE
@date 24 August 2009
@brief Simple message display program using display module.
@defgroup hello5 Simple message display program using tinygl
*/
#include "system.h"
#include "navswitch.h"
#include "tinygl.h"
#include "pacer.h"
#include "../fonts/font3x5_1.h"
/* Define polling rate in Hz. */
#define LOOP_RATE 300
/* Define text update rate (characters per 10 s). */
#define MESSAGE_RATE 10
int main (void)
{
system_init ();
tinygl_init (LOOP_RATE);
navswitch_init ();
tinygl_font_set (&font3x5_1);
tinygl_text_speed_set (MESSAGE_RATE);
tinygl_text_mode_set (TINYGL_TEXT_MODE_SCROLL);
tinygl_text_dir_set (TINYGL_TEXT_DIR_ROTATE);
tinygl_text ("HELLO WORLD", tinygl_point (0, TINYGL_HEIGHT - 1));
pacer_init (LOOP_RATE);
/* Paced loop. */
while (1)
{
/* Wait for next tick. */
pacer_wait ();
tinygl_update ();
navswitch_update ();
if (navswitch_push_event_p (NAVSWITCH_WEST))
tinygl_text_mode_set (TINYGL_TEXT_MODE_STEP);
if (navswitch_push_event_p (NAVSWITCH_EAST))
tinygl_text_mode_set (TINYGL_TEXT_MODE_SCROLL);
}
return 0;
}
Loading…
Cancel
Save