- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: RP6Control_MultiIO_selbsttests - keine ausgabe?

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
    77
    Beiträge
    2.180

    RP6Control_MultiIO_selbsttests - keine ausgabe?

    hi,

    eigentlich wollte ich nur einen servo testen...

    nicht dass ich irgendwelche probleme gehabt hätte, ich habe nur ein servo angeschlossen und wollte es testen. Die multiIO meldet sich am LCD und auch im terminal, die LEDs werden angemacht und dann auch ausgeschaltet. Und dann ist funkstille...

    mit einem anderen programm geht der servo...

    die selbsttest_2 scheint zu funktionieren, die meldung kommt, die ADC werte auch...

    die selbsttest_3 meldet sich, die LEDs an der bumperplatine blinken abwechselnd, dann komt im LCD die abfrage der bumper, beim betätigen leuchten die zugehörigen LEDs, im LCD kommt aber nichts an, im terminal kommen noch die werte der sharps, obwohl ich keine habe...

    die selbsttest_5 bringt im LCD verschiedene werte der minimu - da ich die noch nicht richtig kalibriert habe, kann ich nicht sagen ob diese stimmen, sie verändern sich, wenn m,an den RP6 dreht...

    was mich beunruhigt ist die reaktion auf die selbsttest_1 - nämlich gar keine...

    alle testdateien (hex) stammen aus den beispielen, am inhalt habe ich nichts geändert...

    bevor ich anfange alles auseinander zu schrauben und löten, woran könnte es liegen???
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,

    zum Selbsttest 1:
    Keine Ahnung, woran das liegt.
    Klappte die Demo denn früher OHNE den Servo-Anschluß?
    Wenn ja:
    Nimm mal die Servopower raus:
    // setServoPower(1); // Servo power ON!
    ... und auch die Servoansteuerung:
    // setServo(1, servopos);

    Läuft der Selbsttest 1 (natürlich neu kompiliert!) jetzt?
    Wenn nein:
    Nimm nacheinander die Teile für RTC, EEPROM, LTC2990 usw. raus und teste nach Neukompilierung die Restfunktionen.
    So kannst du vielleicht eingrenzen, wo es hakt.

    Zum Selbsttest 3:
    Wenn du keine Sharps hast, muss die Definition:
    #define SHARP_SENSORS // SHARP IR distance sensors are used
    ... in der RP6M256_LFSBumperLib.h auskommentiert sein. Dort dürfen nur die Definitionen aktiv sein, für die auch Hardware angeschlossen ist.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hier die überprüfung der jumper auf dem IO board, könnte bitte jemand nochmal einen blick draufwerfen (auch wenn ich schon seit längerem nichts geändert habe - ausser den jumper J3_sda hinzu)

    Klicke auf die Grafik für eine größere Ansicht

Name:	2014_02_18_jumper_m32-1.jpg
Hits:	4
Größe:	67,5 KB
ID:	27552

    und hier die vorlage mit kommentaren:
    Klicke auf die Grafik für eine größere Ansicht

Name:	2014_02_18_jumpertest_1-1.jpg
Hits:	5
Größe:	48,3 KB
ID:	27551

    die ausgabe des selftest_1 ist unverändert...

    Code:
    3V3 Voltage:  0.0V
    ADC 3V3: 1
    NOT touched.
    ADC Touch: 1
    Temperature:  21.1°
    RTC: 10:32:13  18.02.2014
    Temperature:  19.5°
    BAT Current: -198.8mA
    BAT Voltage:  7.8V
    SERVO Volt.:  5.0V
    VCC Voltage:  5.1V
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken 2014_02_18_jumper_m32-1.jpg  
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,
    - abbruch/ausschalten ohne shut down
    ...
    - die multiIO bleibt in NICHT shutdownmodus, die LEDs brennen, servopower ist an.


    der zusammenhang mit dem loaderkabel...
    Wenn du die Demo 1 "OHNE shut down" beendest, dann ist die MultiIO auch nicht im Shutdown-Modus.
    Du MUST also mit den Tasten 4 --- 1 in den Shutdown-Modus schalten und erst danach mit Reset rausgehen.
    Wenn du dann die MultiIO nicht mehr (durch ein M32-Programm) ansprichst, bleibt sie im Shutdown-Modus.

    Zu den Jumpern:
    Der Wahl-Jumperblock (J_WAHL) ist nicht in Standard-Stellung für die M32 (hatte ich schon oben weiter geschrieben), sondern du hast die Jumper dort auf die LFS-Nutzung (Linienfolge-Sensoren) umgesteckt.

    Aus der RP6Control_MultiIO.h:
    Code:
    #define ADC_MULTIIO_LFS_L                ADC_3    // ADC-Mxxx: ADC
    #define ADC_MULTIIO_LFS_M                ADC_4    // ADC-Mxxx: ADC
    #define ADC_MULTIIO_LFS_R                ADC_5    // ADC-Mxxx: ADC
    Die LFS nutzen bei dir aktuell die ADC-Kanäle 3 bis 5.
    Durch das Umstecken der Jumper auf J_WAHL in die LFS-Stellung sind damit die 3V3 und Touch-Sensoren nicht mehr verfügbar.
    Sie sind so definiert:
    Code:
    #define ADC_MULTIIO_3V3                    ADC_4    // ADC-Mxxx: ADC
    #define ADC_MULTIIO_TOUCH                ADC_3    // ADC-Mxxx: ADC
    ... liefen also (in der J_WAHL Standardstellung!) auf den ADC-Kanälen 3 und 4, die jetzt die LFS für sich brauchen.

    Ergo:
    Mit der M32 sind (wegen der beschränkten Zahl von ADC-Kanälen) ENTWEDER 3V3, Touch ODER die LFS (links u. Mitte) nutzbar (je nach J_WAHL Jumperstellung).
    Wenn du unbedingt die 3,3V-Messung brauchst, kannst du dafür alternativ die ADC-Kanäle 2 oder 7 nutzen, wenn du die nicht für analoge Sensoren auf dem Bumper-Board (Sharps, Radar) brauchst. Auch für den Touch-Sensor könnte man dann einen dieser Kanäle nutzen.
    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
    Hi Dirk,
    Zitat Zitat von Dirk Beitrag anzeigen
    Der Wahl-Jumperblock (J_WAHL) ist nicht in Standard-Stellung für die M32 (hatte ich schon oben weiter geschrieben), sondern du hast die Jumper dort auf die LFS-Nutzung (Linienfolge-Sensoren) umgesteckt.
    verdammt, 3mal gelesen, trotzdem nicht drauf geachtet, dass ich umschalte!

    Zitat Zitat von Dirk Beitrag anzeigen
    Mit der M32 sind (wegen der beschränkten Zahl von ADC-Kanälen) ENTWEDER 3V3, Touch ODER die LFS (links u. Mitte) nutzbar (je nach J_WAHL Jumperstellung). Wenn du unbedingt die 3,3V-Messung brauchst, kannst du dafür alternativ die ADC-Kanäle 2 oder 7 nutzen, wenn du die nicht für analoge Sensoren auf dem Bumper-Board (Sharps, Radar) brauchst. Auch für den Touch-Sensor könnte man dann einen dieser Kanäle nutzen.
    also werden die ADC kanäle nur für die messung der 3V3 im selftest_1 gebraucht? An verschiedenen stellen der multiIO habe ich ja diese spannung gemessen, also sollte ich sie brauchen, kann ich sie dort nutzen, oder?
    Würde es für die messung der 3V3 und den touch reichen die ADC kanäle hier in 2 bzw. 7 umzubenennen, oder ist mehr zu tun? Andere Sensoren habe ich auf der bumperplatine nicht...

    Code:
    #define ADC_MULTIIO_3V3                    ADC_4    // ADC-Mxxx: ADC
    #define ADC_MULTIIO_TOUCH                ADC_3    // ADC-Mxxx: ADC
    Der hintergrund für die 3V3 ist folgender: ich möchte für die verbindung zwischen RP6 und dem PC/loader mit hilfe von bluetooth-modulen realisieren, die brauchen aber 3.3V. Sollte ich die 3.3V von der multiIO holen, oder an dem 10poligen stecker die 5V mit einem spannungsteile in 3.3V umwandeln?
    gruß inka

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,
    also werden die ADC kanäle nur für die messung der 3V3 im selftest_1 gebraucht?
    Eigentlich kann man die 3V3-Messung und die Touch-Funktion mit der MultiIO-Lib in allen eigenen Programmen nutzen. Man muss nur leider (mit der M32) auf die beiden Funktionen verzichten, wenn man die LFSs nutzen will.

    An verschiedenen stellen der multiIO habe ich ja diese spannung gemessen, also sollte ich sie brauchen, kann ich sie dort nutzen, oder?
    Ja.

    Würde es für die messung der 3V3 und den touch reichen die ADC kanäle hier in 2 bzw. 7 umzubenennen, oder ist mehr zu tun? Andere Sensoren habe ich auf der bumperplatine nicht...
    Die Grundfrage ist erst einmal:
    Brauchst du die 3,3V-Messung und die Touch-Funktion überhaupt? Wenn nein, lass die beiden (weniger wichtigen) Funktionen doch "außer Betrieb".

    Wenn du die 3,3V-Messung parallel zu den LFS nutzen willst (J_WAHL-Jumper bleiben in der LFS-Stellung!), dann kannst du in der RP6Control_MultiIO.h Datei nach diesem hier:
    Code:
    // 3V3 Voltage Sensor:
    #define ADC_MULTIIO_3V3					ADC_4	// ADC-Mxxx: ADC
    //#define ADC_MULTIIO_3V3					ADC_7	// ADC-Mxxx: ADC
    //#define ADC_MULTIIO_3V3					ADC_2	// ADC-Mxxx: ADC
    ... suchen und darin die 1. Definition auskommentieren. Dafür nimmst du die "//" vor der 3. Definition (Kanal 2 soll für 3V3 genutzt werden!) weg.
    Nach Neukompilieren ist die Lib jetzt umgestellt auf ADC-Kanal 2 für die 3,3V-Messung.
    Auf der Platine must du zusätzlich noch einen Jumper setzen:
    Auf den Jumperblock oberhalb des ADC_Mxxx-Steckers (J_ADC) gehört ein Jumper auf die Pins ganz links, die darüber mit "3V3" und darunter mit "Pins 2" beschriftet sind.
    Dann sollte die 3,3V-Messung wieder klappen.

    Wenn du den Touch-Sensor auch (parallel zu den LFS) nutzen willst, kannst du den Kanal 7 nutzen.
    Diese Definition hier:
    Code:
    // Touch Sensor (with NE555):
    #define ADC_MULTIIO_TOUCH				ADC_3	// ADC-Mxxx: ADC
    ... kannst du auskommentieren und so ergänzen:
    Code:
    // Touch Sensor (with NE555):
    //#define ADC_MULTIIO_TOUCH				ADC_3	// ADC-Mxxx: ADC
    #define ADC_MULTIIO_TOUCH				ADC_7	// ADC-Mxxx: ADC
    Nach Neukompilieren ist die Lib jetzt umgestellt auf ADC-Kanal 7 für die Touch-Funktion.
    Auf der Platine must du zusätzlich noch eine Kabelverbindung herstellen:
    Vom J_WAHL-Jumperblock Pin "NE5" zum J_ADC-Jumperblock Pin "9".

    Der hintergrund für die 3V3 ist folgender: ich möchte für die verbindung zwischen RP6 und dem PC/loader mit hilfe von bluetooth-modulen realisieren, die brauchen aber 3.3V.
    Mit dem Thema "3,3V MESSEN" (darum ging es bis jetzt...) hat die "STROMVERSORGUNG mit 3,3V" nichts zu tun. Du kannst die 3,3V auf der MultiIO nutzen, OHNE SIE ZU MESSEN.

    Sollte ich die 3.3V von der multiIO holen,...
    Nein, ich würde unbedingt für die BT-Module eine eigene Spannungsversorgung 3,3V (auf einer eigenen BT-EXP?) aufbauen, z.B. mit so einem Spannungsregler. Als Eingangsspannung dafür kannst du +UB auf dem RP6 Mainboard nehmen (NICHT vom XBUS!).
    Grund: Die BT-Module stören ggf. die restlichen Funktionen der MultiIO. Die 3,3V-Versorgung ist da eigentlich nur für 3,3V-Sensoren vorgesehen.
    Du kannst aber auch mal fabqu danach fragen: Er kann dir das besser beantworten.
    Gruß
    Dirk

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Hi Dirk, das wirtd ja immer schlimmer!!!

    mit diesem
    Code:
    #include "RP6ControlLib.h"
    #include "RP6I2CmasterTWI.h"
    #include "RP6Control_MultiIOLib.h"
    #include "RP6Control_I2CMasterLib.h"
    #include "RP6Control_MultiIO.h"
    #include "RP6ControlServoLib.h"
    
    #define I2C_RP6_BASE_ADR 10
    
    
    uint16_t servopos;
    uint8_t i;
    
    
    /*********************I2C-fehlermeldungen******************/
    
    void I2C_transmissionError(uint8_t errorState) //gibt I2C fehlermeldungen über LCD aus
    {
        clearLCD();
        writeStringLCD_P("I2C ERROR -->");
        setCursorPosLCD(1, 0);        // line 2
        writeStringLCD_P("TWI STATE: 0x");
        writeIntegerLCD(errorState, HEX);
    }
    /****************************************************/
    int main(void)
    {
    
        initRP6Control();
        multiio_init();
        initLCD();
    
        setLEDs(0b1111);
        mSleep(500);
        setLEDs(0b0000);
    
        I2CTWI_initMaster(100);
        I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); //aktiviert I2C fehlermeldungen
    
        showScreenLCD(" RP6Control M32", " servo_test","","");
        mSleep(1500);
        clearLCD();
    
    
        setLEDs(0b0001);
        multiio_init();
    
        while(true)
        {
            setMultiIOLED1(1);
            setMultiIOLED1(0);
    
            }
    
    
    
        return 0;
    }
    leuchten nun nicht einmal die multi_IO LEDs!!!


    was ist da wieder schiefgelaufen? Wie bekomme ich das raus???

    edit: der selftest läuft jetzt durch:

    Code:
    3V3 Voltage:  0.0V
    ADC 3V3: 0
    NOT touched.
    ADC Touch: 0
    Temperature:  22.9°
    RTC: 18:48:44  16.02.2014
    Temperature:  21.4°
    BAT Current:    4.1mA
    BAT Voltage:  7.3V
    SERVO Volt.:  5.0V
    VCC Voltage:  5.1V
    Geändert von inka (16.02.2014 um 18:31 Uhr)
    gruß inka

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,
    leuchten nun nicht einmal die multi_IO LEDs!!!
    In deiner Schleife müßtest du noch 2 Pausen (mSleep(500); ) einbauen, um das Blinken der LED1 sehen zu können.

    Wie ist das in der Original-Demo?
    Da müßten ja die 4 LEDs auf der MultiIO im Wechsel blinken. Klappt das so?
    Gruß
    Dirk

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi Dirk,

    gleich zu anfang - es geht wieder (fast) alles. Erklärung habe ich keine, versuche aber die situation so gut wie möglich zu beschreiben:

    - im oktober 2013 habe ich den USRBUS1 mit dieser belegung auf die EXP-platine herausgeführt, die verbindung der beiden anschlüsse (Y7 und Y9) zum neuen start/stop button wurde innerhalb der EXP mit zwei steckverbindungen realisiert, die verbindung zwischen base und dem USRBUS1 wurde nach dem_hier ausgeführt

    - vorgestern habe ich diese steckverbindungen durch gelötete verbindungen ersetzt, danach funktionierte zunächst alles wie gehabt, einen ganzen tag lang...

    - gestern nun die beschriebenen schwierigkeiten...


    als erstes habe ich natürlich die neuen verbindungen geprüft, alles ok.... Die richtigen pinns, keine lötbrücken woandershin...

    dann lief nicht einmal mehr das selftest_1 programm der multiIO, wie bereits beschrieben...

    gestern, spät abends, als ich schon fast die hoffnung aufgegeben habe, machte ich folgenden versuch:

    ich löste die verbindung des USRBUS1 steckers auf der EXP-platine und startete das selftest_1 mit dem ursprünglichem start/stop button auf der base - und es lief! Keine ahnung wieso...

    Jetzt ist die steckverbindung des USRBUS1 zu der EXP und dem neuen startbutton wieder angeschlossen und es geht alles wie gehabt...


    Wie gesagt, eine erklärung ist die beschreibung hier nicht, vielleicht findet jemand von Euch eine...



    Zitat Zitat von Dirk Beitrag anzeigen
    In deiner Schleife müßtest du noch 2 Pausen (mSleep(500); ) einbauen, um das Blinken der LED1 sehen zu können.
    nachdem die probleme verschwunden waren leuchtete die LED1 immerhin...

    Zitat Zitat von Dirk Beitrag anzeigen
    Wie ist das in der Original-Demo?
    Da müßten ja die 4 LEDs auf der MultiIO im Wechsel blinken. Klappt das so?
    nein, nix...

    noch eine frage: im selftest_1 für die multiIO ist ein shutdown drin, der auf die taster 4 und 1 reagiert. Es passiert immer wieder (zumindest ist mir das beim ausführen des selftest_1 aufgefallen), dass - wenn vorher das selftest_1 lief - nach dem einschalten des RP6 zwei LEDs auf der multiIO leuchten, was ja wohl bedeutet, dass dieser shutwdown nicht durchgeführt wurde. Ist da evtl. ein zusammenhang mit meinen problemen?

    momentan gibt der selftest_1 folgendes aus:
    Code:
    3V3 Voltage:  0.0V
    ADC 3V3: 0
    NOT touched.
    ADC Touch: 0
    Temperature:  22.4°
    RTC: 19:08:04  16.02.2014
    Temperature:  20.9°
    BAT Current:    5.7mA
    BAT Voltage:  7.2V
    SERVO Volt.:  5.0V
    VCC Voltage:  5.1V
    ist das normal, dass die 3.3V als "0" ausgegeben werden? NOT touched kommt auch wenn ich den bestimmten pin berühre...
    gruß inka

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,

    im Grunde funktioniert ja das meiste.

    Zu der 3V3 Sache:
    Hast du die 3,3V-Versorgung eingeschaltet: Klick?

    Zum Touchsensor:
    Wenn der gar nicht reagiert, müßtest du rund um den NE555 (IC14), Q13, Q14, R58, R59, C31 schauen und evtl. nachlöten.

    Zu den Status-LEDs und Servo-Ansteuerung:
    Beides wird ja mit dem PCA9685 gesteuert. Wenn die 4 LEDs bei der Original-Demo 1 nicht abwechselnd (je 2 an) blinken, funktioniert evtl. der PCA9685 nicht. Wenn das so wäre, könnte auch das Servo nicht angesteuert werden. Das würde auch erklären, warum nach Shutdown LEDs an bleiben.
    Wenn die Adress-Jumper für den PCA9685 (sitzen unterhalb des PCA) richtig sitzen, müßtest du evtl. den Vielbeiner nachlöten oder die MultiIO fabqu zur Reparatur schicken.
    Gruß
    Dirk

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Keine Ausgabe über UART
    Von tuempeltaucher im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 5
    Letzter Beitrag: 19.12.2011, 19:23
  2. Antworten: 5
    Letzter Beitrag: 13.11.2010, 16:02
  3. Mega16 PWM am OC2 über Timer2 - keine Ausgabe am Pin?
    Von BlooD im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 22.07.2007, 21:58
  4. AVR kaptt? Keine ausgabe an 3 pins...
    Von Maverick89 im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 25.05.2007, 22:11
  5. Warum keine Klassen für Ein-/Ausgabe?
    Von p_mork im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 17.03.2007, 15:42

Berechtigungen

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

12V Akku bauen