Forum: Mikrocontroller und Digitale Elektronik Logical Mouse ADNS5020 konstante dx Wert


von Karl F. (fkcm95)


Lesenswert?

Hallo Leute, ich habe den ADNS mittels SPI korrekt ausgelesen und die 
Werte am Display anzeigen können. Da ich den Display in meinem Projekt 
nicht brauche, habe ich dann abgebaut und den Sensor direkt über das 
Serielle Monitor überwacht. Ich habe allerdings festgestellt, dass ich 
nun keine dx/dy Änderungen habe, sondern einen konstanten Wert (255) bei 
dx. Motion und dy bleibt immer auf 0.,. Der Sensor hat aber vor 10min 
mit dem Display noch funktioniert.

Was kann die Ursache dafür sein? Die Verkabelung habe ich 10x schon 
überprüft. Jedoch an der Verkabelung ist es leider nicht. Was könnten 
noch Ursachen dafür sein?

von Stephan H. (stephan-)


Lesenswert?

der ist sauer weil er jetzt kein Display mehr hat oder weil Freitag ist.
Mal im Ernst ohne Plan oder Code ? Die Glaskugel sagt Du hattest das 
Display am gleichen Port wie den Sensor. Jetzt fehlt der Pull Up vom 
Display !

Beitrag #5015714 wurde vom Autor gelöscht.
von Karl F. (fkcm95)


Angehängte Dateien:

Lesenswert?

Ob das wirklich vom Display kommt?
Lade nochmal meine Schaltung und den Code hoch...
1
// include the SPI library: 
2
#include <SPI.h> 
3
4
// setup pins 
5
int nReset = 48; 
6
int nCS = 53; 
7
8
void setup(){ 
9
  //set pin I/O direction 
10
  pinMode (nReset, OUTPUT); 
11
  pinMode (nCS, OUTPUT); 
12
  //put the device in reset not chip selected 
13
  digitalWrite(nReset,LOW);
14
  digitalWrite(nCS,HIGH); 
15
  //initialize SPI 
16
  SPI.begin(); 
17
  SPI.setDataMode(SPI_MODE3); 
18
  //start a serial port for debugging 
19
  Serial.begin(115200); 
20
  delay(1000); 
21
  Serial.println("startup complete"); 
22
23
24
} 
25
26
void loop(){ 
27
  unsigned int read_data; 
28
  delay(1000); 
29
  //enable ADNS 
30
  digitalWrite(nReset,HIGH); 
31
  //startup time 
32
  delay(1000);
33
  //read and print a register map 
34
  Serial.println("ADNS-5020 Register Map"); 
35
  Serial.println("Addr 0x00 - Data " + String(ADNS_read(0x00))); 
36
  Serial.println("Addr 0x01 - Data " + String(ADNS_read(0x01))); 
37
  Serial.println("Addr 0x02 - Data " + String(ADNS_read(0x02))); 
38
  Serial.println("Addr 0x03 - Data " + String(ADNS_read(0x03))); 
39
  Serial.println("Addr 0x04 - Data " + String(ADNS_read(0x04))); 
40
  Serial.println("Addr 0x05 - Data " + String(ADNS_read(0x05))); 
41
  Serial.println("Addr 0x06 - Data " + String(ADNS_read(0x06))); 
42
  Serial.println("Addr 0x07 - Data " + String(ADNS_read(0x07))); 
43
  Serial.println("Addr 0x08 - Data " + String(ADNS_read(0x08))); 
44
  Serial.println("Addr 0x09 - Data " + String(ADNS_read(0x09))); 
45
  Serial.println("Addr 0x0A - Data " + String(ADNS_read(0x0A))); 
46
  delay(1000);   
47
} 
48
49
unsigned int ADNS_read(unsigned int address){ 
50
  unsigned int data; 
51
  // take the CS pin low to select the chip: 
52
  digitalWrite(nCS,LOW); 
53
  //  send in the address and value via SPI: 
54
  SPI.transfer(address); 
55
  pinMode(MOSI, INPUT); 
56
  data = SPI.transfer(0x00); 
57
  pinMode(MOSI, OUTPUT); 
58
  // take the SS pin high to de-select the chip: 
59
  digitalWrite(nCS,HIGH);  
60
  return(data); 
61
}

: Bearbeitet durch User
von Karl F. (fkcm95)


Lesenswert?

Kann sich keiner den Fehler vorstellen? bin schon seit 2 Tagen da dran, 
bekomme immer wieder die selben werte

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.