ASURO Library  2.80
Macros | Functions
i2c.h File Reference

Definitionen und Funktionen zum I2C Bus. More...

#include "myasuro.h"
Include dependency graph for i2c.h:

Go to the source code of this file.

Macros

#define READ   1
 
#define WRITE   0
 
#define ACK   1
 
#define NAK   0
 
#define SDA   MY_I2C_SDA
 
#define SCL   MY_I2C_SCL
 
#define SDA_DDR   DDRC
 
#define SCL_DDR   DDRC
 
#define SDA_PIN   PINC
 
#define SCL_PIN   PINC
 
#define SDA_PORT   PORTC
 
#define SCL_PORT   PORTC
 
#define NOP   asm volatile("nop") /*<! No Operation */
 
#define QDEL   NOP; NOP; NOP; NOP; NOP /*<! 1/4 Delay */
 
#define HDEL   QDEL; QDEL /*<! 1/2 Delay */
 
#define SDA_HI   SDA_PORT |= (1 << SDA)
 
#define SDA_LO   SDA_PORT &= ~(1 << SDA)
 
#define SCL_HI   SCL_PORT |= (1 << SCL)
 
#define SCL_LO   SCL_PORT &= ~(1 << SCL)
 
#define SCL_TOGGLE   HDEL; SCL_HI; HDEL; SCL_LO
 
#define I2C_START   SDA_LO; QDEL; SCL_LO
 
#define I2C_STOP   HDEL; SCL_HI; QDEL; SDA_HI; HDEL
 

Functions

void InitI2C (void)
 Init I2C Hardware.
 
unsigned char WriteI2C (unsigned char byte)
 Write a Character to I2C Bus.
 
unsigned char ReadI2C (unsigned char nak)
 Read a Character from I2C Bus.
 
unsigned char StartI2C (unsigned char device)
 Start I2C transmission for a specific I2C device.
 
void StopI2C (void)
 Stop I2C transmission. Leave I2C bus in idle mode.
 

Detailed Description

Definitionen und Funktionen zum I2C Bus.

I2C Einfuehrung
I2C ist ein 2 Draht Bus-System das von Philips entwickelt wurde. Dazu wird lediglich eine Datenleitung und eine Taktleitung benötigt (und natuerlich eine gemeinsame Masseleitung). Es gibt eine Reihe von ICs mit I2C Bus Schnittstelle (Digital Port Erweiterungen, A/D Wandler, EEPROMs etc.) Damit ergibt sich eine Vielzahl von Moeglichkeiten um die begrenzten IO Ressourcen des ASUROs zu erweitern. Bis zu 127 Teilnehmer sind an einem I2C Bus anschliessbar. Dazu werden lediglich 2 Port Pis des ASUROs benötigt. Bie meissten ATmel AVR Prozessoren unterstuetzen die I2C Schnittstelle per Hardware, TWI (Two Wire Interface) genannt.
I2C am ASURO
Die Hardware TWI (I2C) Ports sind beim ASURO leider durch den Batterie Abfrage A/D Port und dem Tastsensor A/D Port belegt. Um die I2C Schnittstelle ohne Umbau des ASUROs zu realisieren, wird der I2C BUs mit Software emuliert. Dabei werden füer den I2C Bus die Ports der ASURO Erweiterungsplatine verwendet. Dies sind ADC2 fuer die I2C Taktleitung (SCL) und ADC3 fuer die I2C Datenleitung (SDA). Leider geht dadurch die Funktion des Liniensensors verloren. Da die beiden Fototransistoren ebenfalls die Ports ADC2 und ADC3 belegen. Ausloeten braucht man die Fototransistoren zum Glueck nicht.
I2C Anwendungen
Ueber den I2C Bus lassen sich z.B. folgende Erweiterungen realisieren.
  • Eine Digitalport Erweiterung, z.B. 8 IO Ports mit dem PCF8574
  • Eine Analogport Erweiterung, z.B. 4 A/D Ports und 1 D/A Port mit dem PCF8594
  • Ein LCD Modul mithilfe der Digitalporterweiterung
  • Ein weiterer AVR Prozessor als I2C Slave, als universelle Porterweiterung.
Author
raid_ox
Version
V001 - 17.02.2007 - raid_ox
Erste Implementierung
V002 - 10.02.2007 - m.a.r.v.i.n
Absplittung von asuro.h in eigene Header-Datei,
Doxygen Kommentare (KEINE Funktionsänderung)

Definition in file i2c.h.

Macro Definition Documentation

#define ACK   1

Definition at line 75 of file i2c.h.

#define HDEL   QDEL; QDEL /*<! 1/2 Delay */

Definition at line 92 of file i2c.h.

#define I2C_START   SDA_LO; QDEL; SCL_LO

Definition at line 101 of file i2c.h.

#define I2C_STOP   HDEL; SCL_HI; QDEL; SDA_HI; HDEL

Definition at line 102 of file i2c.h.

#define NAK   0

Definition at line 76 of file i2c.h.

#define NOP   asm volatile("nop") /*<! No Operation */

Definition at line 90 of file i2c.h.

#define QDEL   NOP; NOP; NOP; NOP; NOP /*<! 1/4 Delay */

Definition at line 91 of file i2c.h.

#define READ   1

Definition at line 73 of file i2c.h.

#define SCL   MY_I2C_SCL

Definition at line 81 of file i2c.h.

#define SCL_DDR   DDRC

Definition at line 84 of file i2c.h.

#define SCL_HI   SCL_PORT |= (1 << SCL)

Definition at line 97 of file i2c.h.

#define SCL_LO   SCL_PORT &= ~(1 << SCL)

Definition at line 98 of file i2c.h.

#define SCL_PIN   PINC

Definition at line 86 of file i2c.h.

#define SCL_PORT   PORTC

Definition at line 88 of file i2c.h.

#define SCL_TOGGLE   HDEL; SCL_HI; HDEL; SCL_LO

Definition at line 100 of file i2c.h.

#define SDA   MY_I2C_SDA

Definition at line 80 of file i2c.h.

#define SDA_DDR   DDRC

Definition at line 83 of file i2c.h.

#define SDA_HI   SDA_PORT |= (1 << SDA)

Definition at line 94 of file i2c.h.

#define SDA_LO   SDA_PORT &= ~(1 << SDA)

Definition at line 95 of file i2c.h.

#define SDA_PIN   PINC

Definition at line 85 of file i2c.h.

#define SDA_PORT   PORTC

Definition at line 87 of file i2c.h.

#define WRITE   0

Definition at line 74 of file i2c.h.

Function Documentation

void InitI2C ( void  )

Init I2C Hardware.

unsigned char ReadI2C ( unsigned char  nak)

Read a Character from I2C Bus.

Parameters
nakAfter receive send ack or nak
Returns
received character
unsigned char StartI2C ( unsigned char  device)

Start I2C transmission for a specific I2C device.

Parameters
devicedevice address
Returns
I2C Status
void StopI2C ( void  )

Stop I2C transmission. Leave I2C bus in idle mode.

unsigned char WriteI2C ( unsigned char  byte)

Write a Character to I2C Bus.

Parameters
byteCharacter to send
Returns
status of I2C