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

Thema: Bascom I2CStart nicht I2C-konform?

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253

    Bascom I2CStart nicht I2C-konform?

    Anzeige

    Praxistest und DIY Projekte
    Hi Forum,

    ich bin an nem Projekt, bei dem ich per
    Bascom I2C-Routinen ne Kamera ansprechen will,
    doch die sacht einfach nix.
    Ich hab dann mal die Kommunikation mitgeschnitten
    per Digi-Oszi und mir ist da was merkwürdiges aufgefallen.

    rot=SDA, blau=SCL, der Mitschnitt ist vom Code:

    i2cstart
    i2cwbyte &HC0

    Bild hier  

    es scheint so, das vor dem I2C-Start die SCL low gezogen wird, obwohl
    das in meinem Code nirgends steht. Mir scheint, das dieser Zustand
    Meinen Baustein durcheinander bringt, kann das sein?

    Und wenn das möglich ist, wie kann ich den SCL-Puls abstellen?

    Oder kann ich einen sauberen TWI-Start nur per ASM bewerkstelligen?
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ja, der Bascom (Soft-I2C) startet wie von dir beschrieben.
    (übrigens auch das STOP)
    Als Single-Master ist das normalerweise egal, aber eben nur da.

    https://www.roboternetz.de/wissen/in...e#I2C_Software


    (liegt u.A. daran, daß Bascom Start und RepStart gleich behandelt )
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Du kannst das in die I2c.LIB (vorn) einfügen
    Code:
    [MY_I2C_START]
    MY_I2C_START:
    $external _I2C
    * cbi _sclDDR,_SCL                    ; release SCL
    * cbi _SdaDDR,_SDA                    ; release SDA
      rcall _i2c_hp_delay                 ; half period delay
    * Sbi _sdaDDR,_sda                    ; force SDA low
      Rjmp _i2c_hp_delay
    [END]
    dann im Bascom bei Tools->LibManager I2c.lib Compilieren

    In deiner Bascom Source einfügen

    $external MY_I2C_START


    Und dann statt "I2CSTART"

    sagst du "Gosub MY_I2C_START"


    das wäre dann ein konformer Start.


    Mal sehen, ob es daran überhaupt liegt
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Es lag tatsächlich am I2CSTART GRRRRRRRR

    Also, meine Lösung:

    In der Lib steht was von

    *sbi _sclDDR,_SCL ; force SCL low ...

    Da hab ich dann ein ; reingetan auf:

    ;*sbi _sclDDR,_SCL ; force SCL low

    und schon marschiert das Gerät ... das ist doch zum Mäusemelken
    und ich hab da 2 Nächte mit rumgewerkelt und kam nicht drauf.

    Vielen herzlichen Dank für die Hilfe !!!
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Ist die Lib von Bascom dann Fehlerhaf oder wie darf man das dann Verstehen?

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    nunja, für diesen speziellen Fall und Baustein
    ist die lib nicht geeignet, da sie die
    Start als Restart-Variante benutzt.
    In anderen Fällen wie z.B. eeprom
    hat die Geschichte einwandfrei funktioniert,
    nur eben hier nicht und das macht das
    Fehler suchen ziemlich aufwendig.
    Ich hab nun 2 Nächte dran gesessen
    und habs schlussendlich mit Hilfe des
    Forum und nem Speicheroszi dann rausbekommen,
    aber ohne die Hilfsmittel
    währ ich ziemlich auf dem Schlauch gestanden
    muss ich gestehen.
    Ich finds auch schade, das die I2C-Routinen
    die vorhandenen Hardware TWI Resourcen
    nicht mit benutzt
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich finds auch schade, das die I2C-Routinen
    die vorhandenen Hardware TWI Resourcen
    nicht mit benutzt
    Wenn du HW-TWI eingebaut hast, mußt du
    $LIB "I2C_TWI.LBX"
    einfügen , dann verwendet Bascom das Zeugs
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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

LiFePO4 Speicher Test