Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Wie verbinde ich CC-M2 mit PIC 16f876 über I2C Kategorie: C-Control I V1.2/2.0 (von Dr.InSide - 22.08.2006 0:51)
Dr.InSide nutzt:  CC1-M-Unit V1.2/2.0
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

Bisherige Antworten:

Re: Wie verbinde ich CC-M2 mit PIC 16f876 über I2C (von Stefan Süßmann - 22.08.2006 8:47)