-         

Ergebnis 1 bis 4 von 4

Thema: Probleme mit den Tastern

  1. #1

    Unglücklich Probleme mit den Tastern

    Anzeige

    Hallo Leute

    Ich habe ein Problem mit meinem Asuro: nicht alle der Taster wollen so richtig wie ich es will...

    Erstmal verweigert der Taster K6 komplett seinen Dienst, und der Taster K1 kann sich auch nicht auch einen Wert einigen: meine bearbeitete Version des TastenSensorTest sagt mir, dass der Taster K1 von 25001 mal abfragen gerade mal 3x den gewünschten Wert(32) zurück gegeben hat, und er 24998x den Wert 33 zurück gegeben hat... nämlich mir aufgefallen ist: Wenn ich den Asuro in letzter Zeit länger angehabt habe, komm öfters ein falscher Wert zurück, als wenn ich den Asuro ca. 10-15 Stunden aus hatte: nachdem er lange aus war gibt er zu ca. 26% 32 zurück, nachdem ich ihn fast 30 Min an hatte gibt er nur noch zu 0,01% 32 wieder...

    Auch habe ich ein Problem mit dem Taster K6, der hat nämlich noch keinen einzigen laut von sich gegeben, funktioniert also (momentan) gar nicht...

    In dem Offiziellem Forum von Arexx habe ich auch schon gefragt, wurde jedoch von "Arexx-Henk" auf dieses Forum hier aufmerksam gemacht

    Dort wurde ich auch gefragt, ob ich die Widerstände R23 und R15 auch richtig, also in Fahrtrichtung eingebaut habe -> Ja, siehe dieses Foto von meinem kleinem Asuro
    Foto von meinem Asuro(falls man so evtl. nen Fehler erkennen kann

    Und natürlich nochmal meine Modifizierte Version des TastenSensorTests, und ja, das kann sein, dass dort Fehler drinne sind, ist ja immerhin mein erstes Programm mit Asuro(und mein erstes in C):
    Code:
    /***********************************************************************
     *
     * File Name:   tastsensor.c
     * Project  :   ASURO
     *
     * Description: Test der Tastensensoren
     *
     * Ver.     Date         Author           Comments
     * -------  ----------   --------------   ------------------------------
     * 1.0      10.09.2005   Peter            initial build
     * 1.1      08.01.2006   Peter            2x PollSwitch + Vergleich, anstelle 8x PollSwitch
     * 
     * benoetigt die modifizierte Asuro Bibliothek 'asuro.c' 
     * von waste, stochri und andun. Zu finden bei www.roboternetz.de
     */
    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   any later version.                                                    *
     ***************************************************************************/
    
    #include "asuro.h"
    
    int main(void)
    {
      unsigned char t1, t2, tE;
      unsigned int cO, cF;
      
      
      Init();
      tE = 0;
      cO = 0;
      cF = 0;
      SerWrite("\r\nTastsensor Test Erweitert\r\n",29);
      while((cO + cF) <= 25000)
      {
    	StatusLED(GREEN);
        t1 = PollSwitch();
        t2 = PollSwitch();
        if(t1 && t2 && t1 == t2)              /* irgendeine Taste gedrueckt */ 
        {
    	  if(tE == 0)
    	  {
    	    tE = t1;
    		SerWrite("Expected: ",10);
            PrintInt(tE);
            SerWrite("\r\n\r\n\r\n\r\n",6);
    	  }
    	  if(t1 != tE)
    	  {
    	    StatusLED(RED);
    		cF = cF + 1;
    	  }
    	  if(t1 == tE)
    	  {
    	    cO = cO + 1;
    	  }
          Msleep(50);
        }
    	if(((cO + cF) == 2500)||((cO + cF) == 5000)||((cO + cF) == 7500)||((cO + cF) == 10000)||((cO + cF) == 12500)||((cO + cF) == 15000)||((cO + cF) == 17500)||((cO + cF) == 20000)||((cO + cF) == 22500)) {
          SerWrite("\r\n\r\n\r\n\r\n",6);
          PrintInt(cO);
          SerWrite("|",1);
          PrintInt(cO + cF);
          SerWrite("|",1);
          PrintInt(cF);
          SerWrite("\r\n\r\n\r\n\r\n",6);
    	
    	}
      }
      StatusLED(YELLOW);
      SerWrite("\r\n\r\n\r\n\r\n",6);
      PrintInt(cO);
      SerWrite("|",1);
      PrintInt(cO + cF);
      SerWrite("|",1);
      PrintInt(cF);
    }
    Schon mal vielen Dank für eure Hilfe

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Wenn ich den Asuro in letzter Zeit länger angehabt habe, komm öfters ein falscher Wert zurück, als wenn ich den Asuro ca. 10-15 Stunden aus hatte
    Vermutlich erholen sich die Batterien, wenn der asuro längere Zeit ausgeschaltet ist.

    Auch habe ich ein Problem mit dem Taster K6, der hat nämlich noch keinen einzigen laut von sich gegeben, funktioniert also (momentan) gar nicht...
    Einer der unzähligen Threads dazu: http://www.roboternetz.de/community/...l=1#post483552
    Mit dem Programm von Osser kannst du die gemessenen Tastenspannungen ausgeben:
    http://www.roboternetz.de/community/...l=1#post483627

    Zu deinem (ersten) Programm: Ein Progamm darf NIE so enden:

    PrintInt(cF);
    }

    Warum? So würde die Funktion main() beendet werden und das Programm würde an der Stelle fortgeführt von wo aus die Funktion main() aufgerufen wurde. Das ist normalerweise eine Art von Betriebssystem das es beim Microkontroller aber nicht gibt. Deshalb wird hier nach einem Rücksprung irgendwas undefiniertes ausgeführt und die möglichen Folgen sind nicht absehbar. Richtig wäre

    PrintInt(cF);
    while(1); // Progamm darf nie beendet werden
    return(0); // wird nie erreicht
    }

    Hier noch dein nach meinem Geschmack umgebaute Programm:

    Code:
    // Tastenstatistik erstellen
    // http://www.roboternetz.de/community/threads/58098-Probleme-mit-den-Tastern
    
    #include "asuro.h"
    
    unsigned char t1, t2, tE;
    unsigned int cO, cF;
    
    int main(void)
    {
    	Init();
    	SerWrite("\r\nTastsensor Test Erweitert\r\n",29);
    	while(1)
    	{
    		cO = 0;
    		cF = 0;
    
    		StatusLED(YELLOW);
    		do
    		{
    			t1 = PollSwitch();
    			t2 = PollSwitch();
    		}while(t1 || t2); // warten bis keine Taste gedrückt ist
    
    		StatusLED(GREEN);
    		do
    		{
    			t1 = PollSwitch();
    			t2 = PollSwitch();
    		}while((t1 != t2) || (t1 == 0)); // warten auf gültigen Tastendruck
    
    		tE = t1; // die zu prüfende Taste in tE speichern und ausgeben
    		SerWrite("\n\n\rExpected: ",13);
    		PrintInt(tE);
    		SerWrite("\n\n\r",3);
    
    		while((cO + cF) <= 25000)
    		{
    			do
    			{
    				t1 = PollSwitch();
    				t2 = PollSwitch();
    			}while(t1 != t2); // Tastenstatus einlesen
    
    			if(t1 == tE)
    			{
    				StatusLED(OFF);
    				cO = cO + 1;
    			}
    			else
    			{
    				StatusLED(RED);
    				cF = cF + 1;
    			}
    
    			if(((cO + cF) % 2500) == 0) // alle 2500 Werte eine Zwischenstatistik
    			{
    				PrintInt(cO);
    				SerWrite("|",1);
    				PrintInt(cO + cF);
    				SerWrite("|",1);
    				PrintInt(cF);
    				SerWrite("\n\r",2);
    			}
    			Msleep(50);
    		}
    
    		SerWrite("\n\r",2);
    		PrintInt(cO);
    		SerWrite("|",1);
    		PrintInt(cO + cF);
    		SerWrite("|",1);
    		PrintInt(cF);
    		SerWrite("\n\r",2);
    	}
    	return(0);
    }
    (ungetestet)

    Gruß

    mic


    [Edit]
    Zu deinen Lötkünsten: Du darfst gerne etwas mehr Lötzinn verwenden. Speziell am R30 würde ich wegen dem K6-Problem nochmals nachlöten. Die Drahtbrücke neben R17 fehlt. Leider hast du den asuro streng nach Anleitung aufgebaut und die möglichen Modifikationen nicht berücksichtigt:
    http://www.asurowiki.de/pmwiki/pmwik...Modifikationen
    Geändert von radbruch (07.06.2012 um 11:22 Uhr)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Was war denn nun die Lösung?

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    Naja, das K1 nicht ging lag da dran:
    Zitat Zitat von radbruch Beitrag anzeigen
    Die Drahtbrücke neben R17 fehlt.
    Das Problem mit meinem K6 habe ich nach längerem sucher dadurch gelöst, dass ich einfach in der asuro.c in der Zeile 216 etwas "rumgetestet" habe: ich habe sie von
    Code:
    return  ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));
    zu
    Code:
    return  ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 62.7 + 0.5));
    geändert, K6 gibt jetzt immer 32 aus, die anderen Taster geben auch alle den gewollten Wert aus, nur wegen K1 bin ich noch am Testen, da dieser manchmal anstatt der 1 eine 0 zurück gibt...

    Aber danke für das mit der Drahtbrücke, ich hätte das nie gesehen

Ähnliche Themen

  1. ASURO-Probleme bei Kombination von Tastern
    Von Barbara1 im Forum Asuro
    Antworten: 51
    Letzter Beitrag: 30.03.2011, 15:42
  2. Probleme mit Tastern
    Von manfrud im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 13.12.2010, 14:31
  3. Problem mit M32 und Tastern
    Von Adleo im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 29.12.2009, 17:27
  4. Probleme mit Tastern
    Von roland001 im Forum Asuro
    Antworten: 57
    Letzter Beitrag: 05.11.2007, 20:48
  5. Antworten: 14
    Letzter Beitrag: 11.12.2006, 22:35

Berechtigungen

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