AVR Library I2C/TWI Slave USI

Diese AVR Library I2C/TWI Slave USI ermöglicht eine I2C/TWI Kommunikation über das USI Interface von Atmel. Der verwendete Controller wird dabei als Slave in dem Bussystem verwendet. Neben Controllern der Reihe ATTiny, wie dem ATTiny2313, werden auch eine Reihe von anderen Controllern mit USI Interface unterstützt. Die Bibliothek hat sich in Ihrer Funktion bewährt und erfüllt zuverlässig ihre Aufgabe.

Der I2C, bzw. TWi Slave ist so programmiert, dass dieser wie ein I2C-Speicher (I2C-Epprom) funktioniert.

USI

USI (Universal Serial Interface) steht für Universelle serielle Schnittstelle, die vor allem in kleineren Atmel AVR Controllern, wie z.B. beim ATTiny2313, aber auch in einigen ATMegas anzutreffen ist.

Wie der Name schon sagt, handelt es sich dabei um ein All-in-One-Interface, das lediglich die Hardware zur seriellen Kommunikation enthält, jedoch praktisch keine Protokoll-Implementierung. Diese muss in der Software implementiert werden, je nachdem, welchen Interface-Typ man nutzen will.

Unterstützt werden bisher folgende Controller:

ATtiny2313, ATtiny25, ATtiny45, ATtiny85, ATtiny26, ATtiny261, ATtiny461, ATtiny861, ATmega165, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega329, ATmega3290, ATmega169,ATtiny24, ATtiny44, ATtiny88

USI – Slave Epprom

alle Beschreibungen findet man in der “usiTwiSlave.h” Datei.

The Slave works like a I2C-EEPROM.

Read Bytes from the Slave (read data from Slave txbuffer)

  1. send – Slave-Address + write
  2. send – Buffer-Address, Address in which you like to start with write or read.
  3. send – Slave-Address + read data
  4. send – data = i2c_readAck(), Demands the Slave to send data, start by txbuffer[Buffer-Address].

Write Bytes to the Slave Registers (write data in to Slave rxbuffer)

  1. send – Slave-Address + write
  2. send – Buffer-Address, Address in which you like to start with write or read.
  3. send – data, writes data in the buffer, start by rxbuffer[Buffer-Address] Write Bytes to the Slave Registers (write data in to Slave rxbuffer)
  1. send – Slave-Address + write
  2. send – Buffer-Address, Address in which you like to start with write or read.
  3. send – data, writes data in the buffer, start by rxbuffer[Buffer-Address]

Info:

  • you have to change the buffer_size in the usiTwiSlave.h file
  • Buffer-Address is counted up automatically
  • if Buffer-Address > buffersize –> start by Buffer-Address= 0
  • You have to change the CPU Frequenz in the files main.c and makefile !!!!

{gallery}elektronik, width=500,height=50, single=I2C_USI_Slave_Epprom.JPG{/gallery}

Software – Beispiel für I2C Master

Beispiel Code die Abfrage des Slaves durch den Master mit der I2C Lib von Peter Fleury.

Abfrage einzelner Bytes.

Beispiel Code die Abfrage des Slaves durch den Master mit der I2C Lib von Peter Fleury.

Abfrage einzelner Bytes (8 Bits) und anschließend zusammenfügen zu einem Word (16 Bit)

Beispiel Code für das senden von Daten zu einem Slave durch den Master mit der I2C Lib von Peter Fleury.

Senden einzelner Bytes (8 Bits) und anschließend senden von einem Word (16 Bit), durch zerlegen in 2 Bytes

Anwendungen

Aufbau einer Kommunikation von mehreren Controllern untereinander. Dabei ist ein Controller der Master, welcher den Slaves Informationen zusenden oder von Ihnen anfordern kann.

Bei einem Messsystem könnten die einzelnen Slaves verschiedene Messaufgaben haben. Die fertigen Daten werden von dem Slave in den Versendespeicher abgelegt. Fordert der Master Daten an, so werden diese in einer Interruptroutine als Antwort gesendet.

Aufgrund dieser Struktur muss sich der Master nicht um die vielleicht rechentechnisch aufwendigen Aufgaben, wie das Messen und die anschließende Kalibrierung kümmern. Der Master kann sofort die empfangenen Daten der einzelnen Slaves auswerten oder mit ihnen weiter rechnen.

Beispiel

Die Biblitothek enthält ein voll funktionsfähiges Beispiel, inclusive makefile. Das Programm sollte sich ohne Probleme mit dem Programmers Notepad kompilieren lassen.

Viel erfolg!

Erweiterungen & Status

  • 01.05.2010 – Version 1v3
  • 04.08.2011 – ATtiny24, ATtiny44, ATtiny88
  • 21.10.2011 – bisher 1400 Downloads

Bitte melden Sie in die von Ihnen in der Bibliothek gefunden Fehler oder von Ihnen vorgenommene Änderungen, die auch anderen helfen können, damit die Software kontinuierlich weiter verbessert und auf dem aktuellen Stand gehalten wird. Vielen Dank.

Links
Hilfe gibt es hier:
Produktseite
Produktseite
www.mikrocontroller.net
Atmel – USI – Slave
Atmel – USI – Master

Downloads