- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 25

Thema: I2C Verständnisprobleme

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ich bin mir sehr sicher, das dies Übertragungsfehler verursacht durch I2C sind. Genau solche Fehler treten z.B. auch mit Remotrol auf, einer Steuersoftware für den RP6. Wenn es dich wirklich interssiert, schau mal in den Thread:
    https://www.roboternetz.de/community...-RP6Lib-Bugfix
    LG Rolf
    Geändert von RolfD (21.04.2011 um 17:09 Uhr)
    Sind Sie auch ambivalent?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Ich bin mir sehr sicher, das dies Übertragungsfehler verursacht durch I2C sind.
    Bevor man das sagen kann, muss das Testprog erst mal funktionieren:
    1. Von Ubat wird nur das Highbyte gelesen und das sollte zwar auch nicht 0 sein, aber das müßte man noch checken.
    2. Von ADC0 und ADC1 wird nur das Lowbyte gelesen, da kann man nicht mit den direkt ermittelten 16-Bit-Werten vergleichen.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    @Dirk
    Welchen Grund sollte es sonst haben das Werte bei der Übertragung ab und zu verloren gehen.. und zwar ausgerechnet die spät gelesenen Register so ca. ab pos 20?
    Ausserdem funktioniert das Testprogramm schon was länger.
    Is aber auch egal. Mein Bot macht was er soll...

    Edit: Sorry, das war wohl ein Missverständnis zwischen mir und Dirk
    Geändert von RolfD (21.04.2011 um 22:11 Uhr)
    Sind Sie auch ambivalent?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Ausserdem funktioniert das Testprogramm schon was länger.
    Ich habe vom Testprog von RP6fahrer (17:25) "task_test" gesprochen.
    Gruß
    Dirk

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    10.09.2010
    Beiträge
    74
    @Dirk
    Ja, dein Vorschlag hat funktioniert. Jetzt zeigt er die richtigen Werte an. Ich habe allerdings dazu noch ein paar fragen
    Code:
    I2CTWI_readRegisters(10, I2C_REG_ADC_ADC0_L, RP6data, 2);
        adc0 = RP6data[0] + (RP6data[1]<<8);
    I2CTWI_readRegisters ist der Befehl zum Lesen der Register
    10 die Adresse des Slave
    I2C_REG_ADC_ADC0_L das Register zum Lesen des Adc0 Registers -- Warum nicht I2C_REG_ADC_ADC0_H?
    RP6data ne Variable?
    2 wozu ist die gut?

    RP6data[0] + (RP6data[1]<< und was hat das im einzelnen zu sagen?

    Ich hoffe ich nerve euch nicht damit. Aber ich finde irgendwie nirgendwo eine einfache Erklärung zu den ganzen Aufrufen.

    Naja, denn noch nen schönen Abend und schöne Ostern
    LG RP6fahrer

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @RP6fahrer:
    I2C_REG_ADC_ADC0_L ist nur eine Konstante, die ist in der RP6Control_I2CMasterLib.h als 23 definiert.
    Du könntest also auch I2CTWI_readRegisters(10, 23, RP6data, 2); schreiben.

    Damit liest du 2 Bytes, das erste ist der Low Wert von ADC0 (aus Register 23), der wird in RP6data[0] gespeichert.
    Das 2. Byte ist der High Wert von ADC0 (aus Register 24), der wird in RP6data[1] gespeichert.

    I2C_REG_ADC_ADC0_H braucht man nicht, weil das 2. Byte automatisch aus Register 24 gelesen wird, wenn man 2 Bytes einliest.

    Der komplette adc0-Wert errechnet sich als: adc0 = Low Wert + (256 * High Wert), also:
    adc0 = RP6data[0] + (RP6data[1] * 256);

    Anstelle von *256 kann man auch achtmal nach links schieben: <<8

    RP6data iat eine Variable.
    Gruß
    Dirk

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    10.09.2010
    Beiträge
    74
    Ach, danke, diesen habe ich jetzt verstanden. Also nochmals danke.
    Ich werd jetzt das Wochenende noch zum einarbeiten nutzen.

    Eine Frage habe ich allerdings noch: gibt es ein Buch oder sowas, wo man das noch unterstützend lernen/ verstehen kann. Oder wie habt ihr das so gut gelernt?

    Na dann. Schönen Abende und schöne Ostern
    LG RP6fahrer

Ähnliche Themen

  1. Verständnisprobleme -> Drehmomentrechner
    Von selan im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 13.11.2006, 14:25
  2. Verständnisprobleme über die Funktionsweise eines Interrupts
    Von electrofux im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 31.10.2006, 16:14
  3. Syntax - Verständnisprobleme
    Von R2D3212 im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 05.07.2006, 01:41
  4. Serielle Verständnisprobleme
    Von steffenvogel im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 09.04.2006, 13:23
  5. Antworten: 17
    Letzter Beitrag: 01.01.2006, 17:33

Berechtigungen

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

Labornetzteil AliExpress