i2c zählt nur bis 7f Hex entspricht 125 dezimal

  • Hallo Leute, nd

    ich experimentiere seit kurzem mit dem Pi

    Ich möchte an eine Motorsteuerung (mehrere Motoren) welche über einen µC betrieben wird entsprechende Signal senden.
    Das mache ich mit I²C. Dabei ist der PI der Master.

    1 Buffer übergibt welche Motor und welche Drehrichtung. z.B. 0x01 ist Motor 1 Vorwärts
    2 Register für die Übergabe der Schrittzahl

    2 Register geben von µC die Tatsächlich gefahren Schrittzahl zurück (zur Kontrolle zwecks auslaufen des Motors)

    Nun habe ich angefangen die Werte mit

    i2cset -y 1 ....

    zu übergeben und mit

    i2cget -y 1 [Buffer]

    zu lesen.

    z.B.

    Wenn ich einen Buffer Hexadezimal 0xbb übergebe
    Ihn danach wieder Abfrage bekomme ich 0x3b zurück

    b ist 1011
    3 ist 0011

    ebenso ist es mit a, c usw

    Was ich glaube ist das
    das erste Bit nicht mit Übergeben wird!

    Ich wies aber nicht warum.

    [font="Arial"]Ähnlich ist es mit der Schrittrückgabe [/font]

    z.b.

    ich sende als Schrittweite für den Motor 128 Schritte was Hexadezimal 0x80 ist
    Nun Müsste ich bei dem einen Buffer 0x00 zurück bekommen und bei dem anderen Buffer 0x80

    Jedoch bekomme ich 0x01 bei dem Buffer der der eigentlich 0x00 haben müsste
    und 0x00 bei dem Buffer der 0x80 zurück.

    Das Bedeute Er zählt bloss bis 0x7f --> 0111 1111
    und dann ließt er den andern Buffer 0x01

    Mh ich habe keine Ahnung woran das liegt.

    Einmal editiert, zuletzt von kosti7 (13. Mai 2013 um 13:49)

  • Also wenn ich hier was mit I2C steuere, dann sehen die Befehle so in dieser Art aus:

    i2cset -y <Bus Nummer> <i2c Device Adresse> <Register> <Wert>

    i2cget -y <Bus Nummer> <i2c Device Adresse> <Register>

    Was für einen i2c Motortreiber verwendest Du denn?

  • Hallo
    Habe das gleiche Problem, sowohl mit Modell A als auch Modell B. Schreibe mit i2cset -y 0 oder 1 0x28 0x00 0xff, i2cget gibt mir dann 0x7f zurück. MSB fehlt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!