-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Asuro IR bockt

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    14.10.2009
    Beiträge
    64

    Asuro IR bockt

    Anzeige

    Hi,
    habe seit 2 tagen meinen Asuro fertig und auch schon fleißig programmiert.
    Hat bis vor ner Stunde auch alles geklappt.
    Habe dann ein Programm drauf gespielt um den Asuro mit der Fernbedienung zu steuern.
    Code:
    /
    *******************************************************************************
    *
    * Description: Asuro lässt sich per IR-Fernbedienung steuern
    *
    *****************************************************************************/
    #include "asuro.h"
    #include <stdlib.h>
    
    #define CH_DN   0x21
    #define CH_UP   0x20
    #define VOL_DN  0x11
    #define VOL_UP  0x10
    #define FULL_SCRN  0x2E
    #define ZERO  	0x00
    
    #define OFFSET	100
    #define STEP	60
    
    int speedLeft,speedRight;
    volatile unsigned int rxdata;
    volatile unsigned char rxbits;
    
    SIGNAL (SIG_OVERFLOW0)
    {
    	rxbits++;
    	rxdata<<=1;
    	rxdata |= (PIND & (1 << PD0));	// liest Datenbits
    	TCNT0 = 34;							// Timer auf 1778µs
    	if(rxbits==14){
    		TCCR0 &= ~((1 << CS01) | (1 << CS00)); // stoppt Timer
    	}
    }
    
    void Driver(void)
    {
    	unsigned char leftDir = FWD, rightDir = FWD;
    	
    	leftDir = rightDir = FWD;
    	if (speedLeft < 0)  leftDir = RWD; 
    	if (speedRight < 0) rightDir = RWD; 
    		
    	if (speedLeft >   240) speedLeft  =  240; 
    	if (speedLeft <  -240) speedLeft  = -240;
    	if (speedRight >  240) speedRight =  240;
    	if (speedRight < -240) speedRight = -240;
    
    	MotorDir(leftDir,rightDir);
    	MotorSpeed(abs(speedLeft),abs(speedRight));
    }
    
    void IRFwd(void)
    {
    	speedRight += STEP;
    	speedLeft  += STEP; 
    	if (abs(speedLeft) < OFFSET) {speedRight += STEP; speedLeft += STEP;}
    	FrontLED(ON);
    	BackLED(OFF,OFF);
    }
    
    void IRRwd(void)
    {
    	speedRight -= STEP;
    	speedLeft  -= STEP;
    	if (abs(speedLeft) < OFFSET) {speedRight -= STEP; speedLeft -= STEP;}
    	FrontLED(OFF);
    	BackLED(ON,ON);
    }
    
    void IRLeft (void)
    {
    	FrontLED(OFF);
    	BackLED(ON,OFF);
    	if (speedLeft != 0){
    		speedLeft /= 4;
    		Driver();
    		Msleep(80);
    		speedLeft *= 4;
    	}
    	else{
    		speedLeft = -150; speedRight = 150;
    		Driver();
    		Msleep(80);
    		speedLeft = speedRight = 0;
    	}
    }
    
    void IRRight (void)
    {
    	FrontLED(OFF);
    	BackLED(OFF,ON);
    	if (speedRight != 0){
    		speedRight /= 4;
    		Driver();
    		Msleep(80);
    		speedRight *= 4;
    	}
    	else{
    		speedLeft = 150; speedRight = -150;
    		Driver();
    		Msleep(80);
    		speedLeft = speedRight = 0;
    	}
    }
    
    void IRStop(void)
    {
    	speedRight = speedLeft = 0;
    	FrontLED(OFF);
    	BackLED(OFF,OFF);
    }
    
    int main(void)
    {
    	static unsigned int cmd;
    
    	Init();
    	for (;;) {
    		rxbits = 1; rxdata = 0;
    		TIMSK |= (1 << TOIE0);		// Interrupt scharf
    		while(PIND & (1 << PD0)); // warte auf 1. Flanke
    		TCNT0 = 90;					// Timer auf 1333µs
    		TCCR0 = (1 << CS01) | (1 << CS00); // Start Timer
    		while(rxbits < 14); // warte bis alle Bits empfangen
    		
    		cmd = (rxdata & 0x3F);	// 6 Command-Bits werden verwertet
    		
    		switch (cmd) {
    			case CH_DN :		IRRwd(); break;
    			case CH_UP :		IRFwd(); break;
    			case VOL_DN:		IRLeft(); break;
    			case VOL_UP:		IRRight(); break;
    			case ZERO :
    			case FULL_SCRN :	IRStop(); break;
    		}
    		Driver();
    	}
    	return 0;
    }

    Hat auch halbwegs gut geklappt.
    Tja, und dann... wollte ich wieder ein normales "Fahr den Raum ab" drauf flashen, aber dann kam folgendes

    Open COM1 --> OK !
    Bulding RAM --> OK !
    Connect to ASURO --> OK !
    Sending Page 001 of 029 --> v.v.v.v.v.v.v.v.v.v.
    TIMEOUT !
    Not successful, Flash contents will be invalid!

    Was ist passiert??? Auf dem Hyperterminal die IR vom Transceiver gecheckt. Läuft. Nur mit dem flashen geht garnix mehr.

    Was kann ich machen ???
    HELP plz

    grüße mayo

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Könnte es sein, dass die Batterien (Akkus) leer sind?

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    14.10.2009
    Beiträge
    64
    ÄH, ich glaub nicht. Die microAkkus zeigen nen Wert von 4.86 an!?
    Is wohl nicht leer.
    Was passiert eigentlich wenn cih die AA-Akkus anschließe? Haben ja auch nur 1.2V aber 30mA mehr. Macht das was aus??
    SRY (noob)

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

    Ob AAA oder AA ist beim asuro egal. Die 30mA beziehen sich auf die Kapazität der Akkus, die wirkliche Stromabgabe hängt von der Belastung ab.

    Bei einer echten VL-Meldung (Voltage_Low=Unterspannung) sollte die StatusLED wild flackern und auf dem Terminal VLVLVLVL.. angezeigt werden.

    "V" beim Flashen bedeutet einen Verizifierungsfehler, die Prüfsumme nach dem Datenpaket war falsch. 4,86V sind recht wenig. Der TSOP (IR-Empfänger) reagiert ziemlich empfindich auf niedrige Spannung. Ich vermute, der asuro "versteht" nicht, was ihm gesendet wird, weil die Spannung beim Flashen zusammenbricht. Deshalb erster Versuch: Akkus laden (oder geladene AAs verwenden) und den Batteriehalter, den Schalter und den Jumper überprüfen.

    Alternative: Bei langsamen Rechnern reagiert das Flashprogram empfindlich auf zuviele Hintergrundprozesse (bei meinem 850er W2k-PC merke ich das extrem). Um das als Ursache auszuschliesen solltest du neu booten und nur das Flashen starten. Zu schnelle Rechner haben gelegentlich auch Probleme, das würde aber wohl nur Rechner mit Multicore-Prozessoren betreffen. Hier hilft dann ein Ausbremsen mit einem rechenintensiven Prozess (Festplatte formatieren (haha), nein, defragmentieren, ein Virenscan, Explorer öffnen oder ein Bremstool für alte Spiele) beim Flashen.

    Gruß

    mic

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

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    14.10.2009
    Beiträge
    64
    Hm, dass versteh ich jetzt überhaupt nicht.
    Dachte gerade bei Akkus (1,2V) sollte das ding gesteckt werden damit nicht 0,6 abgezwackt werden. Ich hab ihn nämlich drinne. So hab ich das verstanden. Naja, hoffe nr dass es an den Akkus liegt(gerade im lader)und nicht am atmel.
    Hoffe ich hab da keinen misst gebaut.
    <-- absoluter mikrotechnik und elektronikanfängeranfänger!!

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hm, dass versteh ich jetzt überhaupt nicht.
    Ich verstehe es auch nicht :) Irgendwie habe ich Akkus und Batterien verwechselt. Die jetztige Version meines Beitrages sollte nun stimmen. Jumper drin mit Akkus ist richtig. Mein Fehler, sorry, es ist schon spät und ich bin alt...

    Ich denke, mit frisch geladenen Akkus wird es wieder funktionieren.

    Gruß

    mic

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

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    14.10.2009
    Beiträge
    64
    I hope so

    thx 4 reply

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    14.10.2009
    Beiträge
    64
    Hi,
    also die Akkus warens nicht. Hab sie geladen und grad versucht zu flashen - geht nicht.
    akt. stand:
    Asuro ON -ohne flash- Satus LED grün
    mit flash StatusLED rot und gleicher Fehler wie oben.
    Mit der TV Fernbedienung - funktioniert.
    Was kann ich machen um rauszubekommen was da schief gelaufen ist ?
    gruß mayo

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

    Schade, die Akkus waren mein Favorit. Ohne Flashen grün, mit Flashen rot und selbe Meldung: Der asuro erkennt das Flashen und antwortet. Wenn das Flashprogramm keine Anwort bekommen würde, wäre die Meldung "t" (timeout). Das kann man testen indem man den asuro beim Flashen (nach den ersten Vs) ausschaltet.

    Tja, dann bleiben noch die üblichen Ursachen: Schlechte Lötstellen, Poti verstellt oder schwachbrüstiges USB-RS232-Wandlerkabel bei RS232-Transceiver, Fremdlicht (Halogenstrahler, Leuchtstoffröhren, LCDs...), falscher Abstand, altes Flashprogramm (Update auf v1.51, manche Rechner funktionieren allerdings mit den älteren Versionen besser). Mein Transceiver ist übrigends temperaturabhängig:
    http://www.roboternetz.de/phpBB2/zei...ag.php?t=26559

    Oder hast du irgendetwas geändert? Andere Schnittstelle, anderer Aufbau beim Flashen, neues Zubehör oder Software am Rechner, Kabel beschädigt, Stecker locker, Schmutz auf asuroplatine, ...

    Als Alternative zum Flashprogramm gäbe es noch die eierlegende Wollmilchsau von Osser, allerdings wäre das mein allerletzter Versuch weil es bisher mit dem orginalen Flashprogramm ja funktioniert hatte:
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=25249

    Gruß

    mic

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

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    14.10.2009
    Beiträge
    64
    Hi

    Dein Tempabhängiger Transceiver zeigt ja dass alles möglich ist
    Werd ich heut mal etwas rumprobieren - kalte Lötstellen suchen,Poti verstellen usw.-
    Weil ich da grad vom Weissblatttest gelesen hab - mein Transceiver kann ich hinhalten wo ich will (vorhin richtung draussen) und es zeigt mir trotzdem alle zeichen korrekt an. Deutet das auf nen Fehler hin, oder is das "normal".
    Flo

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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