Forum: Mikrocontroller und Digitale Elektronik Probleme bei I2C Kommunikation zwischen PIC18F66k80 und eDIP 240-7


von Michael A. (mike22)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe Probleme beim Übertragen von Bytes an das eDip240-7 Display. 
Ich verwende die I2C Schnittstelle des PIC18f66k80.
Ich habe eine Funktion I2C_senden(unsigned char* data) geschrieben, 
darin wird die Anzahl der Datenbytes und eine Prüfsumme berechnet, sowie 
die Daten in den Ausgabepuffer des PICs geschrieben. Übergebe ich keinen 
string also I2C_senden(); funktioniert die Funktion und überträgt 
ordentlich die Adresse des Displays sowie die Datenlänge und die 
Prüfsumme(siehe Foto_2). Übergebe ich jedoch einen String, werden mir 
unerklärliche Sachen auf dem I2C Bus übertragen (siehe Foto_1).

hier mein verwendeter C-Code:
1
void I2C_senden (char* data)  
2
{
3
  
4
  /******Datenbytes übertragen*****************************/
5
  /********************************************************/      
6
  
7
       for(unsigned char i=0;data[i]!=0;i++)                 
8
        {
9
            SSPBUF=data[i];               //
10
            while (R_W==1){}  //Übertragung läuft, warten
11
        }
12
  
13
  /*  for(char *hData=data;  *hData!=0;  hData++)
14
    {
15
            SSPBUF=*hData;
16
            while (R_W==1){}  //Übertragung läuft, warten
17
    }
18
  */
19
}
also mit I2C_senden(); funktioniert es
mit z.B. I2C_semdem("a"); funktioniert es nicht

von Michael A. (mike22)


Lesenswert?

Problem ist behoben. Der Funktionskopf muss wie folgt aussehen:
1
void I2C_senden (const char *data)
2
{...}

Auf den Inhaltoperator "*" vor data achten!

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.