twislave.h File Reference

I2C slave library. More...

#include <util/twi.h>
#include <avr/interrupt.h>
#include <stdint.h>

Go to the source code of this file.

Defines

#define buffer_size   9
 Groesse der Buffer in Byte (2..254).

Functions

void init_twi_slave (uint8_t adr)
 Initalisierung des TWI-Interface.

Variables

volatile uint8_t rxbuffer [buffer_size]
 Der Buffer, in dem die empfangenen Daten gespeichert werden.
volatile uint8_t txbuffer [buffer_size]
 Der Sendebuffer, der vom Master ausgelesen werden kann.


Detailed Description

I2C slave library.

taken from http://www.roboternetz.de/wissen/index.php/TWI_Slave_mit_avr-gcc

Betrieb eines AVRs mit Hardware-TWI-Schnittstelle als Slave. Zu Beginn muss init_twi_slave mit der gewuenschten Slave-Adresse als Parameter aufgerufen werden. Der Datenaustausch mit dem Master erfolgt ueber die Buffer rxbuffer und txbuffer, auf die von Master und Slave zugegriffen werden kann. rxbuffer und txbuffer sind globale Variablen (Array aus uint8_t). Die Ansteuerung des rxbuffers, in den der Master schreiben kann, erfolgt aehnlich wie bei einem normalen I2C-EEPROM. Man sendet zunaechst die Bufferposition, an die man schreiben will, und dann die Daten. Die Bufferposition wird automatisch hochgezaehlt, sodass man mehrere Datenbytes hintereinander schreiben kann, ohne jedesmal die Bufferadresse zu schreiben. Um den txbuffer vom Master aus zu lesen, uebertraegt man zunaechst in einem Schreibzugriff die gewuenschte Bufferposition und liest dann nach einem repeated start die Daten aus. Die Bufferposition wird automatisch hochgezaehlt, sodass man mehrere Datenbytes hintereinander lesen kann, ohne jedesmal die Bufferposition zu schreiben.

Autor: Uwe Grosse-Wortmann (uwegw) Status: Testphase, keine Garantie fuer ordnungsgemaesse Funktion! letze Aenderungen: 23.03.07 Makros fuer TWCR eingefuegt. Abbruch des Sendens, wenn der TXbuffer komplett gesendet wurde. 24.03.07 verbotene Buffergroessen abgefangen 25.03.07 noetige externe Bibliotheken eingebunden

Abgefangene Fehlbedienung durch den Master:

Author:
Uwe Grosse-Wortmann (uwegw), reformatted by Ronald Schaten <ronald@schatenseite.de>
Version:
Id
twislave.h,v 1.1 2008/07/16 05:44:45 rschaten Exp

License: GNU GPL v2 (see License.txt)

Definition in file twislave.h.


Define Documentation

#define buffer_size   9

Groesse der Buffer in Byte (2..254).

Definition at line 52 of file twislave.h.

Referenced by ISR().


Function Documentation

void init_twi_slave ( uint8_t  adr  ) 

Initalisierung des TWI-Interface.

Muss zu Beginn aufgerufen werden, sowie bei einem Wechsel der Slave Adresse.

Parameters:
adr gewuenschte Slave-Adresse

Definition at line 37 of file twislave.c.

References buffer_adr.

Referenced by main().


Variable Documentation

volatile uint8_t rxbuffer[buffer_size]

Der Buffer, in dem die empfangenen Daten gespeichert werden.

Der Slave funktioniert aehnlich wie ein normales Speicher-IC [I2C-EEPROM], man sendet die Adresse, an die man schreiben will, dann die Daten, die interne Speicher-Adresse wird dabei automatisch hochgezaehlt.

Definition at line 61 of file twislave.h.

Referenced by ISR(), and main().

volatile uint8_t txbuffer[buffer_size]

Der Sendebuffer, der vom Master ausgelesen werden kann.

Definition at line 66 of file twislave.h.

Referenced by ISR().


Generated on Wed May 6 20:07:40 2009 for I2C LED Matrix by  doxygen 1.5.7.1