www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Slave im Tiny26


Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein kleines Problem in der I2C Slave implementation bei dem
Tiny26 Controller, ich will den Controller als I2C Slave über eine
feste adresse ansprechen, aber irgendwie komme ich aus den grundlagen
nicht raus.

;//Start Condition IE, Couner Overflow IE, Sel. Two Wire Moder 10, ext.
Clock Source,
I2C_Init:
  ldi temp0,
(1<<USISIE)|(1<<USIOIE)|(1<<USIWM1)|(0<<USIWM0)|(1<<USICS1)|(0<<USICS0)| 
(0<<USICLK)|(0<<USITC)
  out USICR, temp0

  sei  ;// Global IRQ Enable

damit initalisiere ich die USI Schnittstelle, PB0 und PB2 sind als
eingänge mit PullUp Widerständen konfiguriert.

Wie kann ich nun Feststellen das ich bereits 8 bit vom master empfangen
habe? es sind ja bit 1-7 die adresse und bit 0 gibt die Datenrichtung
an.

Ich will nur ein paar datenbytes an den master senden. wenn ich erkannt
habe das mein Controller gemeint ist müsste ich ja ein ACK senden und
meine Daten in das USIDR register legen und dann müsste ja vom master
ein ACK kommen. wie merke erkenne ich das?
um die ganze kommunikation zu beenden gibt es ja die Stop Condition,
die ja auch ein Flag auslöst.
Ist es überhaut sinvoll die USI Schnittstelle für ne I2C slave
implementation zu benutzen?
Könnte mir mal jemand mit ein paar zeilen Code zb. für die Adress
erkennng aushelfen?
Die Atmel Appnotes habe ich bereits gelesen , aber die waren mir wenig
hilfreich da dort nur von kompletten Software I2C oder kompletten HW
I2C (TWI) die rede war.

Danke


Sebastian

Autor: Beda Ruedi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

Schau mal da:

http://www.avrfreaks.net/Tools/showtools.php?ToolID=452

Gruss
Ruedi

Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Beda Ruedi

danke die PDF datei ist sehr hilfreich.

Aber ne kleine fage habe ich dazu noch, warum muss man die SCL Leitung,
also die Clock Leitung im Slave Betrieb als ausgang betreiben. Müsste
man nicht die Clock leitung als eingang konfigurieren? Lt. PDF wird in
Step1 die SCL leitung als Output im DDRx Register geschalten und der
ausgang im Portx Register auf 1 gesetzt.
könnte mir das mal jemand plausibel erklären?

Danke
Sebastian

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.