PIC: I2C mit MCP23008

Gast #958978
Hallo Elektroniker,

bastel seit ein paar Tagen mit einem PIC4550 und dem I/O-Expander 
MCP23008 von Microchip rum. Ich verwende den I2C-Bus zum ersten Mal und 
habe prompt ein Problem:

Wenn ich einen Output-Pin setzen möchte und dazu in das OLAT-Register 
schreibe, so schreibt er zwar ins OLAT, übernimmt den Wert von dort aber 
nicht ins GPIO-Register.

Sämtliche Pins sind als Output konfiguriert über IODIR-Register = 0x00.
Desweiteren sieht mein I2CSendByte-Code (programmiert mit dem 
C18-Compiler) folgendermaßen aus:
1
void i2cSendByteNEW(unsigned char addressModule, unsigned char addressReg, unsigned char data)
2
{
3
  PIR1bits.SSPIF = 0;    //SSPIF Bit löschen  
4
  SSPCON2bits.SEN = 1;    //Bus übernehmen
5
  while(!PIR1bits.SSPIF);    //Warten bis Bus übernommen
6
  PIR1bits.SSPIF = 0;    //SSPIF zurücksetzen
7
  SSPBUF = (addressModule&0xFE); //Adresse des MCP23008   
8
                
9
  while(SSPCON2bits.ACKSTAT);  //Wait for ACK      
10
  PIR1bits.SSPIF = 0;    //SSPIF Bit löschen  
11
  SSPBUF = addressReg;    //Adresse des Registers 
12
  while(SSPCON2bits.ACKSTAT);  //Wait for ACK  
13
  PIR1bits.SSPIF = 0;
14
  SSPBUF = data;      //Byte Senden
15
  while(SSPCON2bits.ACKSTAT);  //Wait for ACK
16
  PIR1bits.SSPIF = 0;  
17
  SSPCON2bits.PEN = 1;    //Bus freigeben
18
  while(!PIR1bits.SSPIF);
19
  PIR1bits.SSPIF = 0;    //SSPIF zurücksetzen
20
}//End i2cSendByteNEW
Interessant ist, wie gesagt, dass korrekt gesendet wird (wenn ich OLAT 
auslese stimmts), dies aber nicht auf GPIO übertragen wird.

Für Hinweise auf Fehler wäre ich sehr dankbar!

Vielen Dank für die Mühe

MfG

Patrick

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.