Forum: Mikrocontroller und Digitale Elektronik MSP430 USI - I2C


von BL (Gast)


Lesenswert?

Hallo!

Ich benutze den MSP430F2013. Ich möchte eine Kommunikation zu einem 
Sensor aufbauen via I2C. Im Sensorblatt steht als Übertragungsfrequenz 
für dieses Protokol 100 kHz.
Nach meinem Verständnis bekomme ich aber mit dem Controller nur ~125 
kHz:
1
USICKCTL = USIDIV_3 + USISSEL_2 + USICKPL; //Setup USI clocks: SCL = SMCLK/8 (~125kHz)
SMCLK ist hierbei auf 1MHz gesetzt.

Ist da eine Kommunikation überhaupt möglich?


Meine zweite Bitte währe, wo um alles in der Welt finde ich 
Beispielcodes oder ein Forum auf der Texas Instruments Homepage, die mir 
weitere Infos zum MSP430F2013 bzw. I2C Programmieren liefert. Ganz 
ehrlich, ich bin auf deren homepage aufgeschmissen. Für mich ist sie 
unübersichtlich und überladen. Man findet gar nix.

Danke für alle Hilfe :)

von Nico (nico123)


Lesenswert?

Was für ein Sensor ist das denn? Wenn dieser tatsächlich mit maximal 
100kHz läuft, dann musst Du deinen Takt durch 16 teilen!

Beispielcode findest Du per Suchmaschine zu Hauf!

von Herbert (Gast)


Lesenswert?

BL schrieb:
> Im Sensorblatt steht als Übertragungsfrequenz
> für dieses Protokol 100 kHz

Wird höchstwahrscheinlich auch mit den 125 gehen. Ansonsten eben weiter 
teilen.

BL schrieb:
> Ganz
> ehrlich, ich bin auf deren homepage aufgeschmissen.

Geht, da sind unendlich viele Beispiele. Es gibt doch zu nahezu jedem 
Controller Code-Examples. Wenn auf der Seite des 2013 keine sind, nimm 
halt die von nem anderen. Das USI-Modul is gleich.

von BL (Gast)


Lesenswert?

Ein DS1621.
Achso. Es müssen also nicht genau 100kHz sein, sondern nur die maximale 
Frequenz darf nicht überschritten werden?


Das ist klar. Es ging mir eher um das Zurechtfinden auf der TI homepage.

Ausserdem hab ich keinen Code gefunden, der ein repeatet start aufweist.
meine I2C statemachine ist so aufgebaut, wie mans kennt:
1
__interrupt void USI_TXRX (void)
2
{
3
  switch(I2C_State)
4
    {
5
      case 0: // Generate Start Condition & send address to slave
6
              P1OUT |= 0x01;           // LED on: sequence start
7
              USISRL = 0x00;           // Generate Start Condition...
8
              USICTL0 |= USIGE+USIOE;
9
              USICTL0 &= ~USIGE;
10
              USISRL = SLV_Addr;       // ... and transmit address, R/W = 1
11
              USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
12
              I2C_State = 2;           // Go to next state: receive address (N)Ack
13
              break;
14
15
      case 2: // Receive Address Ack/Nack bit
16
              USICTL0 &= ~USIOE;       // SDA = input
17
              USICNT |= 0x01;          // Bit counter = 1, receive (N)Ack bit
18
              I2C_State = 4;           // Go to next state: check (N)Ack
19
              break;
20
21
      case 4: // Process Address Ack/Nack & handle data RX
22
              if (USISRL & 0x01)       // If Nack received...
23
              { // Prep Stop Condition
24
                USICTL0 |= USIOE;
25
           ...

Aber ich brauche ein case, wo ich ein repeated start ausführe. Bekomm 
ich aber irgendwie nicht auf die Reihe. Kann jemand weiterhelfen?

von msp430f5510 (Gast)


Lesenswert?

>wo um alles in der Welt finde ich Beispielcodes oder ein Forum auf
> der Texas Instruments Homepage, die mir weitere Infos zum MSP430F2013
> bzw. I2C Programmieren liefert.

Lade dir msp430ware von der ti site runter, dort befinden sicht viele 
Codebeispiele zu den unterschiedlichsten msp430 Typen. Musst dazu einen 
Acoount bei TI erstellen.

http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430ware/latest/index_FDS.html

msp430ware ist bereits in ccs (Code Composer Studio) von TI integriert. 
Kann man nach Reistrierung auch frei herunterladen.

Zwei brauchbare msp430 Foren:

http://e2e.ti.com/support/microcontrollers/msp43016-bit_ultra-low_power_mcus/f/default.aspx?DCMP=Grace&HQS=Other+OT+gracefeedback

http://forum.43oh.com/

von BL (Gast)


Lesenswert?

@ msp430f5510
Danke für diese infos :)

von Nico (nico123)


Lesenswert?

Der DS1621 kann mit bis zu 400kHz betrieben werden! Und ja, das sind nur 
die Maximalwerte.

von BL (Gast)


Lesenswert?

Ok Maximalwerte. Damit ist meine Frage gelöst ^^

von BL (Gast)


Lesenswert?

Das "repeated start" habe ich übrigens nach LANGEM hin und her 
programmiert bekommen...  Jetzt funktioniert alles. Unglaublich, dass in 
den Codebeispielen kein repeated start vorkommt...

von Mr. MSP (Gast)


Lesenswert?

BL schrieb:
> Ganz
> ehrlich, ich bin auf deren homepage aufgeschmissen. Für mich ist sie
> unübersichtlich und überladen. Man findet gar nix.

???
Wenn ich mir die Seiten zum MSP430 anschaue, weiss ich nicht, wie es 
noch übersichtlicher geht:
http://www.ti.com/mcu/docs/mcuprodtechdoc.tsp?sectionId=95&tabId=1208&familyId=912&techDoc=1&docCategoryId=1&viewType=mostrecent

Mit den 5 Tabs hast du Zugriff auf alle zur Familie gehörenden Infos. 
Auch auf die App-Notes und einen SW-i2c.

Und auch direkt von der Typenseite:
http://www.ti.com/product/msp430f2013

Alles ist schön strukturiert aufgelistet und passt zum gewählten 
Exemplar. Die App-Notes brauchen nur aufgeklappt werden.

Wenn du sch... Seiten suchst, musst du bei ST und Atmel reinschauen. Die 
haben ihre Seiten ruiniert.

von BL (Gast)


Lesenswert?

Hast schon recht.

Trotzdem ist sie für Neueinsteiger doch nicht ganz trivial.

Zum Beispiel die Seitenleiste:

MSP430™16-bit Ultra-Low Power MCUs  (481)

    1 Series  (33)
    2 Series  (47)     <--- das hier bedeutet: MSP430F2xx

Sorry, aber das hab ich erst nach dem dritten hinschauen geblickt.

usw....

von Mr. MSP (Gast)


Lesenswert?

BL schrieb:
> Trotzdem ist sie für Neueinsteiger doch nicht ganz trivial.

???

Für wen ist wohl die Seite
http://www.ti.com/lsds/ti/microcontroller/16-bit_msp430/newtomsp430.page

BL schrieb:
> 1 Series  (33)
>     2 Series  (47)     <--- das hier bedeutet: MSP430F2xx
>
> Sorry, aber das hab ich erst nach dem dritten hinschauen geblickt.

Auf der Newbee Seite findest du
http://www.ti.com/lsds/ti/microcontroller/16-bit_msp430/newtomsp430.page#generations

Du kannst schon alleine auf Klo, oder?  ;-D

von BL (Gast)


Lesenswert?

Mr. MSP schrieb:
> Du kannst schon alleine auf Klo, oder?  ;-D

Gut, dann frag ich nichts mehr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.