-
-
Neuer Benutzer
Öfters hier
Hallo,
bin seit langem mal wieder am ADNS 9500 dran.
Leider habe ich es immer noch nicht geschafft den SROM-File richtig zu übertragen.
Weis aber leider nicht wo mein Fehler liegt.
Habe diesen in ein unsigned char Array gelegt und die Werte als hex gekennzeichnet.
Nur wenn ich jetzt danach den CRC Test durchführe bekomme ich nur den Rest Wert geliefert.
Habe jetzt auch schon öfters Wartezeiten eingefügt und mit einenm Oszi überprüft.
-
Neuer Benutzer
Öfters hier
Hallo ArchAngel242
Was steht im Register SROM_ID nach dem Upload?
Wie machst du den Firmwareupload? Nach folgendem Schema sollte der Firmwareupload funktionieren.
Firmwaredaten irgendwie abspeichern, z.B. direct im Programmcode als
const unsigned char firmware[3070] = {0x03, ..., 0xbb};
Upload der Firmware vorbereiten
REG_CONFIGURATION_IV mit 0x02 beschreiben
REG_SROM_ENABLE mit 0x1d beschreiben
1 Frame warten
REG_SROM_ENABLE mit 0x18 beschreiben
Jetzt wird es etwas trickreich, da jetzt nicht mehr direkt in ein Register geschrieben wird, sondern ein Schreibzugriff im Burst Mode erfolgt. Deshalb muss man zuerst einen Schreibbefehl mit Adresse des REG_SROM_LOAD_BURST per SPI senden. Also
(0x80 | Adresse von REG_SROM_LOAD_BURST) an den Sensor übertragen. Damit ist der Schreibzugriff auf den Firmwarespeicher eröffnet.
Anschließend müssen nur noch, ohne weitere Adressierung die einzelnen Bytes der Firmware gesendet werden. "for (i = 0; i < 3070; i++) sende firmware[i]".
Vielleicht hilft das dir weiter
-
Neuer Benutzer
Öfters hier
Hi nezaya,
danke für die schnelle Antwort.
Habe es so gemacht wie du es geschrieben hattest, nur das ich mein Array firmware als const static unsigned char PROGMEM deklariert habe, um es so in den Flash zu schreiben, da ich sonst beim ATMEGA 169 nicht genug Speicher zur Verfügung habe.
Danke, habe mein Fehler gefunden.Hatte vergessen die Adresse von REG_SROM_LOAD_BURST mit 0x80 zu verodern.
Jetzt bekomme ich auch 0x91 als SROM_ID zurück.
-
Neuer Benutzer
Öfters hier
Naja ich glaube mit meiner Antwort war ich zu voreilig.
Irgendwie liest er nur die richtige SROM_ID bei der 1. Initialisierung aus.
Nach einem Frame Capture schreibt er immer 0x00 rein.
Und das obwohl, wie in der Beschreibung ein SROM download und Reset durchgeführt wird.
-
Hi
Ich arbeite momentan auch am ADNS 9500 und bei mir hat sich folgendes Problem eingeschlichen wobei mir hier keine Lösung einfällt.
Und zwar versuche ich den Sensor zu initialisieren
diese sieht vereinfacht so aus
adns9500_set_register(POWER_UP_RESET,0x5A,sens);
adns9500_set_register(OBSERVATION,0x00,sens);
adns9500_motion_burst_read()
adns9500_promdl()
adns9500_set_register(MOTION,0x00,sens);
adns9500_set_register(CONFIGURATION_I,(char) ADNS_9500_RESOLUTION/90),sens);
adns9500_set_register(LASER_CTRL0,0x04,sens);
anschließend folgt der CRC check welcher bestanden wird.
Lese ich nun die Register aus stehen Folgende werte drin.
ID = 0x91
Configuration 1 0x12 (sollte 0x38 )
Observation 0x7F
Laser_Contrl0 0x81 (sollte 0x84 bzw 0x04 enthalten)
Motion 0x20
Produkt_ID 0x33
Configuration 2 0x00
Mein Fehler bezieht sich nun auf die Configuration 1 da hier die 0x38 drinstehen sollte für die maximale auflösung.
genauso ist der Laser deaktiviert was auch nicht sein sollte.
Nachfolziehen konnte ich bisher das die Daten wie nach Datenblatt mit den ganzen erforderlichen Pausen gesendet wird.
Am PIN 2 LASER_NEN liegt eine dauerhafte 1 (3,12V) an (was zumindest erklärt warum der sensor nie an ist)
Am Pin 1,8,16 kommt eine kleine Pulsfolge alle 420usec.
Hatte jemand vieleicht zufällig die gleichen Probleme das er die Auflösung nicht setzten kann und der Laser sich nicht einschaltet.
MFG
(bei bedarf kann ich auch die bilder der einzelnen signale nachreichen)
-
Neuer Benutzer
Öfters hier
Hi kalu,
also ich hatte auch lange Probleme mit dem initialisieren.
Bei mir lag es daran, dass ich die NCS-Leitung wie in der Anleitung im Bild gesetzt und gelöscht habe.
Nachdem ich dann die Leitung nur am Anfang und Ende der Initialisierung gesetzt und gelöscht hatte funktionierte es und der Laser hat gezündet.
gruß
-
Hi
Danke schon mal für den Tip
bei mir hat das mit dem setzen und löschen des NCS am anfang und ende der Initialisierung leider nichts gebracht aber dadurch kam raus das zwischen den nachrichten wohl mehr zeit gewartet werden muss als im datenblatt steht.
durch eine delay funktion zwischen den einzlenen schreibvorgängen hat es nun geplappt das sich die register beschreiben lassen.(auch wenn ich delay net so mag)
zwar stehen jetzt in den registern die richtigen werte aber der laser schaltet sich noch nicht ein bzw nach dem 2ten Burst_Read steht im Motion register eine 0x00 anstatt der 0x20.
gibt es eigendlich noch weitere Befehle die du/ihr verwendet habt außer die die BF oben beschrieben hat
MFG
-
Neuer Benutzer
Öfters hier
Does it work for you now? (Sorry, I don't speak German).
I used Google translate so that helped me with this thread. And seems to be the only one I could find that talks about the ADNS-9500...
My problem is that I don't get any motion from mine. I have done all those steps mentioned in the data sheet, but still no motion when moving the sensor. Does it work for you here?
(More about my issue here: http://www.avrfreaks.net/index.php?n...wtopic&t=95878 )
Thanks,
Chillance
-
Neuer Benutzer
Öfters hier
Hmm, maybe I'm missing changing new addresses that was added with the SROM 91... Where is that information exactly?
-
Neuer Benutzer
Öfters hier
Anyone that can help me out here?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen