![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo! Ich möchte ein PIC 16F876 (Slave) über I2C mit der C-Control M2 Unit (Master) verbinden. Softwaretechnisch habe ich I2C an der M2 Unit schon öfters problemlos programmiert. Den PIC mit eingebauter I2C-Schnittstelle programmiert ein Bekannter von mir. Problem ist nun, daß ich vom C-Control 2 Bytes sende und der PIC davon garnichts mitbekommt (er müsste bei anliegenden Daten ein Interrupt auslösen). Die adresse haben wir als 00010010 festgelegt. Als Pull-Up Wiederstände haben wir 1,8kOhm benutzt wie es im Usermanual vom PIC 16F876 gefordert wird. Ist für die Schnittstelle zwischen C-Control und PIC noch eine spezielle Schaltung oder Pegelwandlung nötig? Ich hoffe ihr könnt uns Helfen. Vielen Dank im Vorraus! MfG, Vincenz Dreger Hier der C-Control Code: DEFINE IA BYTE[18] 'I2C-BUS Adresse PRINT "#OFF#"; PRINT "#ON_IIC#"; PRINT "#STOP#"; PRINT "#START#"; IA = &B00010010 'I2C-Adresse: 0001, SUB: 001, RW: 0 PUT IA PUT &H01 '2 Testwerte senden. PUT &H02 PRINT "#STOP#"; PRINT "#OFF#"; END Hier ein Auszug aus den PIC 16F876 Code-Teilen (nicht der komplette Code!): ;##### btfsc PIR1, SSPIF goto i2c_empfangen ;##### i2c_empfangen movfw SSPBUF movwf i2c_in bsf PORTC,5 ; infoled für I²C interrupts ein decfsz i2c_in,f ; ist x-1=0 dann ist x=1 decfsz i2c_in,f ; ist x-1-1=0 dann ist x=2 movfw char_1 movfw char_2 call wait call wait call wait bcf PORTC,5 ; infoled für I²C interrupts aus ;##### initialisierung bsf STATUS, RP0 ; auf Bank 1 umschalten movlw B'00011000' ; RC3=SCL, RC4=SDA Eingang für I²C movwf TRISC bcf STATUS, RP0 ; auf Bank 0 zurückschalten bcf PORTC,5 ; ausgangszustand der infoled für I²C interrupts ist aus ;##### ; I²C Bus initialisieren bsf STATUS,RP0 ; auf bank 1 umschalten movlw b'00001001' ; 0001 001 movwf SSPADD bcf STATUS,RP0 ; auf bank 0 zurückschalten ; fehlt bei slave, fehler ? movlw b'00000110' ; no collision, no overflow, i²c bus disable (to configure), hold clock low (clock stretch), slave width 7 bit adressing movwf SSPCON bsf SSPSTAT, SMP ; Slew rate control disabled for standard speed mode (100 kHz and 1 MHz) bcf SSPSTAT, CKE ; Input levels conform to I²C specs and not SM-BUS specs bsf SSPCON, SSPEN ; i2c bus enable ; initialisierung ende ;##### endless_loop goto endless_loop ;##### |
Antwort schreiben |