-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Probleme mit I2C/TWI-Slave -> Master funktioniert

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624

    Probleme mit I2C/TWI-Slave -> Master funktioniert

    Anzeige

    Hi @ all!
    Ich habe mich in letzter Zeit intensivst mit dem Hardware-I2C/TWI-Bus der AVR's beschäftigt.
    Der Mastertransmitter (AT-Mega16) funktioniert mittlerweile einwandfrei.
    Ich habe ihn mit dem Porterweiterungsbaustein PCF8574 ausprobiert.
    Der PCF8574 hat die Adresse 0b01000000 (0x40).
    Die selbe Adresse habe ich dem Slavereceiver (AT-Mega8) auch gegeben.
    Mit einem Test (LED's an PORTD) habe ich herausgefunden, dass der Slave die Adresse erhält und mit einem ACK bestätigt (Statuscode 0x60), doch die Daten bestätigt er nicht (Statuscode 0x80).
    Stattdessen gibt er seine Slaveadresse an PORTD aus!
    Woran könnte das liegen, die Leitungen sind alle durchgeprüft!
    Unten findet ihr die Codes, Befehle wie "cbi PORTD , 0" sind nur für den oben beschriebenen Test!

    Danke für eure Hilfe! :o)
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    könnte es daran liegen, dass du zwei Geräten dieselbe Addresse gibst, ich weiß zwar nicht, welche Fehler daraus resultieren, aber, änder halt mal die Addresse des ATMEGA8, vielleicht hilfts ja

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    N'Abend Pascal! :o)
    Leider liegt es daran nicht, denn ich nehme immer den anderen vom Bus ab! :o(
    Trotzdem Danke! :o)

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    sei ; Interrupts global aktivieren ---> braucht man das überhaupt? ;o)
    ich denke schon, ansonsten hast du doch keine Interrupts...

    bei mir war das so, dass ich nach dem "sei" noch das TWINT-Bit im TWCR-Register auf 1 setzen musste, ansonsten ging es glaube ich nicht
    hab ich das bei dir übersehen, oder geht das auch so?

    weiterhin musst du in der ISR des TWI das TWINT-Bit wieder auf 1 setzen, sonst arbeitet das TWI-Modul nicht weiter(das schaltet sich nicht automatisch auf 1)

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hallo Pascal! :o)
    Beim Slave war mir das klar, aber beim Master, muss man da auch sei setzen?
    Was meinst Du mit ISR?
    Was die beiden letzten Punkte angeht, so werde ich das gleich einmal ausprobieren!

    Danke für Deine Hilfe! :o)

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    ups, hab mich nicht deutlich ausgedrückt...wenn du den Interrupt beim Master nicht verwendest, brauchst du das sei auch nicht, ich hab mich auf den Slave bezogen, nur nicht darauf hingewiesen...

    ISR = Interrupt Service Routine(ich hab gedacht, dass das ist eine gängige Abkürzung ist)

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Gut, dann kann ich das beim Master ja be-sei-tigen! ;o)

    Ich habe schon gerätselt und war garnicht weit weg!
    Ich hatte im Kopf: "Interrupt Slave Routine"
    Naja, jetzt bin ich schlauer! ;o)

    Ich probiere es jetzt gleich mal aus und melde mich dann wieder!
    Danke! :o)

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    ich hab mir grad den Mastercode ein wenig angeschaut...ich finde, 0x3 ist als Wert für TWBR recht wenig, ich verwende 0xA und das ist auch das, was das Datenblatt als Minimum empfiehlt

    vielleicht ist die Bezeichnung ISR auch nicht die normale, ich hab sie halt mal irgendwo aufgeschnappt und seitdem verwende ich die

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hallo Pascal!
    Ich habe schon von vielen gehört, dass die nur 0x1 usw. benutzen!
    Bei 16MHz brauche ich Prescaler = 1 und Bitrate = 3, da ich sonst nicht auf glatte 400kHz komme!
    Der PCF8574 frissts ja! *lol*

    Naja, das Missverständnis ist ja aufgeklährt! ;o)

    Bin gleich soweit, das mit dem sei weglassen im Mastercode funzt und den Rest probiere ich jetzt auch gleich aus! :o)

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    29
    Beiträge
    2.624
    Hast Du TWCR erst nach dem sei eingestellt?

    Warum und wo muss ich denn das TWINT wieder setzen?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •