Commit Graph

7 Commits

Author SHA1 Message Date
Markus Hitter 61ab29e6b6 I2C: no need to initialise with an address in master mode. 2016-04-20 21:15:11 +02:00
Markus Hitter 194e5d5b98 I2C: use pinio.h to handle pins.
This removes the need for four user configuration options.
2016-04-20 21:15:11 +02:00
Markus Hitter 6ef9e1a2ee I2C: encapsulate bus states.
No functional changes.
2016-04-20 21:15:11 +02:00
Markus Hitter 061225f72d I2C: get rid of these unimplemented error handlers.
Naively restarting I2C immediately is certainly not the solution
and just leads to an interrupt flood. As I2C is currently meant
to drive displays, where successful data transmission isn't
crucial, we now simply stop transmission on errors.

This saves another 80 bytes binary size:

    FLASH  : 23094 bytes
    RAM    :  2051 bytes
    EEPROM :    32 bytes
2016-04-20 21:15:11 +02:00
Markus Hitter 3ced6aae4a I2C: handling another master sending is part of slave mode.
At least, avr-libc says so. Saves some 36 bytes in interrupt
context.
2016-04-20 21:15:11 +02:00
Markus Hitter e4067dc235 I2C: use avr-libc bus status names.
No need to reinvent the wheel.
2016-04-20 21:15:11 +02:00
Ruslan Popov 619560c112 I2C: initial support.
This commit squashes in some fixes found after debugging on the
topic branch. Test code by Traumflug, collected from Ruslan's
code on the topic branch.

Before, same as now without I2C:

    FLASH  : 22408 bytes
    RAM    :  1393 bytes
    EEPROM :    32 bytes

Now with I2C:

    FLASH  : 23224 bytes
    RAM    :  2057 bytes
    EEPROM :    32 bytes

This totals to some 800 bytes with a whole lot of test code, so
implementation is pretty small :-)
2016-04-20 21:15:11 +02:00