Better detection of concurrent ADC access.
[bertos.git] / bertos / cpu / avr / drv / i2c_avr.c
index 335d8330f4635722b42547b162d4f5f3d44652f8..7425240305cebea0ea6ca383111c88305934b758 100644 (file)
@@ -38,7 +38,7 @@
  * \author Bernie Innocenti <bernie@codewiz.org>
  */
 
-#include "hw/hw_cpu.h"  /* CLOCK_FREQ */
+#include <hw/hw_cpufreq.h>  /* CPU_FREQ */
 
 #include "cfg/cfg_i2c.h"
 
@@ -67,7 +67,7 @@
  *
  * \return true on success, false otherwise.
  */
-static bool i2c_start(void)
+static bool i2c_builtin_start(void)
 {
        TWCR = BV(TWINT) | BV(TWSTA) | BV(TWEN);
        WAIT_TWI_READY;
@@ -87,7 +87,7 @@ static bool i2c_start(void)
  *
  * \return true on success, false otherwise.
  */
-bool i2c_start_w(uint8_t id)
+bool i2c_builtin_start_w(uint8_t id)
 {
        /*
         * Loop on the select write sequence: when the eeprom is busy
@@ -96,7 +96,7 @@ bool i2c_start_w(uint8_t id)
         * keep trying until the eeprom responds with an ACK.
         */
        ticks_t start = timer_clock();
-       while (i2c_start())
+       while (i2c_builtin_start())
        {
                TWDR = id & ~I2C_READBIT;
                TWCR = BV(TWINT) | BV(TWEN);
@@ -127,9 +127,9 @@ bool i2c_start_w(uint8_t id)
  *
  * \return true on success, false otherwise.
  */
-bool i2c_start_r(uint8_t id)
+bool i2c_builtin_start_r(uint8_t id)
 {
-       if (i2c_start())
+       if (i2c_builtin_start())
        {
                TWDR = id | I2C_READBIT;
                TWCR = BV(TWINT) | BV(TWEN);
@@ -148,7 +148,7 @@ bool i2c_start_r(uint8_t id)
 /**
  * Send STOP condition.
  */
-void i2c_stop(void)
+void i2c_builtin_stop(void)
 {
         TWCR = BV(TWINT) | BV(TWEN) | BV(TWSTO);
 }
@@ -160,7 +160,7 @@ void i2c_stop(void)
  *
  * \return true on success, false on error.
  */
-bool i2c_put(const uint8_t data)
+bool i2c_builtin_put(const uint8_t data)
 {
        TWDR = data;
        TWCR = BV(TWINT) | BV(TWEN);
@@ -181,7 +181,7 @@ bool i2c_put(const uint8_t data)
  *
  * \return the byte read if ok, EOF on errors.
  */
-int i2c_get(bool ack)
+int i2c_builtin_get(bool ack)
 {
        TWCR = BV(TWINT) | BV(TWEN) | (ack ? BV(TWEA) : 0);
        WAIT_TWI_READY;
@@ -212,7 +212,7 @@ MOD_DEFINE(i2c);
 /**
  * Initialize TWI module.
  */
-void i2c_init(void)
+void i2c_builtin_init(void)
 {
        ATOMIC(
                /*
@@ -237,7 +237,7 @@ void i2c_init(void)
 
                /*
                 * Set speed:
-                * F = CLOCK_FREQ / (16 + 2*TWBR * 4^TWPS)
+                * F = CPU_FREQ / (16 + 2*TWBR * 4^TWPS)
                 */
                #ifndef CONFIG_I2C_FREQ
                        #warning Using default value of 300000L for CONFIG_I2C_FREQ
@@ -245,7 +245,7 @@ void i2c_init(void)
                #endif
                #define TWI_PRESC 1       /* 4 ^ TWPS */
 
-               TWBR = (CLOCK_FREQ / (2 * CONFIG_I2C_FREQ * TWI_PRESC)) - (8 / TWI_PRESC);
+               TWBR = (CPU_FREQ / (2 * CONFIG_I2C_FREQ * TWI_PRESC)) - (8 / TWI_PRESC);
                TWSR = 0;
                TWCR = BV(TWEN);
        );