Beschreibung des I²C-Mode des MSP430F20xx

Gast #1180983
Lesenswert?
• ▲
▼
Hallo,
das hat mich auch verwirrt. Mit ein wenig Fantasie und Vergleichen kommt 
man dann auch dahinter, meistens. Ich vermute IAR hat die Files in einem 
frühen Statium erstellt, als die jetzt bekannte Doku noch nicht vorlag.

Gruss Klaus.
Persönliche Seite #1181005
Lesenswert?
• ▲
▼
Ja beim IAR Compiler kann ich nicht mitreden, den benutze ich nicht. Ich 
arbeite beim MSP430 ausschließlich mit dem MSPGCC. Und die 
vordefinierten Registerbitdefinitionen verwende ich auch nicht und die 
Registeradressen stimmen.

Wenn sie bei deinem Compiler nicht stimmen, sind die entsprechenden 
Headerfiles ja auch gleich geändert. Ich habe für die MSP430 schon ganze 
Adressdefinitionsheader selber geschrieben, das ist nicht so viel 
Arbeit.

Viele Grüße,

Peter
OP #1181007
Lesenswert?
• ▲
▼
Wenn ich die I²C-Routine nach dem implementiere, was in der .pdf steht - 
nach Übersetzung der Bit-Namen - kommt was anderes heraus, als das, was 
in msp430x20x3_usi_12.c steht.

Laut Beschreibung erzeugt man durch setzen eines Bits im

Unter "I²C Master Transmitter Mode" (Seite 17-15) steht:

"...and setting UCTXSTT to generate a START condition."

Laut Registerbeschreibung liegt UCTXSTT in "USCI_Bx Control Register 1".

Wenn man im Beispielcode nachsieht, findet man keinen Zugriff auf das 
CTRL-Register 1:
1
 // Aus msp430x20x3_usi_12.c
2
   case 0: // Generate Start Condition & send address to slave
3
     P1OUT |= 0x01;                // LED on: sequence start
4
     Bytecount = 0;
5
     USISRL = 0x00;                // Generate Start Condition...
6
     USICTL0 |= USIGE+USIOE;
7
     USICTL0 &= ~USIGE;
8
     if (Transmit == 1){
9
       USISRL = 0x90;              // Address is 0x48 << 1 bit + 0 (rw)
10
     }
11
     if (Transmit == 0){
12
       USISRL = 0x91;               // 0x91 Address is 0x48 << 1 bit 
13
                                    // + 1 for Read
14
     }
15
     USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
16
     I2C_State = 2;                // next state: rcv address (N)Ack
17
     break;

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.