hi!

Mein erster Fehler war, dass ich eine slave-adresse mit 8 bit eingegeben habe, anstatt mit 7 bit.

Jetzt habe ich folgendes Programm geschrieben:
Code:
if(PINA & (1<<7))						// Wenn Taster gedrückt...
{	_delay_ms(50);						// entprellen
	PORTA|=(1<<2);						// LED ein
				
				
	i2c_start(stepperadresse + I2C_WRITE);			// Auf die adresse des steppermotors schreiben
				
				
		i2c_write(GetFullStatus1);			// Befehl GetFullStatus senden	
				
		i2c_rep_start(stepperadresse + I2C_READ);	// Lesemodus
		fs1b0=i2c_readAck();				// Die sieben bit die der TMC222
		fs1b1=i2c_readAck();				// zurückschickt, abspeichern
		fs1b2=i2c_readAck();
		fs1b3=i2c_readAck();
		fs1b4=i2c_readAck();
		fs1b5=i2c_readAck();
		fs1b6=i2c_readAck();
		fs1b7=i2c_readAck();
		fs1b8=i2c_readNak();

	i2c_stop();						// i2c-übertragung beenden

	_delay_ms(1000);					// 1 Sekkunde warten
}


else
{	PORTA|=(1<<2);						// LED aus
}
wenn ich den Taster drücke, leuchtet die led, und sie geht NICHT MEHR aus wenn ich den Taster loslasse. der AVR ist also in einer endlosschleife.

also habe ich es mit einer etwas kürzeren variante probiert, um das problem einzugrenzen:

Code:
if(PINA & (1<<7))						// Wenn Taster gedrückt...
{	_delay_ms(50);						// entprellen
	PORTA|=(1<<2);						// LED ein
				
				
	i2c_start(stepperadresse + I2C_WRITE);			// Auf die adresse des steppermotors schreiben
	i2c_stop();						// i2c-übertragung beenden

	_delay_ms(1000);					// 1 Sekkunde warten
}


else
{	PORTA|=(1<<2);						// LED aus
}
Dieses Programm funktioniert. wenn ich den taster drücke, leuchtet die led, und erlischt automatisch nach 1 sekunde (wegen _delay_ms(1000)).

Das Problem liegt also am Senden des GetFullStatus - Befehles.

Weiß jemand woran das liegen könnte?

lg christoph


EDIT: ok ich habs gelöst. der Motorcontroller hat nicht auf die slave adresse reagiert, ka warum...
jetzt hab ich die broadcastadresse 0b0000000 verwendet, mit der funktioniert er!