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

Thema: RP6: Probleme mit I2C und move

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Der Hinweis wo ich das finde ist schon mal super - vielen herzlichen Dank dafür

    Code:
    /*****************************************************************************/ 
    // External Interrupt Output  
    // Can be used to notify Master Controllers  
    // about events when operating in Slave Mode. 
     
    /** 
     * Set external interrupt to high level 
     */ 
    void extIntON(void) 
    { 
        DDRA |= E_INT1; 
        PORTA |= E_INT1; 
    } 
     
    /** 
     * Set external interrupt to low level 
     */ 
    void extIntOFF(void) 
    { 
        PORTA &= ~E_INT1; 
        DDRA &= ~E_INT1; 
    }
    D.h.
    ON = Ausgang + high
    OFF = Eingang + Kein Pullup
    -> Kein Konflikt möglich

    Wobei ich mich schon frage, ob es bein ON nicht besser währe erst auf High zu schalten und dann auf Ausgang und bei OFF erst auf Eingang und dann PullupAus. Sonst kann ja für einen sehr kurzen Augenblick doch eine "hartes" low an der Interrupt-Leitung geben.


    So, jetzt muss ich erst mal überlegen wie ich das mit der Pegelwandlung mache... Vielleicht kann man das I2C-Prinzip ja umstülpen.

    Viele Grüße
    -schumi-

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    So, jetzt muss ich erst mal überlegen wie ich das mit der Pegelwandlung mache...
    Haben die GPIOs des Raspberry denn andere Pegel als +5V/Gnd?
    Oder warum braucht es eine Pegelanpassung?
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Jep, die haben 3V3, aber ich glaub ich machs so:

    Code:
                       D1
       3V3 ------+-----|>|------+------ 5V
                 |              |
                 |             | |  R1
                 |             | |  6k6 oder größer
                 |              |
                 +--------------+
                                |
                               | |  R2
                               | |  10k
                                |
                               ---  GND
    Hoffentlich erkennen die AVRs die 3.3V mit der Diode dazwischen auch noch als High. Naja, wird schon klappen. Hab noch irgendwo so Germaniumteile (uf=0V3) rumfliegen

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Also so irgendwie wills immer noch nicht funktionieren...

    • Ich kann mit dem Raspberry Pi den Status von INT1 abfragen (mit Spannungsteiler von 5V auf 3V3)
    • Wenn ich z.B. einen Bumper drücke und somit INT1 auslöse kann ich INT1 auch folgendermaßen wieder löschen:

    Code:
    int main()
    {
        rp6rpi_init();
        rp6rpi_openConnection();
        rp6rpi_task_RP6RPISystem();        // Read all Registers
        rp6rpi_closeConnection();
        return 0;
    }
    • Wenn ich den Rp6_Move-Befehl mit dem im ersten Beitrag gezeigten Code ausführe wird wie zu erwarten INT1 ausgelöst und der Move-Vorgang abgebrochen.



    Jetzt hab ich den Code so umgeändert, dass immer wenn INT1 ausgelöst wird, die Register gelesen werden:
    Code:
    int main()
    {
        rp6rpi_init();
        rp6rpi_openConnection();
        rp6rpi_move(60, FWD, 300);
        while(1)
        {
            if(rp6rpi_return_INT1())
                rp6rpi_task_RP6RPISystem();        // Read Registers
        }
        rp6rpi_closeConnection();
        return 0;
    }
    Wenn ich an INT1 messe bekomme ich 0V, d.h. der Interrupt wird auch zurückgesetzt.

    Trotzdem bewegt sich der RP6 nur ein ganz kleines Stück vorwärts. WARUM? Was fehlt?


    Viele Grüße
    -schumi-

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 01.09.2010, 12:34
  2. per TV-remote ein "move" programmablauf auslösen..
    Von carlitoco im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 01.04.2008, 20:59
  3. Probleme mit Op-Amp
    Von Xtreme im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 30.07.2007, 17:03
  4. pwm Probleme
    Von fatjoe im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 01.05.2007, 11:35
  5. Probleme mit den AVR´s
    Von mcmonkey im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 23.02.2005, 19:21

Berechtigungen

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

Labornetzteil AliExpress