- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 15

Thema: Programmstart mit Hindernissen

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
    Hi Uwe,
    habs getestet mit demselben Ergebnis wie bei dir:
    Nach Wifi-Start funktioniert das ACS beim Example_10_Move2 nicht, wohl aber nach dem Programmstart mit dem Start-Button. Immerhin fährt der RP6 herum und reagiert auf die Bumper.
    Die Ausgaben sehen aus wie vorgesehen, es gibt auch keine I2C-Fehlermeldungen.
    Gruß
    Dirk

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von basteluwe
    Registriert seit
    15.11.2012
    Beiträge
    131
    Zitat Zitat von Dirk Beitrag anzeigen
    Hi Uwe,
    habs getestet mit demselben Ergebnis wie bei dir:
    Nach Wifi-Start funktioniert das ACS beim Example_10_Move2 nicht, wohl aber nach dem Programmstart mit dem Start-Button. Immerhin fährt der RP6 herum und reagiert auf die Bumper.
    Die Ausgaben sehen aus wie vorgesehen, es gibt auch keine I2C-Fehlermeldungen.
    OK, genau so sieht's bei mir auch aus. Danke für deinen Test!
    Das ist dann ja aber wohl ein Fehler, denn wie SlyD in meinem I2C-Thema geschrieben hatte:

    "...normalerweise sollten immer alle Controller gestartet werden, wenn einer davon startet (Signal über den I2C Bus wird von allen Bootloadern beim Start gesendet / empfangen). Also auch wenn das Programm vom RobotLoader aus gestartet wird. Ist das nicht so läuft irgendwas verkehrt.

    Frage also: WAS ist verkehrt? Es scheint ja ein genereller Fehler zu sein, der mehrere User betrifft!

    Gruß Uwe

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo,

    bin diesen Monat leider extrem beschäftigt - werde mir das nächsten Monat genauer anschauen.

    Als Workaround: Pack einfach mal die Initialisierung für ACS usw
    // ---------------------------------------
    // Setup ACS power:
    I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_MED);
    // Enable Watchdog for Interrupt requests:
    I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true);
    // Enable timed watchdog requests:
    I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true);
    nochmal vor die Pausen am Anfang also direkt vor die Ausgabe auf dem Display (Zeile 699),
    ggf. auch zweimal mit weiterer Pause dazwischen (200ms).
    Könnte dann funktionieren.

    MfG,
    SlyD

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von basteluwe
    Registriert seit
    15.11.2012
    Beiträge
    131
    Zitat Zitat von SlyD Beitrag anzeigen
    Als Workaround: Pack einfach mal die Initialisierung für ACS usw. nochmal vor die Pausen am Anfang also direkt vor die Ausgabe auf dem Display (Zeile 699),
    ggf. auch zweimal mit weiterer Pause dazwischen (200ms).
    Könnte dann funktionieren.

    MfG,
    SlyD
    Danke SlyD.
    Mal sehen, ob ich das hinkriege. Der RP6 ist mein erster Einstieg in C (bisher nur Bascom). Ich fang also ganz klein an!
    Das wird wohl spannend

    Gruß Uwe

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo Uwe,

    ah OK - naja ist keine große Sache: wirklich einfach nur den Text da oben in die genannte Zeile kopieren (der steht dann also zweimal im Programm getrennt durch die Pausen und Display ausgaben) und dann neu compilieren.

    Dann nochmal probieren.


    Ich habs noch nicht getestet daher ohne Garantie dass es was ändert.

    MfG,
    SlyD

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von basteluwe
    Registriert seit
    15.11.2012
    Beiträge
    131
    Ich hole dieses Thema noch mal hoch, weil ich gerade mal wieder drüber gestolpert bin. Aus meiner Sicht ist es immer noch nicht gelöst.
    Zitat Zitat von SlyD Beitrag anzeigen
    Als Workaround: Pack einfach mal die Initialisierung für ACS usw
    nochmal vor die Pausen am Anfang also direkt vor die Ausgabe auf dem Display (Zeile 699),
    ggf. auch zweimal mit weiterer Pause dazwischen (200ms).
    Könnte dann funktionieren.
    SlyD
    Das hab ich versucht, bringt leider gar nichts. Wundert mich aber auch nicht, weil ja nicht nur Move10 sondern auch Move9 nicht fehlerfrei vom WiFi-Loader starten, und Move9 arbeitet ja nicht mit ACS. Mit dem ACS hat das also nichts zu tun.
    Es muß irgendwie an der Startroutine beider Prozessoren über I2C liegen.

    Uwe

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo,

    es geht dabei auch nicht um das ACS - es geht darum irgendwas beliebiges über den I2C Bus zu senden weil das den Start auslöst (kannst auch an Adresse 0, daten 0 senden ist egal).
    Das normale Programm braucht am Anfang evtl. zu lange bis der Bus reagiert und dann kommt es eben zu den "slave antwortet nicht" 0x20 Fehlern oben.
    Also möglichst früh senden, dann eine lange Pause machen. Dann sollte es normal laufen.

    MfG,
    SlyD

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied Avatar von basteluwe
    Registriert seit
    15.11.2012
    Beiträge
    131

    Jo, Geht!

    Hallo SlyD, nun geht es tatsächlich!
    Wie man hier unten im Code sieht, habe ich die Initialisierung des ACS, wie von dir vorgeschlagen noch 2x vor den "showScreenLCD" Befehl gepappt, jeweils mit einer Pause danach. 1x reichte NICHT! Mit 2x zusätzlich funktioniert es, aber es sieht echt seltsam aus.
    Das muß doch auch formschöner hinzukriegen sein!?
    Ich hab verschieden Versionen versucht, mit und ohne Pausen, verschiedene Pausenlängen usw. Bisher klappt es bei mir sicher nur so, wie hier zu sehen.
    Danke nochmals für den Hinweis.
    Vielleicht hat trotzdem jemand einen Tip, wie man das Problem generell löst. Dirk hatte ja oben bestätigt, das es zumindest auch beim Beispiel Move9 auftritt. Da müsste aber das Programm anders geändert werden (ACS ist ja nicht drin).
    Eine allgemeingültige "formschöne" Lösung wäre besser als dieses "Workaround", finde ich.

    Gruß Uwe

    Code:
    	setLEDs(0b1111);
    	
    	// ---eingefügt wegen Startup-Problem I2C---
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_MED);
    	// Enable Watchdog for Interrupt requests:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true);
    	// Enable timed watchdog requests:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true);
    
    	mSleep(200);
    
    	// Setup ACS power:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_MED);
    	// Enable Watchdog for Interrupt requests:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true);
    	// Enable timed watchdog requests:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true);
    	
    	mSleep(200)
    	// ---Ende Einfügung wegen Startup-Problem I2C---
    
    	showScreenLCD("################", "################");
    	mSleep(500);
    	showScreenLCD("I2C-Master", "Behaviours");
    	mSleep(1000);
    	setLEDs(0b0000);
    	
    	// ---------------------------------------
    	// Setup ACS power:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_ACS_POWER, ACS_PWR_MED);
    	// Enable Watchdog for Interrupt requests:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true);
    	// Enable timed watchdog requests:
    	I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true);

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Wie ich schon sagte ist es egal was gesendet wird. Beispielsweise sollte auch ein "I2C general call" funktionieren.

    Code:
        I2CTWI_transmitByte(0, 0);
        mSleep(200);
        I2CTWI_transmitByte(0, 0);

    MfG,
    SlyD

Ähnliche Themen

  1. Ortung in einem Raum mit Hindernissen
    Von Checker108 im Forum Software, Algorithmen und KI
    Antworten: 14
    Letzter Beitrag: 14.03.2010, 13:59
  2. Hindernissen Ausweichen -> Fehlfunktion
    Von JeyBee im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 15.11.2008, 13:51
  3. Wo u. wie, Compilerstart, und Programmstart? (Windows-XP)
    Von mechat im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 3
    Letzter Beitrag: 07.08.2008, 21:18
  4. Gesicherte Daten im eram bei Programmstart verwenden
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 26.03.2008, 17:06
  5. LED-Darstellungs Idee mit ein paar Hindernissen
    Von Strahleman im Forum Elektronik
    Antworten: 51
    Letzter Beitrag: 24.01.2007, 15:20

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress