- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: Kompass-Modul CMPS10 I2C-Adresse ändern (Bascom)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.06.2012
    Beiträge
    29

    Kompass-Modul CMPS10 I2C-Adresse ändern (Bascom)

    Anzeige

    Powerstation Test
    Fröhliche Weihnachten allerseits!

    Ich versuche seit zwei Tagen, die I2C-Adresse eines CMPS10-Moduls zu ändern.
    Laut Datenblatt muss dazu die Sequenz 0xA0, 0xAA, 0xA5, 0xC2 (resp. die neue Adresse) mit einer Verzögerung
    von 100ms in das Register 22 geschrieben werden.

    Ich verwende dazu folgenden Code:
    Code:
    ...
    Config Scl = PORTC.5
    Config Sda = PORTC.4
    
    Config I2cdelay = 100
    
    I2cinit
    
    ...
    
    Dim Sendbytes(5) as Byte
    
    Cmps_slaveid = &HC0
    
    Sendbytes(1) = 22
    Sendbytes(2) = &HA0
    Sendbytes(3) = &HAA
    Sendbytes(4) = &HA5
    Sendbytes(5) = &HC2
    
    I2csend Cmps_slaveid , Sendbytes(1) , 5
    
    Print Err
    
    ...
    Der Code kompiliert und wird auch ausgeführt, aber das Modul reagiert weiterhin an der Adresse 0xC0, nicht 0xC2.

    Hat jemand eine Idee, was ich anders machen müsste?

    Danke & Gruss

    Tobi

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi Tobi,
    jedes Byte muss einzeln gesendet werden mit Pause und ohne Unterbrechungen, etwa so:
    Code:
          Disable Interrupts                          'Keine Unterbrechungen!
          I2cstart
          I2cwbyte Srf10_adr                          'Alte I2C Adresse
          I2cwbyte 22                                  'Register = 22
          I2cwbyte &HA0
          I2cstop
          Waitms 100
          I2cstart
          I2cwbyte Srf10_adr
          I2cwbyte 22                                  'Register = 22
          I2cwbyte &HAA
          I2cstop
          Waitms 100
          I2cstart
          I2cwbyte Srf10_adr
          I2cwbyte 22                                  'Register = 22
          I2cwbyte &HA5
          I2cstop
          Waitms 100
          I2cstart
          I2cwbyte Srf10_adr
          I2cwbyte 22                                  'Register = 22
          I2cwbyte Srf10_newadr                       'Neue I2C Adresse!
          I2cstop
          Enable Interrupts
          Waitms 50
    Gruß
    Dirk

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    24.06.2012
    Beiträge
    29

    Hi Dirk,

    vielen Dank für deine Antwort, damit hats geklappt.
    Tatsächlich war dein Hinweis, dass keine Unterbrechungen dazwischenkommen dürfen, der entscheidende Punkt.
    Die Abfolge, welche die Bytes mittels "i2cwbytes" einzeln sendet, hatte ich auch schon probiert - allerdings ohne Interrupts zu unterbinden.

    Code:
    Disable Interrupts
    ist die wirklich kritische Zeile!

    Danke

    Tobi

Ähnliche Themen

  1. CMPS10 E-I2C Example v1.1 for C-Control I V2.0
    Von Windt H.J. im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 09.11.2011, 12:11
  2. RN-Speak Modul hat I2C-Bus-Adresse vergessen
    Von Claus73 im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 5
    Letzter Beitrag: 21.01.2011, 08:25
  3. Usb->seriell-adapter adresse ändern
    Von Roboman93 im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 27.06.2008, 14:13
  4. RN-Relais (PCF 8574) Slave Adresse ändern
    Von ulby im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 28.12.2007, 11:34
  5. I2C Ports in Bascom ändern
    Von FlashCube im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 07.10.2006, 19:39

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad