SPI-Routine Fehlerhaft

Gast #3253375
Lesenswert?

1
#include "SPI.h"
2
 
3
int ss=10;
4
unsigned long adcValue;
5

6
void setup(){
7
  pinMode(ss, OUTPUT);
8
  
9
  SPI.setDataMode(SPI_MODE2);
10
  SPI.setClockDivider(SPI_CLOCK_DIV32);
11
  SPI.setBitOrder(MSBFIRST);
12
  SPI.begin();
13
  Serial.begin(9600);
14
}
15
  
16
void loop()
17
{
18
      adcValue = spi_read(0x17);
19
     // Serial.println(adcValue);
20
      delay(1000);
21
}
22

23
unsigned long spi_read ( char read_command ) {
24
digitalWrite (ss,LOW);
25
unsigned char b2,b1,b0;
26
delayMicroseconds(50);
27
SPI.transfer (read_command);
28
delayMicroseconds(5);
29
b2 = SPI.transfer(0x00);
30
b1 = SPI.transfer(0x00);
31
b0 = SPI.transfer(0x00);
32
Serial.println(b2, BIN);
33
Serial.println(b1, BIN);
34
Serial.println(b0, BIN);
35
digitalWrite (ss,HIGH);
36
return (unsigned long) b2<<16 | (unsigned long) b1<<8 | (unsigned long) b0;
37
}

Hallo Habe einen SPI ADC den ich auslese. Hatte da mit schwankenden 
Werten zu kämpfen. Nun habe ich mir mal die Binär-Werte angeschaut die 
über das SPI-Transfer ankommen am ATmega 168. b2 ist immer 0 und b1 
sowie b0 sind mal 8 Bit lang und mal auch nur 4 Bit lang. Also gehe ich 
davon aus, dass ein Fehler in der SPI Routine dran Schuld sein muss.
Ist mein Programm falsch? Arbeite mit Arduino. Suche bei Goolge und 
allen Foren ergeben das gleiche vorgehen bei dem Programm. Aber Hardware 
kann doch nicht falsch sein oder?
Gast #3253589
Lesenswert?

>Weil ich es lieber nochmal klar schreiben wollte durch die neuen
>Erkenntnisse.

Und diese neuen Erkenntnisse gibst du in deinem alten Thread nicht
bekannt?

Das ist verdammt UNHÖFLICH von dir. Wenn dort noch jemand
antwortet verschwendet er also seine Zeit. Oh, man.
#3253606
Lesenswert?

Ich bin mir sowieso ganz und gar nicht sicher, dass da überhaupt hier im 
Forum was rauskommt.

Die SPI Routinen sind von Arduino fix&fertig geliefert.
Die Hardware wurde auch fix&fertig zugekauft.

Der Code sieht soweit ja vernünftig aus. Ist auch logisch, gibt ja auch 
fast keinen Code, der vom TO geschrieben wurde. Die kritischen Sachen 
stecken alle in der SPI Klasse. Was man anzweifeln könnte ist, ob
>   SPI.setDataMode(SPI_MODE2);
der korrekte Modus ist. Dann wars das aber auch schon.

Es gibt für die Helfer hier im Forum ganz einfach keinen vernünftigen 
Ansatzpunkt, an dem man mit der Analyse ansetzen könnte.
Gast #3253661
Lesenswert?

Hallo, auch im "alten" Forum werden alle Fortschritte bekannt gegeben!
An Sich muss das ganze ja so laufen, wenn ich ein anderes Mode benutze 
kommt gar nichts mehr raus. Auch auf manuellen steckbrett ist das ganze 
nicht besser aber auch nicht schlechter.
Gast #3253674
Lesenswert?

Nicht, habe da das Ergebnis der binärzahl Auswertung gepostet und mehr 
weiß ich grad nicht was ich machen soll. Habe es auch mit verdrillten 
SPI Kabeln probiert und die Länge der Kabel ist 10cm. Wenn ich an dem 
Eval-Board ein pc anschließe über Parallel Anschluss sind auch die Werte 
vom arduino stabil!

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