Forum: Mikrocontroller und Digitale Elektronik I²C Init bei PIC18F452


von Ingo S. (schicki)


Lesenswert?

Hallo Zusammen,

Ich möchte den PIC18F452 als IC-Bus Mater einsetzten.Ich verwende den 
C18 Comiler von Microchip.

Irgendwie initialisiert sich der Bus nicht korrekt. Ich verwende 4,7Kk 
PullUp Widerstände, und kann mir den Grund nicht erklären. Kann mir 
jemand weiterhelfen? ich möchte nur den PCF8574 bzw. dem PCF8591 
ansteuern.


Quellcode:
   Init_I2C_Master(100);

/*********************************************************************** 
*/
#include <P18F452.h>      // Include für PIC18F452
#include <i2c.h>        // Include für die I²C Schnittstelle
/*********************************************************************** 
*/

/*********************************************************************** 
*/
// I²C Schnittstelle initialisieren
/*********************************************************************** 
*/
void Init_I2C_Master(unsigned short int Takt)
//
{
 TRISCbits.TRISC3 = 1;    // SCL-Leitung
 TRISCbits.TRISC4 = 1;    // SDA-Leitung

switch (Takt) {
  case 100:    SSPADD = 49; // 100 KHz Takt bei 20 MHz
          OpenI2C(MASTER, SLEW_OFF);
        break;
/*********************************************************************** 
*/
case 400:    SSPADD = 12; // 400 KHz Takt bei 20 MHz
      OpenI2C(MASTER, SLEW_ON);
      break;
    }
}
/*********************************************************************** 
*/

von Sunny (Gast)


Lesenswert?

Brauchst noch das:

SSPCON1 = 0b_0000_1000       -- master mode, clock=Fosc/(4*(SSPADD+1))
SSPCON1_SSPEN = high        -- MSSP-Modul enable

von Sunny (Gast)


Lesenswert?

Und nicht vergessen die I2C pins auf input zu stellen.

von Ingo S. (schicki)


Lesenswert?

Hi Sunny,

ich habe den Quellcoe um dem Code:
   SSPCON1bits.SSPM3 = 1;
  SSPCON1bits.SSPEN = 1;

ergänzt leider ohne Erfolg. Weiß sondt noch jemand etwas?

von Sunny (Gast)


Lesenswert?

Jetzt müsste es eigentlich gehen weil bei mir geht's mit diesen 
einstellungen, und wenn es nich geht, dann muss es an was anderem 
liegen.

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.