-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: I²C: SCL invertiert

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    30.04.2012
    Beiträge
    9

    I²C: SCL invertiert

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi,

    ich bin gerade dabei das I²C Modul meines PIC12F1840 zu konfigurieren.
    Nun habe ich es geschafft, dass er einen Befehlt sendet, aber da stimmt
    etwas nicht: Beim Start Bit sollte SCL ja High sein und SDA von High auf
    Low wechseln. SDA passt soweit auch, aber SCL ist im ausgangszustand Low
    statt High. Auch im übrigen Verlauf ist SCL wie invertiert. Gibt es
    irgendeine Einstellung, die so ein Verhalten verursachen kann?

    Viele Grüße
    Wastel

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Wilkommen im Forum,
    I2C gibt es soweit ich weiß nur einen Standart. Bei SPI gibt es soetwas, aber bei I2C wüsste ich nicht. Vielleicht findest du im Datenblatt vom PIC etwas.

    MfG Hannes

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Laut deiner Beschreibung könnten Leitungen von SDA und SCL vertauscht sein.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    30.04.2012
    Beiträge
    9
    Zitat Zitat von 021aet04 Beitrag anzeigen
    Wilkommen im Forum,
    I2C gibt es soweit ich weiß nur einen Standart. Bei SPI gibt es soetwas, aber bei I2C wüsste ich nicht. Vielleicht findest du im Datenblatt vom PIC etwas.
    Vielen Dank!
    Im Datenblatt habe ich natürlich schon jede Menge geschaut. Habe das komplette Kapitel durch und auch die Register mit dessen Hilfe bestimmt. Aber nun komme ich einfach nicht weiter :-|

    SDA und SDL habe ich nicht vertauscht. Du meinst im Oszi, oder? Ich habe auf SDA auch mal eine 00h gelegt, da war dann recht klar, welcher welcher ist...

    Hat noch Jemand eine Idee?

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Ich kann dir nichtmehr helfen, da ich mich mit PICs nicht auskenne. Eventuell kann dir jemand Anderer helfen, der sich mit PICs auskennt. Hast du den Aufbau kontrolliert (jede Leitung verfolgt und geschaut ob es richtig angeschlossen ist)?

    Kontrolliere den genauen Aufbau, und poste das Programm (könnte vielleicht auch ein Programfehler sein).

    MfG Hannes

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    30.04.2012
    Beiträge
    9
    Trotzdem vielen Dank! Hier jetzt mal die wesentlichen code Zeilen, die ich für I2C geschrieben habe.

    __CONFIG(FOSC_INTOSC & WDTE_OFF);
    __CONFIG(LVP_OFF & BORV_25 & STVREN_ON & PLLEN_ON);

    void main(void)
    {
    OSCCON = 0b01101000; //bit7: PLL, bit6-3: 4 MHz internal Clock
    OSCSTAT |= 0b00100000; //Start-up Timer on

    I2C_Init();

    While(1)
    SSP1BUF = 0b00000000;
    }



    void I2C_Init(void)
    {
    TRISA |= 0b00000110; //SDA and SCL as Input

    //SSP1STAT
    SSP1STATbits.SMP = 1; //slew rate controll off
    SSP1STATbits.CKE = 1; //SMBus disabled

    //SSP1CON1
    SSP1CON1 = 0x00;
    SSP1CON1bits.SSPEN = 1; //initiate SDA and SCL as serial port pins
    SSP1CON1 |= 0b00001000; //Master mode
    SSP1CON1bits.CKP = 0; //Initiate start condition on SDA and SCL

    //SSP1CON2
    SSP1CON2bits.GCEN = 0; //Interrupt when general call adr. (0x00) is received in the SSP1SR
    SSP1CON2bits.RCEN = 1; //Receive mode enabled
    SSP1CON2bits.PEN = 1; //Initiate stop condition enabled. Automatically cleared by hardware
    SSP1CON2bits.RSEN = 1; //Repeated start condition

    //SSP1CON3
    SSP1CON3bits.SBCDE = 1; //Collison Interrupt enabled. See BCL1IF bit in PIR2

    SSPADD = 0x09; //FOSC: 4 MHz, Fcy: 1MHz, Fclock
    SSP1CON2bits.SEN = 1; //Initiate start condition on SDA and SCL
    }

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Im Datenblatt (DB) habe ich auf die schnelle nur das gefunden, was ich in Anhang kopieren versucht habe.

    "Cäh" kenne ich gar nicht.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken PIC.bmp  
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    30.04.2012
    Beiträge
    9
    Da geht es doch um das Read/Write bit. Das ist das letzte Bit in der Adresse, die über SDA gesendet wird und sagt dem Slave, ob er im weiteren Verlauf empfangen oder senden soll. Auf die SCL Leitung sollte das aber keinen Einfluss haben, wenn ich es richtig verstanden habe...

  9. #9
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Sorry, möglicherweise ist das nicht die richtige Erklärung, aber ich bin kein I²C Experte und blicke es nicht so schnell durch.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    30.04.2012
    Beiträge
    9
    Bei mir hat es auch TAGE gedauert, bis ich mal eine Vorstellung hatte, wie ich das genau angehen muss.
    Ob meine Register richtig beschrieben sind weiß ich aber immer noch nicht, einige Bits sind mir noch nicht so 100%ig klar...

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. cny70 beschaltung invertiert
    Von . . . . . im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 14.04.2009, 18:34
  2. Funkmodul - Daten kommen invertiert - wie "richtigdrehe
    Von m@rkus33 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 22.02.2006, 18:48
  3. stk500 ausgänge invertiert?
    Von wanni im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 05.04.2005, 15:08
  4. AVR: Ausgaenge invertiert?, Timer?
    Von Minifriese im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 02.02.2005, 22:34
  5. möglich: pin1 invertiert pin2?
    Von harryup im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 11.11.2004, 11:33

Berechtigungen

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