- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Probleme mit den Tastern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    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: https://www.roboternetz.de/community...l=1#post483552
    Mit dem Programm von Osser kannst du die gemessenen Tastenspannungen ausgeben:
    https://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
    // https://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 10:22 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Was war denn nun die Lösung?
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    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, 14:42
  2. Probleme mit Tastern
    Von manfrud im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 13.12.2010, 13:31
  3. Problem mit M32 und Tastern
    Von Adleo im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 29.12.2009, 16:27
  4. Probleme mit Tastern
    Von roland001 im Forum Asuro
    Antworten: 57
    Letzter Beitrag: 05.11.2007, 19:48
  5. Antworten: 14
    Letzter Beitrag: 11.12.2006, 21:35

Berechtigungen

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

Labornetzteil AliExpress