2020/11/13 04:34:53
Gee1
Hey,  i use an DSPIC33CK256MP505 and i want to initialice a TAS5558 via I2C.
 
my code is the following:
 
bset    I2C1CONL,#0    ; START            ; internal factory trim
            mov    #0x68,W0    ; (0x34 write)
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x12,W0
            mov    W0,I2C1TRN
            nop
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x00,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2    
            bset    I2C1CONL,#2    ; STOP
         
            call    wait_ss            ; Exit Shutdown
            bset    I2C1CONL,#0    ; START        
            mov    #0x68,W0    ; (0x34 write)
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x03,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0xA0,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2    
            bset    I2C1CONL,#2    ; STOP
            
            call    wait_ss
            bset    I2C1CONL,#0    ; START        
            mov    #0x68,W0    ; (0x34 write)
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0xD9,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x00,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2                
            mov    #0x00,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x02,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x45,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2    
            bset    I2C1CONL,#2    ; STOP
            
            call    wait_ss
            bset    I2C1CONL,#0    ; START        
            mov    #0x68,W0    ; (0x34 write)
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0xE0,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x00,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x00,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x00,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2            
            mov    #0x04,W0
            mov    W0,I2C1TRN
            nop
            btsc    I2C1STAT,#14
            BRA $-2    
            bset    I2C1CONL,#2    ; STOP
 
 
but it dosnt work.. I2C itself is initialiced correctly (veryfied with osci)
 
whats wrong?
2020/11/13 04:39:32
ric
You should check if you received an ACK after each transmission. If the slave doesn't ACK the first byte, there's no point sending the rest.
© 2021 APG vNext Commercial Version 4.5

Use My Existing Forum Account