xmega_tutorial.jpg

Bewertung:  / 4
SchwachSuper 

Diese Biblitothek von Peter Fleury ermöglicht eine I2C/TWI Kommunikation über das Hardware I2C/TWI Interface von Atmel. Der Controller arbeitet als Master und regelt den Datentransport in dem Bussystem. Unterstützt werden eigentlich alle Controller der Reihe ATmega von ATmel.

I²C / TWI

I²C ist ein synchroner serieller Zweidraht-Bus (eine Daten- und eine Taktleitung), der für die Kommunikation zwischen ICs über kleine Distanzen geeignet ist. Entwickelt wurde er Anfang der 80er Jahre von Philips. Aus Lizenzgründen heißt der I²C Bus bei manchen Herstellern auch TWI, two wire interface.

Software - Beispiel für I2C Master

Beispiel für die Ansteuerung im Modus Single-Ended mit externerReferenzspannung an Pin Ref.
Benutzt wurde die I2C/TWI Lib von Peter Fleury. Der 12Bit Wert wird vom Max1238 über 2 Nachrichten zu je 1 Byte gesendet. Nachteilig bei dem verwendeten Chip ist, dass der Max1238 die ungenutzen Bit-Stellen mit 1 auffüllt.

 

Test I2C/TWI mit Max1238 - Single ended
#include "i2cmaster.h"
 
 
//############ Adresse MAX1238
#define Adr_MAX1238 0b01101010
 
Data_Array_Messwert[11];
 
//############ init MAX1238 via I2C
void ADC_MAX1238_init(void)
{
i2c_start_wait(Adr_MAX1238+I2C_WRITE);// device address & write mode
i2c_write(0b10100010); // write Register
i2c_write(0b00010111); // write Register
i2c_stop(); // stop i2c
}
 
//############ auslesen MAX1238 via I2C
void ADC_MAX1238(void)
{
uint8_t hig,low ; // hight und Low Byte
 
i2c_start_wait(Adr_MAX1238+I2C_READ); // device address & read mode
for (uint8_t i=0; i10; i++) // alle 10 Kanäle auslesen
{
low = i2c_read(1);
 
low &= ~((1 << 7) | (1<<6)| (1<<5)| (1<<4) );
hig = i2c_read(1);
 
Data_Array_Messwert[i]= ((low << 8)| hig);
}
i2c_stop();
}
//########################### main
int main(void)
{ 
cli();
i2c_init();
sei();
ADC_MAX1238_init();
 
while(1)
 {
 //#################### while 
 ADC_MAX1238();
 //#################### end while 
 }
}

 

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 verschiedene Messbausteine, wie Analog/Digital Wandler oder Temperatursensoren als Slaves für Messaufgaben verwendet werden. Die von den Slaves erfassten Daten werden durch den Master angefordert und anschließend vom Slave versendet.

Dieser Struktur ermöglicht es viele Aufgaben aus dem Master in verschiedene Slaves aus zulagern. Dadurch kann sich der Master um die eigentlich wichtigen Aufgaben kümmern.

 

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!

Links

 
Produktseite
Produktseite

Downloads

Kommentar hinzufügen
  • Keine Kommentare gefunden

Neuste Beiträge

30/08/2016
Es gibt nun endlich ein Update für die Tinyg CNC Controller Hardware und der dazu gehörenden PC Software...
03/09/2015
In den letzten Monaten habe ich lange das CAD Programm und meinen kleinen Ultimaker 3D Drucker gequält....
15/05/2015
Zuerst wurde eine kleine Katze am Computer konstruiert. Der erste Druck mit 0,3mm Schichtstärke war...
06/05/2015
Da beim Ultimaker keine Beleuchtung des Arbeitstisches vorgesehen ist, muss ich mir hier selber eine...