Forum: Mikrocontroller und Digitale Elektronik SPI-Routine Fehlerhaft


von Piere (Gast)


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?

von spess53 (Gast)


Lesenswert?

Hi

Warum machst du einen neuen Thread auf?

Beitrag "ARDUINO SPI-Problem"

MfG Spess

von Piere (Gast)


Lesenswert?

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

von holger (Gast)


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.

von Karl H. (kbuchegg)


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.

von Piere (Gast)


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.

von holger (Gast)


Lesenswert?

>Hallo, auch im "alten" Forum werden alle Fortschritte bekannt gegeben!

Wann? Wozu? Ein Thread reicht pro Thema.

Hier der alte. Nix hast du gemacht.

Beitrag "ARDUINO SPI-Problem"

von Piere (Gast)


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!

von Spess53 (Gast)


Lesenswert?

Hi

Vielleicht fehlt irgendwo eine Masseverbindung.

MfG Spess

von Piere (Gast)


Lesenswert?

Habe alle Kontakte verbunden ich bin ein wenig ratlos

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.