- SF800 Solar Speicher Tutorial         
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 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

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    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

  3. #3
    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?

  4. #4
    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

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    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

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    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

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Was halten die mitlesenden davon?
    das Thema Bake ist eigentlich schon durch. Das Rad neu zu erfinden, halte ich für nicht nötig. Trotzdem ist es nicht verkehrt, eigene Erfahrungen zu machen.

    Allerdings sollten sie dann nicht ungeprüft als neuer Standard stehen bleiben. Deswegen fand ich Rolfs Kritik angebracht, war aber abgeschreckt von der Reaktion darauf.

    Mit 2 555ern kannst du eine leidlich funktionierende Bake bauen, ok, aber genaue Frequenzen ohne aufwendige Kalibrierung kriegt man damit leider nicht hin.
    Die Bake selbst sollte punktförmig in alle Richtungen strahlen, Reflektoren oder Röhrchen schaden da nur. Reflexionen an Wänden sollten möglichst nicht detektiert werden, deshalb muss die Bake etwas mehr Leistung bringen als eine Fernbedienung und der Empfänger entsprechend unempfindlich gestaltet werden. Da kann man gleich eine Abschirmung für die Richtungserfassung anbringen.

    Gruß, Michael

Ä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
  •  

12V Akku bauen