- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Hilfe!!! Asuro SnakeVision funktioniert nicht, wenn PollSwitch() ins Spiel kommt!

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

    Da kann ich ja mal nur raten:

    Code:
    		//Messwerte einlesen
            ThermalData(tdata);
            ThermalData(tdata);
    Messwerte zweimal einlesen. Hintergrund: Beim Einlesen der Snake-Werte wird die interne Referenz verwendet, PollSwitch() verwendet aber die externe Referenz. Möglicherweise geschied das Umschalten auf die interne Referenz nicht schnell genug.

    Code:
    		abbr=abbruchtest();
        	}
    		MotorSpeed(0,0);
    	return 0;
    }
    Das sollte man nicht tun, besser ist:
    Code:
    		abbr=abbruchtest();
        	}
    		MotorSpeed(0,0);
    		while(1); // Programm sollte nie beendet werden!
    	return 0;
    }
    Gruß

    mic
    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
    Hallo radbruch,

    vielen Dank für deine superschnelle Antwort

    Hat prima funktioniert. Witzigerweise hat es in dem geposteten Code mit zweimaligem Aufruf dazu geführt, dass dann der rechte Sensor plötzlich das Problem hatte. Bei 300maligem Aufruf hat es dann sehr gut funktioniert.

    Im kompletten Programm hat es dann allerdings mit zweimaligem Aufruf schon perfekt funktioniert Könnte das daran liegen, dass er da insgesamt mehr rechnen muss und somit mehr Zeit hat, um wieder auf interne Referenz zu schalten? Könnte man ihm das eigentlich auch aktiv sagen, dass er umschalten soll?

    Wie auch immer, auf jeden Fall funktioniert das nun soweit schonmal und es kann weitergehen

    Vielen lieben Dank für die schnelle Hilfe!

    Viele Grüße

  3. #3
    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

    Schön, dass es funktioniert. Der Grundgedanke war, dass nach dem ersten Umschalten vor der ADC0-Lesung die Referenz noch nicht komplett umgeschaltet ist, bei der ADC1-Lesung dies dann aber abgeschlossen ist.

    Ja, man könnte die Referenz auch selbst aktiv umschalten. Die Referenz wird mit REFS0 und REFS1 im ADMUX-Register festgelegt. Nur REFS0 gesetzt bedeutet externe Referenz, beide gesetzt bedeutet interene Referenz. Spannenderweise wird in PollSwitch() nach dem Setzen der Referenz kurz gewartet und erst dann die Wandlung gestartet:
    Code:
    /* function to read out switches */
    unsigned char PollSwitch (void)
    {
    ...	ADMUX = (1 << REFS0) | SWITCH;	// AVCC reference with external capacitor
    	Sleep(10);
    
    	ADCSRA |= (1 << ADSC);			// Start conversion
    ...
    }
    (Auschnitt aus asuro.c v3.2)

    Möglicherweise würde eine entsprechende Wartezeit in ThermalData() das Problem der Referenzumschaltung lösen.

    Warum werden bei den Funktionen unterschiedliche Referenzen verwendet? Bei PollSwitch() wird ein Spannungsteiler verwendet der mit der Batteriespannung gespeist wird. Auch wenn sich die Akkuspannung ändert bleiben die Verhältnisse zwischen den Tastenwiderständen gleich, die Messung wird nicht beeinflußt. Anders das Snake-Vision. Um mit den Wärmesensoren gute Ergebnisse zu erzielen wurde auf der Platine ein 5V-Spannungsregler (getrieben über die Ladungspumpe um OCR2) zur Versorgung eingebaut. Deshalb schwanken die Ausgangsspannungen des Moduls nicht mit der Akkusspannung und deshalb muss man diese Spannungen mit der internen 2,56V-Referenz des ADC messen.

    Über die Umschaltprobleme der Referenz bin ich kürzlich schon mal gestolpert, dabei ging es um die Akkuspannungsmessung bei der bee:
    http://www.roboter.cc/index.php?opti...Itemid=20#1784

    Gruß

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

Ähnliche Themen

  1. Tiny85 kommt nicht aus Powerdown zurück Bitte Hilfe!
    Von dl1akp im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 28.03.2012, 12:29
  2. HILFE Schrittmotor funktioniert nicht
    Von DarkSoldier im Forum Motoren
    Antworten: 3
    Letzter Beitrag: 13.08.2011, 20:47
  3. Antworten: 3
    Letzter Beitrag: 02.06.2008, 12:44
  4. I2C funzt nicht, wenn über rs232 empfangen wurde...Hilfe!
    Von Charly_cs im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 20.04.2006, 11:04
  5. Programm funktioniert nicht --> Hilfe
    Von strunz im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 30.05.2005, 22:54

Stichworte

Berechtigungen

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

12V Akku bauen