Forum: Mikrocontroller und Digitale Elektronik Arduino SPI Selbstgespräch


von Sam S. (freaky0815)


Lesenswert?

Hallo miteinander

Bin etwas mit dem SPI-Bus am spielen, habe jedoch nur ein 3.3 V LCD 
welches ich mit meinem Arduino UNO noch nicht betreiben kann.

Wollte dennoch mal schauen, ob ich SPI richtig einstellen kann.

Da ich kein Oszilloskop zur Hand habe möchte ich den Interrupt vom 
Arduino nutzen, um zu schauen ob wenigstens die Anzahl der gesendeten 
1er Bits richtig sind.

Nun zur ersten Frage. Warum zähle ich am MOSI-Pin keine ansteigenden 
Flanken, während am MISO-Pin 50 steigende Flanken pro Loop gezählt 
werden? SCL gibt wie erwartet 8 steigende Flanken aus.

Zweite Frage: Wäre es möglich den MOSI direkt mit dem MISO zu verbinden 
um wenigstens einen Device vorzutäuschen?

Vielen Dank für Hinweise ;-) Und Gruss,
Freak
1
#include <SPI.h>
2
3
#define intPin 0
4
#define ssPin 10
5
6
volatile int shoot=0;
7
8
void setup(){
9
  Serial.begin(9600);
10
  pinMode(ssPin, OUTPUT);
11
  digitalWrite(ssPin, HIGH);
12
  SPI.begin();
13
  SPI.setDataMode(1);
14
  SPI.setClockDivider(SPI_CLOCK_DIV128); 
15
  SPI.setBitOrder(MSBFIRST);
16
  attachInterrupt(intPin,fun,RISING);
17
}
18
19
void loop(){
20
  digitalWrite(ssPin,LOW);
21
  SPI.transfer(0xF0);
22
  digitalWrite(ssPin,HIGH);
23
  delay(1000);
24
  Serial.println(shoot);
25
  shoot = 0;
26
}
27
28
void fun(){
29
  shoot += 1;
30
}

von holger (Gast)


Lesenswert?

>Da ich kein Oszilloskop zur Hand habe möchte ich den Interrupt vom
>Arduino nutzen, um zu schauen ob wenigstens die Anzahl der gesendeten
>1er Bits richtig sind.

Was für ein Unsinn;)

>Zweite Frage: Wäre es möglich den MOSI direkt mit dem MISO zu verbinden
>um wenigstens einen Device vorzutäuschen?

Ja, dann bekommst du das zurück was du gesendet hast.

von hp-freund (Gast)


Lesenswert?

Habe keine Ahnung von Ardu*.
Lass den doch einfach mit 3,3V laufen, dann kannst Du ohne Pegelwandler 
dein LCD bedienen. Nur eben langsamer.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

hp-freund schrieb:
> Lass den doch einfach mit 3,3V laufen, dann kannst Du ohne Pegelwandler
> dein LCD bedienen. Nur eben langsamer.

Musst du nicht mal. Mit Spannungsteilern ist das kein Problem, denn es 
geht sicher nur in Richtung LCD und nicht zurück. 1k/2k2 könnte da gut 
klappen.

von hp-freund (Gast)


Lesenswert?

Matthias S. schrieb:
> Mit Spannungsteilern

Habe ich bewusst vermieden. Vor kurzem hatten wir einen Beitrag über die 
Signalformen verschiedener Pegelwandler. LCD werden meist mit mehreren 
MHz gefüttert, da kann es neue Probleme geben.

von hp-freund (Gast)


Lesenswert?


von Sam S. (freaky0815)


Lesenswert?

Bin hier in den Bergen und hab nur den Arduino und das LCD einige 
Jumpers und einen 220 ohm Widerstand. Zuhause liegt der Logic Level 
Converter.

Hat jemand eine Antwort auf Frage 1?

Bitte keine Hinweise, wie ich mit Draht oder Bleistift einen 
Spannungsteiler bauen könnte ;-)

hp-freund schrieb:
> Lass den doch einfach mit 3,3V laufen, dann kannst Du ohne Pegelwandler
> dein LCD bedienen. Nur eben langsamer.

Geht leider nicht. Stromversorgung kommt von Laptop und der Logik-Pegel 
des Arduino ist 5V.

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>Hat jemand eine Antwort auf Frage 1?

Du hast Schrott gezählt.
SPI.transfer(0xF0); hat im besten Fall eine steigende Flanke.

von holger (Gast)


Lesenswert?

Nachtrag:

>SPI.transfer(0xF0); hat im besten Fall eine steigende Flanke.

Auf SCL natürlich 8;)

von Sam S. (freaky0815)


Lesenswert?

holger schrieb:
> Auf SCL natürlich 8;)

Richtig :). Da das alles korrekt ist kannst du mir sicher erklären, 
warum nur 1 auf MOSI gelesen wird? Steh aufm Schlauch.

von Sam S. (freaky0815)


Lesenswert?

Ok habs gerafft.... Ich n00b ;)

 ____
_|     |______

: Bearbeitet durch User
von Logi Kana Lysator (Gast)


Lesenswert?

Sam S. schrieb:
> ____
> _|     |______


   ___
 _|   |______

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.