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