]> git.gag.com Git - fw/altos/commitdiff
start on i2c stuff
authorBdale Garbee <bdale@gag.com>
Fri, 21 Feb 2025 00:06:27 +0000 (17:06 -0700)
committerBdale Garbee <bdale@gag.com>
Fri, 21 Feb 2025 00:06:27 +0000 (17:06 -0700)
src/lpc/ao_i2c_lpc.c [new file with mode: 0644]
src/quantimotor-v2/Makefile
src/quantimotor-v2/ao_pins.h

diff --git a/src/lpc/ao_i2c_lpc.c b/src/lpc/ao_i2c_lpc.c
new file mode 100644 (file)
index 0000000..48bf3cf
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright © 2025 Bdale Garbee <bdale@gag.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+/* this I2C implementation written specifically to support the use of an 
+ * LPC11U12 on QuantiMotor pretending to be an AD7997 ADC chip.  So we're an
+ * I2C slave, with almost all the work done as an interrupt service routine.
+ */
+
+#include <ao.h>
+
+static uint8_t  ao_i2c_state;
+static uint16_t ao_i2c_addr;
+
+static void
+ao_i2c_isr()
+{
+       ao_wakeup(&ao_i2c_state);
+}
+
+uint8_t
+ao_i2c_start(uint16_t addr)
+{
+       ao_i2c_state = I2C_IDLE;
+        ao_i2c_addr = addr;
+
+       ao_arch_block_interrupts();
+
+       /* set up I2C interrupt */
+       /* wait for chip to go ready with some max wait? */
+
+       ao_arch_release_interrupts();
+       return ao_i2c_state == I2C_RUNNING;
+}
+
index c4fd6cba9ccac3a109c872cc630200b3be2be5e1..937d4a389dbd4be83793542a5b298291ec1a12ba 100644 (file)
@@ -34,7 +34,8 @@ ALTOS_SRC = \
        ao_adc_lpc.c \
        ao_serial_lpc.c \
        ao_usb_lpc.c \
-       ao_led.c
+       ao_led.c \
+       ao_i2c_lpc.c
 
 PRODUCT=QuantiMotor-v2
 PRODUCT_DEF=-DQUANTIMOTOR_V_2
index 5b4a6111d31ed5d211a0abb4f4e9c7c53b9442a4..b56e429eecd25150075884d99f139a5d989a52b0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2024 Bdale Garbee <bdale@gag.com
+ * Copyright © 2024 Bdale Garbee <bdale@gag.com>
  * GPLv3
  */