1
0
mirror of https://github.com/SMFSW/cI2C synced 2024-12-04 07:05:44 +01:00

v1.3: Added Travis CI support and removed doxygen version anchors in sources

This commit is contained in:
SMFSW 2018-05-03 18:42:08 +02:00
parent 63be41402d
commit 4fcef282b6
9 changed files with 103 additions and 49 deletions

4
.gitignore vendored Normal file → Executable file
View File

@ -27,3 +27,7 @@
*.exe *.exe
*.out *.out
*.app *.app
#Doxygen
doxygen_sqlite3.db
doxy

25
.travis.yml Executable file
View File

@ -0,0 +1,25 @@
language: c
sudo: false
# Blacklist
branches:
except:
- gh-pages
env:
global:
- PRETTYNAME="cI2C: Arduino Hardware I2C for AVR (in plain c)"
- GH_REPO_NAME: cI2C
- GH_REPO_REF: github.com/SMFSW/cI2C.git
# - DOXYFILE: $TRAVIS_BUILD_DIR/Doxyfile
before_install:
- source <(curl -SLs https://raw.githubusercontent.com/SMFSW/travis-ci-arduino/master/install.sh)
script:
- build_avr_platforms
# Generate and deploy documentation
after_success:
- source <(curl -SLs https://raw.githubusercontent.com/SMFSW/travis-ci-arduino/master/library_check.sh)
- source <(curl -SLs https://raw.githubusercontent.com/SMFSW/travis-ci-arduino/master/doxy_gen_and_deploy.sh)

14
Clean.bat Executable file
View File

@ -0,0 +1,14 @@
@ECHO off
ECHO #***************************************************************
ECHO # File : clean.bat
ECHO #
ECHO # Command lines script: Clearing output, temporary and log files
ECHO #***************************************************************
@ECHO on
::del *.o /s
del cI2C.chm
del /f /q /s workdir\
rmdir workdir

View File

@ -38,7 +38,7 @@ PROJECT_NAME = "Arduino Hardware I2C for AVR MCUs (plain c)"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.2 PROJECT_NUMBER = 1.3
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a

View File

@ -1,10 +1,12 @@
# cI2C # cI2C [![Build Status](https://travis-ci.org/SMFSW/cI2C.svg?branch=master)](https://travis-ci.org/SMFSW/cI2C)
Arduino Hardware I2C for AVR (plain c) Arduino Hardware I2C for AVR (plain c)
Hardware I2C library for AVR MCUs (lib intended for I2C protocols development in c, for easier ports to other MCUs) Hardware I2C library for AVR MCUs (lib intended for I2C protocols development in c, for easier ports to other MCUs)
## Library choice: ## Library choice
* cI2C library implements I2C bus for AVR tagets (Uno, Nano, Mega...)
* cI2C library implements I2C bus for AVR targets (Uno, Nano, Mega...)
* you may prefer this one when: * you may prefer this one when:
* working on AVR targets * working on AVR targets
* interrupts are not needed * interrupts are not needed
@ -16,64 +18,71 @@ Hardware I2C library for AVR MCUs (lib intended for I2C protocols development in
No refactoring is required when switching between **cI2C** & **WireWrapper** libs; No refactoring is required when switching between **cI2C** & **WireWrapper** libs;
Both libs share same Typedefs, Functions & Parameters. Both libs share same Typedefs, Functions & Parameters.
## Notes: ## Notes
* cI2C is written in plain c (intentionally) * cI2C is written in plain c (intentionally)
* cI2C does not use any interrupt (yet, but soon will have to) * cI2C does not use any interrupt (yet, but soon will have to)
* cI2C is designed to act as bus Master (Slave mode will be considered in future releases) * cI2C is designed to act as bus Master (Slave mode will be considered in future releases)
* cI2C is set to work on AVR targets only * cI2C is set to work on AVR targets only
* for other targets, you may use **WireWrapper** instead (will be using Wire) * for other targets, you may use **WireWrapper** instead (will be using Wire)
## Usage: ## Usage
This library is intended to be able to work with multiple slaves connected on the same I2C bus. This library is intended to be able to work with multiple slaves connected on the same I2C bus.
Thus, the I2C bus and Slaves are defined separately. Thus, the I2C bus and Slaves are defined separately.
* On one hand, I2C bus has to be initialised with appropriate speed: * On one hand, I2C bus has to be initialized with appropriate speed:
* use I2C_init(speed): speed can be choosen from I2C_SPEED enum for convenience, or passing an integer as parameter * use `I2C_init(speed)`: speed can be chosen from `I2C_SPEED` enum for convenience, or passing an integer as parameter
* On the other hand, Slave(s) have to be defined and initialised too: * On the other hand, Slave(s) have to be defined and initialized too:
* use I2C_SLAVE typedef to declare slaves structs * use `I2C_SLAVE` typedef to declare slaves structs
* use I2C_slave_init(pSlave, addr, regsize) * use `I2C_slave_init(pSlave, addr, regsize)`
* **pSlave** is a pointer to the slave struct to initialise * `pSlave`: pointer to the slave struct to initialize
* **addr** is the slave I2C address (don't shift addr, lib takes care of that) * `addr`: slave I2C address (don't shift addr, lib takes care of that)
* **regsize** is the width of internal slave registers (to be choosen from I2C_INT_SIZE) * `regsize`: width of internal slave registers (to be chosen from `I2C_INT_SIZE`)
* in case you need to use custom R/W procedures for a particular slave: * in case you need to use custom R/W procedures for a particular slave:
* use I2C_slave_set_rw_func(pSlave, pFunc, rw) * use `I2C_slave_set_rw_func(pSlave, pFunc, rw)`
* **pSlave** is a pointer to the slave declaration to initialise * `pSlave`: pointer to the slave declaration to initialize
* **pFunc** is a pointer to the Read or Write bypass function * `pFunc`: pointer to the Read or Write bypass function
* **rw** can be choosen from I2C_RW enum (wr=0, rd=1) * `rw`: can be chosen from `I2C_RW` enum (wr=0, rd=1)
After all inits are done, the lib can basically be used this way: After all inits are done, the lib can basically be used this way:
* I2C_read(pSlave, regaddr, pData, bytes) * `I2C_read(pSlave, regaddr, pData, bytes)`
* **pSlave** is a pointer to the slave struct to read from * `pSlave`: pointer to the slave struct to read from
* **regaddr** is the start address to read from * `regaddr`: start address to read from
* **pData** is a pointer to the place where datas read will be stored * `pData`: pointer to the place where datas read will be stored
* **bytes** number of bytes to read from slave * `bytes`: number of bytes to read from slave
* returns true if read is ok, false otherwise * returns `true` if read is ok, `false` otherwise
* I2C_write(pSlave, regaddr, pData, bytes) * `I2C_write(pSlave, regaddr, pData, bytes)`
* **pSlave** is a pointer to the slave struct to write to * `pSlave`: pointer to the slave struct to write to
* **regaddr** is the start address to write to * `regaddr`: start address to write to
* **pData** is a pointer to the block of datas to write to slave * `pData`: pointer to the block of datas to write to slave
* **bytes** number of bytes to write to slave * `bytes`: number of bytes to write to slave
* returns true if write is ok, false otherwise * returns `true` if write is ok, `false` otherwise
## Examples included
## Examples included:
following examples should work with any I2C EEPROM/FRAM with address 0x50 following examples should work with any I2C EEPROM/FRAM with address 0x50
(yet function to get Chip ID are device dependant (and will probably only work on FUJITSU devices)) (yet function to get Chip ID are device dependent (and will probably only work on FUJITSU devices))
* ci2c_master_write.ino: Write some bytes to FRAM and compare them with what's read afterwards * [ci2c_master_write.ino](examples/ci2c_master_write/ci2c_master_write.ino): Write some bytes to FRAM and compare them with what's read afterwards
* ci2c_master_read.ino: Read some bytes in FRAM * [ci2c_master_read.ino](examples/ci2c_master_read/ci2c_master_read.ino): Read some bytes in FRAM
* ci2c_advanced.ino: Redirecting slave write & read functions (to custom functions following typedef) * [ci2c_advanced.ino](examples/ci2c_advanced/ci2c_advanced.ino): Redirecting slave write & read functions (to custom functions following typedef)
Doxygen doc can be generated for the library using doxyfile ## Documentation
## Links: Doxygen doc can be generated using "Doxyfile".
Feel free to share your thoughts @ xgarmanboziax@gmail.com about:
* issues encountered See [generated documentation](https://smfsw.github.io/cI2C/)
* optimisations
* improvements & new functionalities ## Release Notes
See [release notes](https://github.com/SMFSW/cI2C/ReleaseNotes.md)
## See also
**cI2C** **cI2C**
- https://github.com/SMFSW/cI2C * [cI2C github](https://github.com/SMFSW/cI2C) - C implementation of this library
- https://bitbucket.org/SMFSW/ci2c * [cI2C bitbucket](https://bitbucket.org/SMFSW/ci2c) - C implementation of this library
**WireWrapper** **WireWrapper**
- https://github.com/SMFSW/WireWrapper * [WireWrapper github](https://github.com/SMFSW/WireWrapper) - Cpp implementation using Wire Wrapper
- https://bitbucket.org/SMFSW/wirewrapper * [WireWrapper bitbucket](https://bitbucket.org/SMFSW/wirewrapper) - Cpp implementation using Wire Wrapper

View File

@ -1,5 +1,5 @@
Arduino Hardware I2C for AVR (plain c) Arduino Hardware I2C for AVR (plain c)
2017-2017 SMFSW 2017-2018 SMFSW
- cI2C is set to work on AVR targets only - cI2C is set to work on AVR targets only
-> for other targets, you may use WireWrapper instead (will be using Wire) -> for other targets, you may use WireWrapper instead (will be using Wire)
@ -15,6 +15,10 @@ Feel free to share your thoughts @ xgarmanboziax@gmail.com about:
------------ ------------
** Actual: ** Actual:
v1.3 3 May 2018:
- Adding support for unit tests and doxygen documentation generation with Travis CI
- Updated README.md
v1.2 30 Nov 2017: v1.2 30 Nov 2017:
- No internal address transmission when reading/writing to next internal address (make sure not to r/w last 16 address right just after init, otherwise make a dummy of address 0 just before) - No internal address transmission when reading/writing to next internal address (make sure not to r/w last 16 address right just after init, otherwise make a dummy of address 0 just before)

View File

@ -1,5 +1,5 @@
name=cI2C name=cI2C
version=1.2 version=1.3
author=SMFSW <xgarmanboziax@gmail.com> author=SMFSW <xgarmanboziax@gmail.com>
maintainer=SMFSW <xgarmanboziax@gmail.com> maintainer=SMFSW <xgarmanboziax@gmail.com>
sentence=Arduino Hardware I2C for AVR (in plain c) sentence=Arduino Hardware I2C for AVR (in plain c)

View File

@ -1,6 +1,5 @@
/*!\file ci2c.c /*!\file ci2c.c
** \author SMFSW ** \author SMFSW
** \version 1.2
** \copyright MIT SMFSW (2017) ** \copyright MIT SMFSW (2017)
** \brief arduino master i2c in plain c code ** \brief arduino master i2c in plain c code
** \warning Don't access (r/w) last 16b internal address byte alone right after init, this would lead to hazardous result (in such case, make a dummy read of addr 0 before) ** \warning Don't access (r/w) last 16b internal address byte alone right after init, this would lead to hazardous result (in such case, make a dummy read of addr 0 before)

View File

@ -1,6 +1,5 @@
/*!\file ci2c.h /*!\file ci2c.h
** \author SMFSW ** \author SMFSW
** \version 1.2
** \copyright MIT SMFSW (2017) ** \copyright MIT SMFSW (2017)
** \brief arduino i2c in plain c declarations ** \brief arduino i2c in plain c declarations
** \warning Don't access (r/w) last 16b internal address byte alone right after init, this would lead to hazardous result (in such case, make a dummy read of addr 0 before) ** \warning Don't access (r/w) last 16b internal address byte alone right after init, this would lead to hazardous result (in such case, make a dummy read of addr 0 before)