- Reichelt Elektronik    Werbung      
Ergebnis 1 bis 10 von 255

Thema: IR-bake

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    Beiträge
    2.180
    hallo,

    ich musste die links und rechts IR-sensoren des linienfolgemoduls (einbaubedingt) in der lib tauschen:

    RP6Control_MultiIO.h:
    Code:
    // Other ADC channel definitions: 
    // (Depending on jumper settings on the MultiIO Project Board!) 
    // (The ADC-Mxxx plug is connected to the M32 ADC plug!) 
    #define ADC_MULTIIO_LFS_L                ADC_5    // ADC-Mxxx: ADC geändert von 3 in 5, (L=links in fahrtrichtung) 
    #define ADC_MULTIIO_LFS_M                ADC_4    // ADC-Mxxx: ADC 
    #define ADC_MULTIIO_LFS_R                ADC_3    // ADC-Mxxx: ADC geändert von 5 in 3 (R=rechts in fahrtrichtung)
    das hat soweit gut funktioniert, verunsichert bin ich durch diese defines, was ist das?

    RP6Control_LFSBumperLib.h:
    Code:
    // Define the use of the LFS Board here! 
    #define LFS                                // LFS Board is used 
    // --------------------------------------------------------------------------- 
     
    #define CH_LFS_L                        1 
    #define CH_LFS_M                        2 
    #define CH_LFS_R                        3
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    ... verunsichert bin ich durch diese defines, was ist das?
    Das sind die Nummern der ADC-Kanäle (CHannel). Die müssen so bleiben.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    Beiträge
    2.180
    hallo,

    wieder einmal eine anfängerfrage...

    folgende funktion funktioniert, beim empfang eines signals der IR-bake wird 000 angezeigt, wenn kein signal 004:

    Code:
    void read_Register_30(void)
    {
        I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 0); // Start with register 0...
        I2CTWI_readBytes(I2C_RP6_BASE_ADR,RP6data, 31); // and read all 30 registers
    
        uint8_t i = 0;
        for(i = 0; i < 31; i++)
        {
    //        mSleep(8);
            if (i == 30) IR_wert[0] = RP6data[30];
        }
    }
    diese aber nicht. Da kommt immer nur 000, egal ob IR-bake sendet oder nicht:

    Code:
    void read_Register_30(void)
    {
        I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30...
        I2CTWI_readBytes(I2C_RP6_BASE_ADR,RP6data, 1); // and read one register
        IR_wert[0] = RP6data[30];
    }
    ich verstehe einfach nicht warum, hab doch nur die schleife rausgenommen?
    gruß inka

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Nur die Schleife rausgenommen? Ich vermute mal (Glaskugel) das ist ein Stück Code aus dem i2c-Slave der Base.
    Du nimmst aber nicht nur die Schleife raus .. du nimmst dem System auch die benötigte Zeit um die Daten aufzuarbeiten.
    Die I2C Datenverarbeitung ist zeitkritisch. Wie so vieles andere an den RP6 Libs auch.
    Mach doch einfach mal:
    Code:
    void read_Register_30(void) {
    I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30...
    I2CTWI_readBytes(I2C_RP6_BASE_ADR,RP6data, 1); // and read one register
    mSleep(x);
    IR_wert[0] = RP6data[30];
    }
    und probiere mit Werten für x von 0 bis ... keine Ahnung.. 100 .. was die Funktion macht wenn du x bei sendender Bake erhöhst.
    Eigentlich sollte sich experimentell ein Wert ermitteln lassen, ab wieviel x die bake gefunden bzw diese 004 übertragen wird.

    Es würde mich auch nicht wundern, wenn Du bald die Erkenntnis hast, das sich die Motorsteuerung und die I2C slave lib jeweils als Zeitkritische Module sich im Prinzip gegenseitig in den Füßen stehen - weshalb es nicht ganz ist, das Base Slave Programm softwaremässig noch zu erweitern.
    Gruß
    Geändert von RolfD (12.03.2014 um 19:10 Uhr)
    Sind Sie auch ambivalent?

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Code:
        I2CTWI_readBytes(I2C_RP6_BASE_ADR,RP6data, 1); // and read one register
        IR_wert[0] = RP6data[30];
    Bei dem Code wird das über I2C gelesene Byte in "RP6data" gespeichert.
    Du must also mit: IR_wert[0] = RP6data; ... auslesen.

    Vorsicht mit den Namen von Variablen (Var) und Arrays (Var[n])!
    Gruß
    Dirk

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    Beiträge
    2.180
    @Dirk,

    bei genauerem hinschauen wars dann doch recht einfach:

    Code:
    void read_Register_30(void)
    {
        I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30); // Start with register 30...
        I2CTWI_readBytes(I2C_RP6_BASE_ADR,RP6data, 1); // and read one register
        IR_wert[0] = RP6data[30];
    }
    zum einen das "s", zum anderen das direkte auslesen in den IR-wert...

    Code:
    void read_Register_30(void)
    {
        I2CTWI_transmitByte(I2C_RP6_BASE_ADR, 30);
        IR_wert = I2CTWI_readByte(I2C_RP6_BASE_ADR);
    }

    @RolfD,

    der code hatte diesmal nichts mit code aus dem I2C-Slave der Base zu tun, war ein codeschnipsel aus einem der m32 beispiele...

    mit dem mSleep (evtl. stopwatsches) geht es jetzt weiter zu angleichung der sende/empfangfrequenz. So weit war ich eigentlich schon mal...

    danke Euch beiden...
    gruß inka

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    Beiträge
    2.180
    hallo Rolf,

    ich hätte da eine idee:

    ich selbst fühle mich nicht in der lage dazu mit meinen kentnissen und fähigkeiten die IR-bake im sinne Deiner vorschläge (oder denen von SlyD) zu erweitern....

    Möchte Dich aber dazu einladen, mit mir zusammen - oder auch allein, an einer verbesserung zu arbeiten (ich persönlich würde die variante der zusammenarbeit bevorzugen). Man würde dann quasi das zweite kapitel des artikels "IR-bake" schreiben. Das angebot an fertigen, gut funktionierenden IR-baken ist wirklich sehr überschaubar und ich glaube es gibt hier bedarf an beiden versionen, die eine so zu sagen für den "hausgebrauch", für die anfänger und bastler, die andere für die fortgeschrittenen....

    Was hälst Du davon? Was halten die mitlesenden davon?
    gruß inka

Ähnliche Themen

  1. IR-Bake
    Von tornado im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 05.07.2007, 17:37
  2. IR-Bake
    Von Bernd-das-Brot im Forum Sensoren / Sensorik
    Antworten: 38
    Letzter Beitrag: 13.12.2005, 16:14
  3. ir-bake
    Von pebisoft im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 8
    Letzter Beitrag: 17.01.2005, 13:41
  4. ir-bake
    Von pebisoft im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 17.01.2005, 07:01
  5. Bake
    Von techboy im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 02.11.2004, 10:17

Berechtigungen

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

    Werbung      12V Akku bauen