Arduino und ADNS5020E

OP #4999607
Lesenswert?

Hall Leute,
kurz zu meinem Problem:

Ich will die Daten von meinem ADNS 5020E per SPI auslesen. Dafür habe 
ich mir ein Arduino Mega angelegt. ( 50 - 53 SPI Pins )
Den ADNS5020E habe ich von einer optischen Maus. Den Controller, der in 
er Maus verbaut war, habe ich entfernt. Dafür habe ich die Kabel für GND 
, +5V, MOSI/MISO, SCLK und CS Leitung gelötet.

Das Sieht wie folgt aus: siehe Anhang.

Doch das Problem ist nun, wenn ich mein Arduino mit USB mit dem PC 
verbinde, leuchtet die LED erstmal ziemlich hell. Nachdem ich die 
Datenleitung verbinde, wird die LED ziemlich dunkel. Sie bekommt also 
nicht viel Spannung. Aber warum? Was mache ich falsch?

würde mich um Tipps freuen.
Angehängte Dateien:
(Firma: Potilatormanufaktur) #4999770
Lesenswert?

NuMal Langsam schrieb:
> Einfach mal was hinrotzen, passt dann schon, gell?

Ja sorry, hab ich selbst gemerkt. Wollte den Post auch löschen, ging 
dann aber nicht mehr. Ich meinte das Datenblatt zum ADNS5020. Ich wollte 
eigentlich darauf hinweisen, dass bei den ADNS-Sensoren die LED u.U. 
gedimmt wird (wenn (wenn ich mich recht erinnere wenn der SQUAL-Wert für 
eine Zeit niedrig ist oder so ähnlich). Das lässt sich aber 
softwaremäßig verhindern. Dass die Verdrahtung möglicherweise fehlerhaft 
ist hatte ich noch gar nicht realisiert.
Gast #4999771
Lesenswert?

NuMal Langsam schrieb:
> Md M. schrieb:
>> Datenblatt Seite 11.
>
> Von was?
>
> Von welchem der tausend verschiedenen Datenblätter sprichst du?
>
> Manche haben nicht einmal 5 Seiten. Wie soll da jemand auf die
> Seite 11 schauen?
>
> Einfach mal was hinrotzen, passt dann schon, gell?

Die 11 war eine Anspielung auf eine völlig frei erfundene Seite.
Male einen Schaltplan (!!!) auf dem alle Verbindungen erkennbar sind.
Ansonsten können wir nur Raten. Die von dir gelieferten Informationen 
sind gleich Null.
OP #5002933
Lesenswert?

So, hab jetzt mal alles angeschlossen und bekomme auch schon die ein 
oder anderen Wrte. Aber irgendwie sind das nicht die Werte, die ich 
gerne sehen wollte. Denn wenn ich die Maus auch nicht bewege habe ich 
für einen dx Wert 255. Meine Beschaltung mit meinen MEga habe ich 
hochgeladen.
1
#include <SPI.h> 
2
// setup pins 
3

4
int nReset = 12; 
5
int nCS = 13; 
6
void setup(){ 
7

8
  //set pin I/O direction 
9
  pinMode (nReset, OUTPUT); 
10
  pinMode (nCS, OUTPUT); 
11

12
  //put the device in reset not chip selected 
13

14
  digitalWrite(nReset,LOW); 
15

16
  digitalWrite(nCS,HIGH); 
17

18

19
  //initialize SPI 
20

21
  SPI.begin(); 
22

23
  SPI.setDataMode(SPI_MODE3); 
24

25
  //start a serial port for debugging 
26

27
  Serial.begin(115200); 
28

29
  delay(1000); 
30

31
  Serial.println("startup complete"); 
32

33
} 
34

35

36
 
37

38

39
void loop(){ 
40

41
  unsigned int read_data; 
42

43
  delay(1000); 
44

45
  //enable ADNS 
46

47
  digitalWrite(nReset,HIGH); 
48

49
  //startup time 
50

51
  delay(1000); 
52

53

54
  //read and print a register map 
55

56

57
  Serial.println("ADNS-5020 Register Map"); 
58

59

60
  Serial.println("Addr 0x00 - Data " + String(ADNS_read(0x00))); 
61

62

63
  Serial.println("Addr 0x01 - Data " + String(ADNS_read(0x01))); 
64

65

66
  Serial.println("Addr 0x02 - Data " + String(ADNS_read(0x02))); 
67

68

69
  Serial.println("Addr 0x03 - Data " + String(ADNS_read(0x03))); 
70

71

72
  Serial.println("Addr 0x04 - Data " + String(ADNS_read(0x04))); 
73

74

75
  Serial.println("Addr 0x05 - Data " + String(ADNS_read(0x05))); 
76

77

78
  Serial.println("Addr 0x06 - Data " + String(ADNS_read(0x06))); 
79

80

81
  Serial.println("Addr 0x07 - Data " + String(ADNS_read(0x07))); 
82

83

84
  Serial.println("Addr 0x08 - Data " + String(ADNS_read(0x08))); 
85

86

87
  Serial.println("Addr 0x09 - Data " + String(ADNS_read(0x09))); 
88

89

90
  Serial.println("Addr 0x0A - Data " + String(ADNS_read(0x0A))); 
91

92

93
  delay(1000);   
94

95

96
} 
97

98

99
unsigned int ADNS_read(unsigned int address){ 
100

101

102
  unsigned int data; 
103

104

105
  // take the CS pin low to select the chip: 
106

107

108
  digitalWrite(nCS,LOW); 
109

110

111
  //  send in the address and value via SPI: 
112

113

114
  SPI.transfer(address); 
115

116

117
 
118

119

120
  pinMode(MOSI, INPUT); 
121

122

123
  data = SPI.transfer(0x00); 
124

125

126
  pinMode(MOSI, OUTPUT); 
127

128

129
  // take the SS pin high to de-select the chip: 
130

131

132
  digitalWrite(nCS,HIGH);  
133

134

135
  return(data); 
136

137

138
}

Thoretisch müsste das doch funktionieren? Bekomme aber auch für die 
anderen rgister andauern nu zahlen wie 255. Kann das sein=
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren