mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik i2c slave code


Autor: Danilo Reinhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ist schon mal jemand über einen I2C Slave code möglichst in C
gestolpert? Master gibt es ja zur Genüge ;)

Ciao

Autor: flinkflash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

unter http://hubbard.engr.scu.edu/embedded/avr/avrlib/index.html
findest du was du suchst. Momentan bin ich dabei, damit rumzuspielen.
Simuliere den I2C Master mit VMLab. Das Ding hat allerdings einige Bugs
im I2C Master Module. Kennst Du noch eine andere
Simulationsumgebung???

cu
flinkflash

http://www.krabbelbot.de

Autor: Danilo Reinhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die avrlib hatte ich auch. Scheint net so schlecht zu sein. Leider
wollten bisher zumindest die i2c routinen net funktionieren. Bzw bei
meinem aktuellen Problem helfen sie nicht, da sie nur für den Master
modus funktionieren. Ich brauchte ja Slave, was zwar nich so schwierig
ist, leider fehlt mir aber im Moment die Idee das sparsam zu
realisieren.

Ciao und Danke!

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

alle Megas haben ein TWI (aka I2C) Interface hardwaremäßig drin. Eine
relativ einfache Nutzung (übertragen von 2 Byte als Slave-Transmitter)
sieht dann so aus:

/**
  TWI-Schnittstelle initialisieren<br>
  Slave Transmitter Mode
*/
void i2c_init()
{
  TWAR = ASR_ADRESS;
  TWCR = (1<<TWEN)|(1<<TWEA)|(1<<TWIE);
}

/**
  Behandelt die INT's des TWI
*/
SIGNAL(SIG_2WIRE_SERIAL)
{
  if(TWSR==0xA8)
  {
    TWDR=i2c_val1;
    TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA)|(1<<TWIE);
  }
  else if((TWSR==0xB8)||(TWSR==0xB0))
  {
    TWDR=i2c_val2;
    TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWIE);
  }
  else if(TWSR==0xC0)
  {
    TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA)|(1<<TWIE);
  }
}

Matthias

Autor: flinkflash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

die Slave Routinen von AVRLib funktionieren im VMLab Simulator
einwandfrei.

cu
flinkflash

http://www.krabbelbot.de

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.