Difference between revisions of "I2C/Slave Example (Deutsch)"
(Created page with "In diesem Beispiel wird gezeigt wie man eine TWI Verbindung zwischen Ethersex und einem zweiten AVR herstellen kann.<br/> == Konfiguration == Zuerst muss Ethersex konfiguriert we…") |
(format) |
||
| Line 1: | Line 1: | ||
| + | {{i18n|I2C/Slave Example}} | ||
In diesem Beispiel wird gezeigt wie man eine TWI Verbindung zwischen Ethersex und einem zweiten AVR herstellen kann.<br/> | In diesem Beispiel wird gezeigt wie man eine TWI Verbindung zwischen Ethersex und einem zweiten AVR herstellen kann.<br/> | ||
== Konfiguration == | == Konfiguration == | ||
| Line 25: | Line 26: | ||
Nun senden wir einen ECMD Befehl: | Nun senden wir einen ECMD Befehl: | ||
<source lang=c> | <source lang=c> | ||
| − | + | if(!(i2c_start( E6WR ))) //Slave bereit zum schreiben? | |
| − | + | { | |
| − | + | i2c_write('i'); | |
| − | + | i2c_write('p'); | |
| − | + | i2c_write('\0'); //Befehl muss 0 Terminiert werden! | |
| − | + | } | |
| − | |||
| − | |||
</source> | </source> | ||
== Daten Empfangen == | == Daten Empfangen == | ||
| Line 38: | Line 37: | ||
Ethersex empfängt nun den Befehl und Wertet ihn automatisch aus. Jetzt müssen wir nur mehr das Ergebnis auslesen: | Ethersex empfängt nun den Befehl und Wertet ihn automatisch aus. Jetzt müssen wir nur mehr das Ergebnis auslesen: | ||
<source lang=c> | <source lang=c> | ||
| − | + | if(!(i2c_rep_start( E6RD ))) //Slave bereit zum lesen? | |
| − | + | { | |
| − | + | for(n=0;n<E6BUFLEN;n++) | |
| − | + | { | |
| − | + | E6_data[n] = i2c_readAck(); | |
| − | + | if(E6_data[n] == '\0') | |
| − | + | break; | |
| − | + | if(E6_data [n] == '\n') | |
| − | + | { | |
| − | + | E6_data[n+1] = '\0'; | |
| − | + | break; | |
| − | + | } | |
| − | + | } | |
| − | + | i2c_readNak(); | |
| − | + | i2c_stop(); | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
</source> | </source> | ||
Nun haben wir die IP Adresse im E6_data Array stehen. | Nun haben wir die IP Adresse im E6_data Array stehen. | ||
Revision as of 17:34, 7 April 2012
In diesem Beispiel wird gezeigt wie man eine TWI Verbindung zwischen Ethersex und einem zweiten AVR herstellen kann.
Konfiguration
Zuerst muss Ethersex konfiguriert werden.
Menuconfig -> Protocols -> ECMD -> I2C aktivieren
Die Standardadresse ist 8 und die Pufferlänge 50
In diesem Beispiel wird die TWI Lib von P. Fleury verwendet.
Definition
Zuerst Definieren wir die Adresse für Lesen und Schreiben
#define E6WR (0x8 << 1) | I2C_WRITE
#define E6RD (0x8 << 1) | I2C_READBefehl senden
Danach benötigen wir einen Puffer für die Ausgelesenen Daten Z.B.
#define E6BUFLEN 50
char E6_data[E6BUFLEN];Nun senden wir einen ECMD Befehl:
if(!(i2c_start( E6WR ))) //Slave bereit zum schreiben?
{
i2c_write('i');
i2c_write('p');
i2c_write('\0'); //Befehl muss 0 Terminiert werden!
}Daten Empfangen
Ethersex empfängt nun den Befehl und Wertet ihn automatisch aus. Jetzt müssen wir nur mehr das Ergebnis auslesen:
if(!(i2c_rep_start( E6RD ))) //Slave bereit zum lesen?
{
for(n=0;n<E6BUFLEN;n++)
{
E6_data[n] = i2c_readAck();
if(E6_data[n] == '\0')
break;
if(E6_data [n] == '\n')
{
E6_data[n+1] = '\0';
break;
}
}
i2c_readNak();
i2c_stop();
}Nun haben wir die IP Adresse im E6_data Array stehen.