Hi zusammen,
hat von euch schon mal einer einen ADNS 9500 versucht zu initialisieren, da ich so langsam mit meinem Latein am Ende bin...

Hier erstmal ein paar Infos:
Programmiere mit AVR Studio4.18

http://www.avagotech.com/pages/en/na...eam/adns-9500/


hier mal ein Ausschnitt aus meinem Code:

Code:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include "dataflash.h"
#include "ADNS.h"
#include "ADNS_ROM.h"

#include "main.h"






//***********************************************************************************
void ADNS_Init(void)
//***********************************************************************************
{
	//PORTB = (1<<PB7)|(1<<PB6)|(1<<PB4)|(1<<PB0);
//	DDRB = (1<<PB0);
	//Power UP
	sbiBF(PORTB, PB0);
	Delay1us(5);	
	cbiBF(PORTB, PB0);


	Delay1ms(250);
	Delay1ms(250);

	
	ADNSWrite(ADNS_POWER_UP_RESET, 0x5A);
	Delay1ms(50);
	DF_SPI_RW(0x02);

	DF_SPI_RW(0x03);

	DF_SPI_RW(0x04);

	DF_SPI_RW(0x05);

	DF_SPI_RW(0x06);

	SROM_Download();

	sbiBF(PORTB, PB0);
	Delay1us (5);
 	cbiBF(PORTB, PB0);

	ADNSWrite(0x20,  0x04);
	Delay1ms(150);
	//Configuration des Sensors
//	ADNSWrite(ADNS_CONFIG_II ,FIXED_FR);	//feste Frame Rate
//	Delay1us(120);

	//Frame Rate 11.750fps
//	ADNSWrite(0x1A, 0xC0);		//Lower
//	Delay1us(120);
//	ADNSWrite(0x1B, 0x5D);		//Upper
//	Delay1us(120);
	
	sbiBF(PORTB, PB0);

}


//************************************************************void SROM_Download(void)
//************************************************************
{
    char data;
	unsigned int i;						//uint16_t i;
	i=0; 
	sbiBF(PORTB, PB0);
//	Delay1us(5);
	cbiBF(PORTB, PB0);	
	ADNSWrite(ADNS_CONFIG_IV , SROM_SIZE); 	//= (1 << SROM_SIZE);			//3k SROM download
//	Delay1us(120);
	ADNSWrite(ADNS_SROM_ENABLE, 0x1D);		//SROM_ENABLE for initializing
//	Delay1us(120);

	sbiBF(PORTB, PB0);	
	Delay1us(5);
	cbiBF(PORTB, PB0);	

	ADNSWrite(ADNS_SROM_ENABLE, 0x18);		//Start SROM downloading
//	Delay1us(120);

	sbiBF(PORTB, PB0);	
	Delay1us(5);
	cbiBF(PORTB, PB0);	

	DF_SPI_RW(0x62);				//Adress of ADNS_LOAD_BURST
	Delay1us(15);
	

	for (i=0; i<3070; i++)				//3070 Größe des SROM_Files
	{
		data = pgm_read_byte(&ADNS_Rom[i]);	//SROM File aus Flash lesen
		DF_SPI_RW(data);			//in Motion Burst Register schreiben
		Delay1us(15);
	}

	sbiBF(PORTB, PB0);	
	Delay1us(5);
	cbiBF(PORTB, PB0);
 	while (!ADNS_SROM_ID)			//Warte bis Rev.Nummer vollständig,
 	{								//dann ist SROM download beendet
 	 asm volatile ("nop"::);
 	}

}


//************************************************************unsigned char ADNSRead(unsigned char adr)
//************************************************************
{
	 unsigned char temp;

 	DF_SPI_RW(adr);
	Delay1us(120);
 
	temp=DF_SPI_RW(0x00);
	Delay1us(120);
//	sbiBF(PORTB,PB0);
 	return temp;
}


//************************************************************
void ADNSWrite(unsigned char adr, unsigned char data)
//************************************************************
{
 	DF_SPI_RW(adr|0x80);	//maskieren mit 0x80 da MSB = 1 sein muss
 	Delay1us(100);			//warten zwischen Adress und Data
	DF_SPI_RW(data);
	Delay1us(120);
 
}


//************************************************************
void Delay1ms(unsigned int time)
//************************************************************
{
	while(time--) _delay_ms(1);
}


//************************************************************
void Delay1us(unsigned int time)
//************************************************************

{
	while(time--) _delay_us(1);
}
Ach ja in ADNS_ROM.h liegt das ROM File welches ich für den AVR Studio angepasst habe und in dataflash steht eine Funktion zum Übertragen der Daten mittels SPI Schnittstelle.
Die einzelnen Ports habre ich schon in main eingestellt!

Weiß leider nich wo mein Fehler liegt.
Bin für jeden Hinweis dankbar!!!!