- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 8 von 8

Thema: PIC 18F2550 I²C Kommunikation XC8 Compiler

  1. #1
    simon161718
    Gast

    PIC 18F2550 I²C Kommunikation XC8 Compiler

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen. Ich versuche gerade eine I2C Kommunikation aufzubauen. Leider klappt es noch nicht wirklich

    Ich habe das Programm daraufhin im Debug Modus laufen gelassen.
    Irgendwas stimmt mit dem I2C_Read Befehl nicht. Er hängt sich in einer
    while-Schleife auf und macht an diesem Punkt nicht weiter bzw er verbleibt in der while schlife (SSPSTATbits.BF), er empfängt anscheinend keine Daten. Habt
    ihr eine Ahnung wodrann das liegen könnte?


    Wem es hilft dem habe ich außerdem noch meinen Quellcode beigefügt.


    void INIT_I2C(void){
    OpenI2C(MASTER, SLEW_OFF);
    SSPADD = 19;
    }




    unsigned int TEST = 0x0000;
    unsigned char LSB = 0x00, MSB = 0x00;



    while(1)

    {



    StartI2C(); // Start condition I2C on bus
    IdleI2C();

    WriteI2C(0x95); // addresses the chip + 1 LESEN
    IdleI2C();
    // AckI2C();



    LSB = ReadI2C(); // read the value from the SLAVE and store in TEST variable.
    IdleI2C();
    // AckI2C();
    MSB = ReadI2C();
    IdleI2C();


    // NotAckI2C(); // Not Acknowledge condition. This will signal the SLAVE that reading data has completed.
    IdleI2C();

    StopI2C(); // Stop condition I2C on bus


    TEST = MSB << 8 | LSB;

    MSB=0x00;
    LSB=0x00;
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Du macht es einem nicht leicht, dir zu helfen. Die vielen überflüssigen Leerzeilen zwingen einen zum dauernden Scrollen, wenn man den Code lesen will. Die fehlenden Einrückungen machen es auch nicht leichter.

    Der Code ist auch nicht vollständig. Funktionen wie WriteI2C() etc kann ich nicht finden. Ich weiß also nicht, was sie macht und kann daher keinen Fehler suchen. Der Name ist auch schlecht gewählt, das I von I2C liest man leicht als kleines l. Write_I2C() oder I2C_WRITE() wäre besser. Dann kann man leicht alle I2C Funktionen mit "I2C_" suchen.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #3
    Unregistriert
    Gast
    Zitat Zitat von Klebwax Beitrag anzeigen
    Du macht es einem nicht leicht, dir zu helfen. Die vielen überflüssigen Leerzeilen zwingen einen zum dauernden Scrollen, wenn man den Code lesen will. Die fehlenden Einrückungen machen es auch nicht leichter.

    Der Code ist auch nicht vollständig. Funktionen wie WriteI2C() etc kann ich nicht finden. Ich weiß also nicht, was sie macht und kann daher keinen Fehler suchen. Der Name ist auch schlecht gewählt, das I von I2C liest man leicht als kleines l. Write_I2C() oder I2C_WRITE() wäre besser. Dann kann man leicht alle I2C Funktionen mit "I2C_" suchen.

    MfG Klebwax
    Hi Klebwax,

    sorry für den unübersichtlichen Code...

    Den Write_I2C() Befehl findest du direkt unter der Start-Bedingung
    Dort spreche ich die Slave Adresse an.


    Bis dahin klappt auch alles, aber sobald es ans lesen geht, stop der Debugger in der besagten While-Schleife...

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Unregistriert Beitrag anzeigen
    Den Write_I2C() Befehl findest du direkt unter der Start-Bedingung
    Dort spreche ich die Slave Adresse an.
    Dort sehe ich nur, daß die Funktion aufgerufen wird. Die Funktion selbst (in C das ist kein Befehl sondern eine Funktion) kann ich nicht finden, die anderen Funktionen, die I2C betreffen, ebenfalls nicht. Aus der C Standard Library sind sie nicht, die kennt kein I2C.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  5. #5
    Unregistriert
    Gast
    Die Funktionen sind aus der plib.h, also der peripheral libary von microchip. Dort sind die ganzen I2C Funktionen hinterlegt

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Unregistriert Beitrag anzeigen
    Die Funktionen sind aus der plib.h, also der peripheral libary von microchip. Dort sind die ganzen I2C Funktionen hinterlegt
    Ich hab zwar schon ein paar mal I2C und vieles mehr mit PICs gemacht, aber die Peripheral Library noch nie benutzt. Sorry

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  7. #7
    Unregistriert
    Gast
    Zitat Zitat von Unregistriert Beitrag anzeigen
    Die Funktionen sind aus der plib.h, also der peripheral libary von microchip. Dort sind die ganzen I2C Funktionen hinterlegt
    richtig

    Weißt du, wie es dazu kommen kann, dass ich in dieser (SSPSTATbits.BF) Schleife hängen bleibe?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von simon161718 Beitrag anzeigen
    Code:
    void INIT_I2C(void)
      {
        OpenI2C(MASTER, SLEW_OFF);
        SSPADD = 19;
      }
    
     unsigned int TEST = 0x0000;
     unsigned char LSB = 0x00, MSB = 0x00;
    
    while(1) 
      {
        StartI2C(); // Start condition I2C on bus
        IdleI2C();
    
        WriteI2C(0x95); // addresses the chip + 1 LESEN
        IdleI2C();
        // AckI2C();
    
        LSB = ReadI2C(); // read the value from the SLAVE and store in TEST variable.
        IdleI2C();
        // AckI2C();
        MSB = ReadI2C();
        IdleI2C();
    
    
        // NotAckI2C(); // Not Acknowledge condition. This will signal the SLAVE that reading data has completed.
        IdleI2C();
    
        StopI2C(); // Stop condition I2C on bus
    
        TEST = MSB << 8 | LSB;
    
        MSB=0x00;
        LSB=0x00;
      } 
    
    Da fehlt doch was oder es ist etwas zu viel?

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Handy Kommunikation atmega128 Kommunikation auswerten
    Von bastian07 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 26.04.2009, 18:58
  2. PIC 18F2550 und Tastatur Emulation mit Poti
    Von CERMY im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 04.07.2007, 23:36
  3. c++ compiler
    Von tornado im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 17.06.2006, 22:13
  4. [ERLEDIGT] Compiler
    Von hoopee im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 13.12.2004, 15:30
  5. [ERLEDIGT] pic c compiler
    Von prince im Forum Buchempfehlungen
    Antworten: 0
    Letzter Beitrag: 03.10.2004, 18:57

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test