summaryrefslogtreecommitdiff
path: root/digital/asserv
diff options
context:
space:
mode:
authorNicolas Schodet2010-11-29 23:07:46 +0100
committerNicolas Schodet2010-11-29 23:07:46 +0100
commitdb212811293f91e0f1147eb57e5f6d5df2db10ef (patch)
tree0d531fb2c2380734a90e949ed66e4978fa8007ef /digital/asserv
parent0f105f99e378bb596f2c305f64bdd7cf1bc87446 (diff)
digital/avr/modules/twi: cleanup TWI module, refs #29, closes #90
- use contexts - changed interface - merge test programs - share polling mechanism - prepare place for other drivers - add callback system - use english comments
Diffstat (limited to 'digital/asserv')
-rw-r--r--digital/asserv/src/asserv/avrconfig.h28
-rw-r--r--digital/asserv/src/asserv/twi_proto.c6
2 files changed, 24 insertions, 10 deletions
diff --git a/digital/asserv/src/asserv/avrconfig.h b/digital/asserv/src/asserv/avrconfig.h
index c0403592..a07fa21d 100644
--- a/digital/asserv/src/asserv/avrconfig.h
+++ b/digital/asserv/src/asserv/avrconfig.h
@@ -92,14 +92,28 @@
#define AC_ASSERV_TWI_ADDRESS 4
/* twi - TWI module. */
-/** Activate master part. */
-#define AC_TWI_MASTER_ENABLE 0
-/** Activate slave part. */
+/** Driver to implement TWI: HARD, SOFT, or USI. */
+#define AC_TWI_DRIVER HARD
+/** Do not use interrupts. */
+#define AC_TWI_NO_INTERRUPT 0
+/** TWI frequency, should really be 100 kHz. */
+#define AC_TWI_FREQ 100000
+/** Enable slave part. */
#define AC_TWI_SLAVE_ENABLE 1
-/** Slave recv buffer size. */
-#define AC_TWI_SL_RECV_BUFFER_SIZE 16
-/** Slave send buffer size. */
-#define AC_TWI_SL_SEND_BUFFER_SIZE 16
+/** Enable master part. */
+#define AC_TWI_MASTER_ENABLE 0
+/** Use polled slave mode: received data is stored in a buffer which can be
+ * polled using twi_slave_poll. */
+#define AC_TWI_SLAVE_POLLED 1
+/** Slave reception callback to be defined by the user when not in polled
+ * mode. */
+#undef AC_TWI_SLAVE_RECV
+/** Use internal pull up. */
+#define AC_TWI_PULL_UP 0
+/** Slave reception buffer size. */
+#define AC_TWI_SLAVE_RECV_BUFFER_SIZE 16
+/** Slave transmission buffer size. */
+#define AC_TWI_SLAVE_SEND_BUFFER_SIZE 16
/* spi - SPI module. */
/** Select driver: HARD, SOFT, or NONE. */
diff --git a/digital/asserv/src/asserv/twi_proto.c b/digital/asserv/src/asserv/twi_proto.c
index 60b8bdc8..ff15c82f 100644
--- a/digital/asserv/src/asserv/twi_proto.c
+++ b/digital/asserv/src/asserv/twi_proto.c
@@ -70,10 +70,10 @@ twi_proto_init (void)
void
twi_proto_update (void)
{
- u8 buf[AC_TWI_SL_RECV_BUFFER_SIZE];
+ u8 buf[AC_TWI_SLAVE_RECV_BUFFER_SIZE];
u8 read_data;
/* Handle incoming command. */
- while ((read_data = twi_sl_poll (buf, sizeof (buf))))
+ while ((read_data = twi_slave_poll (buf, sizeof (buf))))
twi_proto_callback (buf, read_data);
/* Update status. */
u8 status_with_crc[16];
@@ -104,7 +104,7 @@ twi_proto_update (void)
/* Compute CRC. */
status_with_crc[0] = crc_compute (&status_with_crc[1],
sizeof (status_with_crc) - 1);
- twi_sl_update (status_with_crc, sizeof (status_with_crc));
+ twi_slave_update (status_with_crc, sizeof (status_with_crc));
}
/** Handle one command. */