mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu MSP430 USCI I2C


Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mal eine Frage zur I²C Bus Kommunikation beim MSP430F2252 (USCI).
Laut User Guide soll nach absenden der Adresse und empfang des ACK das 
UCTXSTT Bit auf 0 gehen. Das wollte ich in meinem Code benutzen, aber so 
wie es aussieht wird das Bit nicht 0. Mach ich einen Gedankenfehler oder 
ist der Code Mist??

Den auskommentierten Bereich würde ich gerne nutzen, aber er bleibt bei 
der Abfrage des UCTXSTT Bit hängen (Bit bleibt auf 1).
unsigned char fram_write_byte (unsigned int addr, unsigned char data)
{
  unsigned char addr_h;
  unsigned char addr_l;
    
  addr_h = addr>>8;
  addr_l = addr;
  
 
  UCB0I2CSA = ADD_FRAM;      // Slave Adresse
  
  UCB0CTL1 |= UCTR + UCTXSTT;         // I2C TX, start condition

/*
  while(UCB0CTL1 & UCTXSTT);  // Warten bis Start und Adresse gesendet

  if (UCB0STAT & UCNACKIFG)
  {
    UCB0CTL1 |= UCTXSTP;                // I2C stop condition 
    UCB0STAT &=~UCNACKIFG;
    return FALSE;
  }
*/
  while (!(IFG2 & UCB0TXIFG));
  UCB0TXBUF = addr_h; 
  while (!(IFG2 & UCB0TXIFG));
  UCB0TXBUF = addr_l; 
  while (!(IFG2 & UCB0TXIFG));
  UCB0TXBUF = data; 
  while (!(IFG2 & UCB0TXIFG));
  
  UCB0CTL1 |= UCTXSTP;                // I2C stop condition 
  while(UCB0CTL1 & UCTXSTP); 

  return TRUE;
}

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

du hast schon recht. Das TXSTT Bit sollte auf null gesetzt werden, 
sobald der SLAVE sein ACK sendet. Sendet er denn seinen ACK???

mfg Alex

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halt falsch, der MSP wartet bis das Datenregister TXBUF geschrieben ist, 
erst dann wirt TXSTT gelöscht. Seite 536 des USER Guide zeigt das ganz 
nett.

mfg ALex

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja, doch was übersehen... Danke :)

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.