MSP430 I2C funktioniert nicht

OP #3714820
Hi,
Ich versuche  die I2C Kommunikation mit MSP430F2013  programmieren
hier ist mein assembler  Code:
1
#include "msp430.h"  ;
2

3
       ADDR:   EQU 0x40     ; address ADDR1 and ADDR0 to GND
4
       P_Vol:  EQU 0x00; Pointer to Vobj
5
       P_Temp: EQU 0x01;  Pointer to ambient Temp
6
       P_Conf: EQU 0x02 ; Pointer to configuration
7

8

9
        RSEG    CSTACK                  ; pre-declaration of segment
10
        RSEG    CODE                    ; place program in 'CODE' segment
11
 Reset:
12
        mov.w #SFE(CSTACK), SP        ; set up stack
13
        mov.w #WDTPW|WDTHOLD,&WDTCTL  ; Stop watchdog timer
14
        bis.b #0, &DCOCTL;
15
        bic.b #RSEL0|RSEL1|RSEL2,&BCSCTL1;
16
        mov.b #SELM_3|SELS,&BCSCTL2; VCO as SMCLK,DCO as MCLK
17
        mov.b #LFXT1S_2,&BCSCTL3; USE VCO as LFXT (ACLK)
18
        mov.b #0, &P1OUT;
19
        mov.b #0, &P2OUT; low
20
        mov.b #0xFF, &P2DIR;
21
        mov.b #0xFF, &P1DIR; output
22
        mov.w #MC_0|TACLR, &TACTL; stop and clear timer
23
        bis.w #TASSEL0|TAIE, &TACTL;  CLOCK ACLK
24
        ;----------------------IIC configuation---------------------;
25

26
        bis.b #USISSEL_1|USICKPL,&USICKCTL; ACLK,  IdleState=Low
27
        bis.b #USII2C, USICTL1; I2C mode
28
        mov.b #USIPE7|USIPE6|USIMST, &USICTL0; Enable SDO/SDI/SCLK etc, master mode
29
        bis.w #MC0, &TACTL;
30
        mov.w #0x0fff, &TACCR0;
31

32

33
  Main:
34
       bis.w #GIE,SR; enable interrupts ,LPM3
35
       jmp Main;
36
  Timer:
37
       bis.w #MC_0|TACLR, &TACTL; stop and clear timer
38
       bic.w #TAIFG, &TACTL;clear flag
39
       bic.b #BIT1, &P1OUT;
40
       call #I2C_SendAddress
41
       bis.w #MC0,&TACTL; start timer
42
       reti
43
;--------------------------------------I2C procedures------------------------------------------------;
44
  I2C_SendAddress:   ; send address 1st
45
       bic.b #USI16B,&USICNT; 8 bit  shift register
46
       mov.b #0,&USISRH
47
       bis.b #BIT1, &P1OUT; Trigger signal
48
       mov.w #ADDR, &USISR; load I2C address
49
       bis.b #USIOE,&USICTL0; I2C output enable
50
       bis.b #0x8, &USICNT; output 8 Bits
51
       ret
52

53
RSEG RESET
54
DW Reset
55
RSEG INTVEC
56
ORG TIMER0_A1_VECTOR;
57
      DW Timer
58

59

60
        END

Der  Triggersignal kommt, aber die SCL und SDA schweigen.

Was mache ich falsch?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.