-         

Ergebnis 1 bis 3 von 3

Thema: TWI MultiMaster Problem beim Umschalten Slave -> Master

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.07.2006
    Alter
    45
    Beiträge
    23

    TWI MultiMaster Problem beim Umschalten Slave -> Master

    Anzeige

    Hallo zusammen,

    ich habe schon mittlerweile ne ganze Zeit dieses MM-Problem(immer wieder gegogelt und wieder neu probiert).

    Mittlerweile bin ich auf den Fehler schon relativ nahe gekommen, und hoffe das etz endgültig lösen zu können ;-((((

    Ich habe eine mini MM-Umgebung mit 2AVR M16 und einem Dragon zum debuggen.

    Beide M16 können als Slave empfangen und als Master senden(MT und SR).....MR und ST sind nicht implementiert.

    Das ganze basiert auf der Bibl. von Atmel, also in C. Den Code poste ich natürlich bei Bedarf, aber ich denke das das ganze nicht am Code direkt sondern eher an der Vorgehensweise liegt.

    Zunächst init. ich beide MCs als Slave, setzte die Register

    TWEN, TWIE (TWSR wird mit ISR abgefragt), für den Slave-Mode TWEA damit ein MT weiss, das der Slave erfolgreich empfangen hat, und cleare noch mit TWINT!

    somit sind beide MCs im Slave-Mode.

    wenn nun ein MC sendet, setzt er das StartBit und es wird zum testen genau ein Byte übertragen(plus Slave-Adresse und Write natürlich)

    das ganze funzt auch in beide Richtung(nach einem Reset ohne Prg-Änderung oder HW-Änderung), soll heissen beide MCs können von Slave auf Master umschalten das Byte senden, und quitieren dann mit dem Stop-Bit(welches auch vom Slave empfangen wird)

    Der Fehler tritt nun auf, wenn nachdem ein Slave vom Master adressiert wurde, mit ACK bestätigt hat und der Master sein Stop-Bit gesendet hat. Jetzt müsste der Ursprüngliche Slave, Master werden und ebenfalls das StartBit senden(was genau auf dem Bus los ist kann ich nicht sagen, da mir die HW fehlt, der Bus ist aber High, also kein MC nuckelt dran). Nun die Fehler die laut Dragon auftreten:

    Entweder das StartBit wird gesetzt, die ISR für TWSTART wird aber nicht aufgerufen. Soll heissen, der Master merkt anscheinend nicht das er das Start-Signal gesendet hat.

    Oder das StartBit wird gesetzt die ISR wird aufgerufen läuft dann aber auf Bus-Fehler.

    Manchmal, wenn ich mit dem Dragon debugge funzt es sogar, so wie es sollte.

    Ich habe mittlerweile auch schon schleifen eingebaut die bei Master-Slave Umschaltung eine gewisse Anzahl am Cycles warten (10, 20 und 200 schon probiert). Der Fehler tritt zu 100% auf wenn ich nicht mit dem Dragon debugge, aber mit dem Dragon funzt es eben AbundZu mal ?-)))))


    hoffe es kann jemand helfen

    Cu

    Martin

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Schau mal, ob du da was findest. Wechselseitiges Master-Slaven kann lustig sein
    http://www.roboternetz.de/wissen/ind...is_Multimaster
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.07.2006
    Alter
    45
    Beiträge
    23

    TWI MultiMaster Problem gelöst

    Habe das mittlerweile gefixt.

    Das Problem war, das das TWI anscheinend länger braucht um die Stop-Cond durchzubringen(Die 200 Counts reichen nicht) . Habe das bei Peter Fleury gefunden. Ich warte ganz einfach bis das TWSR die Stop-Cond nicht mehr drinstehen hat(Wenn im Master-Modus)

    while(TWCR & (1<<TWSTO));

    das wars, so einfach kanns sein )))

    cu

    Martin

Berechtigungen

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