Oder, vielleicht habe ich in Deutsch schreiben müssen?
Druckbare Version
Oder, vielleicht habe ich in Deutsch schreiben müssen?
hi, in case you are having problem with LASER_NEN (always high), then you can try the following step, it solved my problem regarding LASER_NEN
- in manual, Power Up section
... Step 7 "Enable laser by setting Forced_Disable bit (bit-0) of LASER_CTRL0 register (address 0x20) to 0"
after SROM download, instead of writing 0x00 to addr 0x20, try writing 0x80 to addr 0x20
Lovely! Finally someone that can help me out!Zitat:
Zitat von stevieman
Now, I don't think that is the issue. According to my voltmeter, it's low (0.24V).
After downloading the SROM (0x91), which seems to be fine, because I get this reading 0x25 and 0x26:
Also, I in my infinite loop, I get this:Code:Data_Upper:
7 6 5 4 3 2 1 0
0xBE 0b 1 0 1 1 1 1 1 0
Data_Lower:
7 6 5 4 3 2 1 0
0xEF 0b 1 1 1 0 1 1 1 1
And that seems perfectly fine, doesn't it?Code:7 6 5 4 3 2 1 0
0x91 0b 1 0 0 1 0 0 0 1 (SROM_ID - 0x2a)
7 6 5 4 3 2 1 0
0x20 0b 0 0 1 0 0 0 0 0 (Motion - 0x02)
7 6 5 4 3 2 1 0
0x80 0b 1 0 0 0 0 0 0 0 (LASER_CTRL0 - 0x20)
7 6 5 4 3 2 1 0
0x42 0b 0 1 0 0 0 0 1 0 (LASER_CTRL1 - 0x21)
7 6 5 4 3 2 1 0
0x45 0b 0 1 0 0 0 1 0 1 (Address 0x22)
7 6 5 4 3 2 1 0
0xBA 0b 1 0 1 1 1 0 1 0 (Address 0x23)
But, even if I now move the sensor, I still only get 0x20 from the motion register! :(
How did you enable your laser?
I enabled the laser by writing 0x00 (or 0x80) to LASER_CTRL0 (0x20).
Since LASER_NEN is low and bit0 (Force_Disabled) of address LASER_CTRL0 is zero, I guess your laser is indeed enabled.
Maybe there are problems with the navigation of the sensor
In data sheet, the addresses 0x21-0x23 are reserved. Maybe you should not read from these addresses ( I don't know whether it helps, but it's worth giving a try )
You can also check whether SROM code is running by checking Observation address (0x24), bit6 should be equal to 1 if SROM code is running
good luck!
I will test and check that when I get back home. Please don't leave this forum now! :)
I'm guessing the ADNS-9500 works fine for you?
About those reserved registers, I got some extra .pdf from Avago about them. In that you can find this:
Address Register Read/Write Reset Value
0x20 LASER_CTRL0 R/W 0x01
0x21 LASER_CTRL1 R/W 0x00
0x22 LASER_CFG0 R/W 0x00
0x23 LASER_CFG1 R/W 0x00
LASER_CTRL1
Bit-7 of this register must be the complement of the corresponding bits in register 0x20 for the VCSEL control to be as programmed and Bit-6 must be set as 1, otherwise the laser is turned off with LP_VALID bit in the MOTION register is set to 0. Registers 0x20 and 0x21 may be written in any order after power up and SROM download.
LP_CFG0
This register is used to set the laser current. It is to be used together with register 0x23, where register 0x23 contains the complement of register 0x22. If the registers do not contain complementary values, the laser is turned off and the LP_VALID bit in the MOTION register is set to 0.
LP_CFG1
The value in this register must be a complement of register 0x22 for laser current to be as programmed, otherwise the laser is turned off and the LP_VALID bit in the MOTION register is set to 0.
And following that, my values seems correct too.
Ok, I get:
from address 0x24, so it seems to be running?Code:7 6 5 4 3 2 1 0
0x7F 0b 0 1 1 1 1 1 1 1
Did you calibrate the laser at all or it just worked for you? You just get the motion bit set now from address 0x02?
Do you mind posting some relevant code of yours? So far, as I can tell, it all seems correct software wise... damnit! Also, what do you get from address 0x22 and 0x23 (and the other relevant addresses)?
I also removed reading from those reserved addresses now, but still no motion! :(
I really appreciate your help!
Here are some outputs from my sensor
Addresses:
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0B, 0x0E, 0x0D, 0x0F, 0x10, 0x00, 0x12, 0x3F, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1B, 0x1A, 0x1D, 0x1C, 0x1F, 0x1E, 0x20, 0x24, 0x25, 0x26, 0x2A, 0x2E, 0x2F, 0x39
Outputs in the order of the addresses defined above - no motion
03 20 00 00 00 00 28 88 6A 2A 00 61 0F A0 38 08 33 00 CC 32 01 1F 09 BC 31 0F A0 0F A0 4E 20 80 7F 00 00 91 1F 00 02
Outputs in the order of the addresses defined above - with motion
03 A0 05 00 FC FF 28 80 67 27 00 50 0F A0 38 08 33 00 CC 32 01 1F 09 BC 31 0F A0 0F A0 4E 20 80 7F 00 00 91 1F 00 02
hope it helps!
Ok, these are the differences when no motion:
0x07:
You: 28
Me: 00
0x08:
You: 88
Me: 00
0x09:
You: 6A
Me: 00
0x0A:
You: 2A
Me: 00
0x0C:
You: 00
Me: 4E
0x0B:
You: 61
Me: 20
0x0E:
You: 0F
Me: 5D
0x0D:
You: A0
Me: C0
0x0F:
You: 38
Me: 12
0x10:
You: 08
Me: 00
0x1B:
You: 0F
Me: 5D
0x1A:
You: A0
Me: C0
0x25:
You: 00
Me: EF
0x26:
You: 00
Me: BE
0x2e:
You: 1F
Me: 10
I will look into these some more, and see if it helps changing to your values on those that I can write to. If you see anything obvious, please tell me. Btw, shouldn't you have BE and EF on 0x26 and 0x25 too? That indicates that the SROM is fine... although I see your SROM_ID is 0x91 (address 0x2a)...
I didnt perform a CRC test, so the values of 0x26, 0x25 are not defined.
From the values of your 0x07-0x0A, it appears to me that your sensor does not see any image. Did you remove the protective sticker from the lense and laser? :)
I dont know whether it helps, maybe you should pay attention to the order of reading registers with upper and lower values. Try reading it in the order stated in data sheet.
Ok, the stickers where still there because I had them on with the ADNS-6090, and that worked fine. However, 0x07-0x0A still give 0x00 after I have now removed them. So, that didn't help :(
Also, what particular registers should I read in order exactly? I think I do though... but will check...