From b4a96cca3985cba6079d1b7a16f30aa43432a9b3 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Fri, 6 May 2011 01:55:49 +0200 Subject: digital/io-hub: add PWM --- digital/io-hub/src/robospierre/Makefile | 5 ++++- digital/io-hub/src/robospierre/avrconfig.h | 8 ++++++++ digital/io-hub/src/robospierre/main.c | 21 +++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) (limited to 'digital/io-hub/src/robospierre') diff --git a/digital/io-hub/src/robospierre/Makefile b/digital/io-hub/src/robospierre/Makefile index 768fe9a4..9d0035fe 100644 --- a/digital/io-hub/src/robospierre/Makefile +++ b/digital/io-hub/src/robospierre/Makefile @@ -4,6 +4,7 @@ BASE = ../../../avr PROGS = io_hub # Sources to compile. io_hub_SOURCES = main.c \ + pwm.avr.c pwm.host.c \ twi_master.c asserv.c mimot.c \ chrono.c timer.avr.c simu.host.c # Modules needed for IO. @@ -17,8 +18,10 @@ AVR_MCU = at90usb1287 OPTIMIZE = -O2 HOST_LIBS = -lm +vpath %.c ../common +vpath %.h ../common vpath %.c $(AI_MODULES:%=../../../ai/src/%) vpath %.h $(AI_MODULES:%=../../../ai/src/%) -INCLUDES += -I. $(AI_MODULES:%=-I../../../ai/src/%) +INCLUDES += -I. -I../common $(AI_MODULES:%=-I../../../ai/src/%) include $(BASE)/make/Makefile.gen diff --git a/digital/io-hub/src/robospierre/avrconfig.h b/digital/io-hub/src/robospierre/avrconfig.h index 11635646..0fc2f11d 100644 --- a/digital/io-hub/src/robospierre/avrconfig.h +++ b/digital/io-hub/src/robospierre/avrconfig.h @@ -103,5 +103,13 @@ /* io-hub - io/ai board. */ /** TWI address of the io board. */ #define AC_IO_TWI_ADDRESS 10 +/** PWM setting. */ +#define AC_IOHUB_PWM \ + PWM (1, A, B, 5, D, 4) \ + PWM (1, B, B, 6, D, 5) \ + PWM (1, C, B, 7, D, 6) \ + PWM (3, A, C, 6, C, 7) \ + PWM (3, B, C, 5, C, 3) \ + PWM (3, C, C, 4, C, 2) #endif /* avrconfig_h */ diff --git a/digital/io-hub/src/robospierre/main.c b/digital/io-hub/src/robospierre/main.c index 5a987240..c0937615 100644 --- a/digital/io-hub/src/robospierre/main.c +++ b/digital/io-hub/src/robospierre/main.c @@ -36,6 +36,8 @@ #include "mimot.h" #include "twi_master.h" +#include "pwm.h" + #include "io.h" /** Our color. */ @@ -58,6 +60,8 @@ main_init (void) asserv_init (); mimot_init (); twi_master_init (); + /* IO modules. */ + pwm_init (); /* Initialization done. */ proto_send0 ('z'); } @@ -88,6 +92,8 @@ main_loop (void) /* Handle commands from UART. */ while (uart0_poll ()) proto_accept (uart0_getc ()); + /* Update IO modules. */ + pwm_update (); /* Only manage events if slaves are synchronised. */ if (twi_master_sync ()) main_event_to_fsm (); @@ -116,6 +122,21 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) /* Reset */ utils_reset (); break; + case c ('w', 4): + /* Set PWM. + * - 1w: index. + * - 1w: value. */ + pwm_set (v8_to_v16 (args[0], args[1]), v8_to_v16 (args[2], args[3])); + break; + case c ('w', 8): + /* Set timed PWM. + * - 1w: index. + * - 1w: value. + * - 1w: time. + * - 1w: rest value. */ + pwm_set_timed (v8_to_v16 (args[0], args[1]), v8_to_v16 (args[2], args[3]), + v8_to_v16 (args[4], args[5]), v8_to_v16 (args[6], args[7])); + break; /* Stats commands. * - b: interval between stats. */ case c ('A', 1): -- cgit v1.2.3