Forum: Mikrocontroller und Digitale Elektronik Schieberegister Kaskadierung


von Thorsten (Gast)


Lesenswert?

Tag zusammen,

Hab hier ein 74HC595 über SPI mit einem Arduino Uno angesteuert, was 
auch super funktioniert, aber sobald ich ein zweites 74HC595 an das 
erste anknüpfe bleiben alle Ausgänge des ersten Registers und lediglich 
der Q0 Pin des zweiten an.

Sobald ich mit einem Messgerät den SCK-, also den Shift Clock Pin 
berührer läuft das Programm wie gewollt...

Was könnte das sein?

von Falk B. (falk)


Lesenswert?

Miese Verkabelung und Reflektionen, ggf. Masseprobleme.

von Thorsten (Gast)


Lesenswert?

Neues Aufbauen und Nutzen von anderen Pins bringt bisher nichts, aber 
Schlüsselbund am Pin während ich ihn in der Hand halte...

Reicht die Spannung vielleicht nicht um 2 Schieberegister mit dem Takt 
zu versorgen?

von Max H. (hartl192)


Lesenswert?

Wie hast du es aufgebaut?

von Thorsten (Gast)


Lesenswert?

http://www.mikrocontroller.net/wikifiles/a/ac/Mega8-595-2.gif

Lediglich noch LEDs an jedem Ausgang mit 470 Ohm Vorwiderstand

von Max H. (hartl192)


Lesenswert?

100nF Abblockkondensatoren zwischen Vdd und Vss an den ICs?

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

http://www.mikrocontroller.net/articles/Kondensator#Siebkondensator

Poste ein Bild von deinem Aufbau unter Beachtung der Bildformate.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Wenn die Schieberegister tatsächlich genau so wie im 
Schaltplanausschnitt angeschlossen sind, ist es ein Wunder, dass es 
überhaupt einen funktionsfähigen Zustand gibt. Es fehlen nämlich die 
Versorgungsspannungsanschlüsse.

Hast Du die Schieberegister direkt mit den Prozessorpins verbunden? Dies 
wäre doch eher ungewöhnlich. Folglich ist davon auszugehen, dass im 
Schaltplan dann auch noch die verwendeten Steckverbinder fehlen.

Folglich hat der von Dir vorgelegte Schaltplanausschnitt vermutlich 
überhaupt nichts mit Deiner tatsächlichen Schaltung zu tun. Wieso 
glauben so viele Anfänger, sinnvolle Hilfestellung zu bekommen, indem 
sie vorsätzlich falsche Informationen liefern?

von Karl H. (kbuchegg)


Lesenswert?

Dann erhebt sich auch noch die Frage, wie das Programm aussieht.

Wäre nicht das erste mal, dass jemand an Ausgangspins lediglich den 
Pullup zu und weg schaltet, weil er vergessen hat die Pins auch 
tatsächlich auf Ausgang zu stellen.

Ergo:
Es kann die Hardware sein, es kann aber auch die Software sein.
Such dir was aus.

von Thorsten (Gast)


Angehängte Dateien:

Lesenswert?

Max H. schrieb:
> 100nF Abblockkondensatoren zwischen Vdd und Vss an den ICs?

Zurzeit leider nur <10nF Kerkos da, diese machen zumindest keinen 
Unterschied.

Falk Brunner schrieb:
> Poste ein Bild von deinem Aufbau unter Beachtung der Bildformate.

Siehe Anhang, zurzeit ohne LEDs am zweiten Schieberegister.

Karl Heinz schrieb:
> Ergo:
> Es kann die Hardware sein, es kann aber auch die Software sein.
> Such dir was aus.

Dann such ich mir wohl die Hardware aus, es funktioniert ja unter 
Umständen (Ein Kontakt des DMM anlegen/ Schlüssel in der Hand).

von Thorsten (Gast)


Lesenswert?

1
#include <SPI.h>
2
3
int latchpin = 2;
4
int data1;
5
int data2;
6
int count;
7
8
9
void setup(){
10
  pinMode(latchpin, OUTPUT);
11
  digitalWrite(latchpin,LOW);
12
  
13
  SPI.begin();
14
  SPI.setBitOrder(LSBFIRST);
15
  SPI.setClockDivider(2);
16
  SPI.setDataMode(SPI_MODE2);
17
}
18
19
void loop(){
20
  if(data2>=254)
21
    {
22
      data2>>=1;
23
      count=0;
24
    }
25
   else
26
  {
27
    data2>>=1;
28
      data2 |= (1 << 7);
29
      count++;
30
   
31
  } 
32
  
33
  data1 = getData1();
34
  
35
  digitalWrite(latchpin,LOW);
36
  SPI.transfer(data1);
37
  SPI.transfer(data2);
38
  digitalWrite(latchpin,HIGH);
39
  delay(500);
40
}
41
42
int getData1(){
43
 switch(count){
44
  case 0:
45
        return 0b10000001;
46
  case 1:
47
        return 0b01000010;      
48
  case 2:
49
        return 0b00100100;
50
  case 3:
51
        return 0b00011000;
52
  case 4:
53
        return 0b00011000;
54
  case 5:
55
        return 0b00100100;
56
  case 6:
57
        return 0b01000010; 
58
  case 7:
59
        return 0b10000001;   
60
        
61
 }
62
 
63
}

von Max H. (hartl192)


Lesenswert?

Wirkt das nur so oder ist GND und/oder Vcc wenigsten beim zweiten IC 
nicht angeschlossen.
Die Verbindung zwischen Abblockkondensator und den Vcc/GND Pins sollte 
so kurz wie möglich sein.

von Thorsten (Gast)


Lesenswert?

Wirkt nur so, von der VCC bzw. GND Schiene ist der Abblockkondensator 
direkt verbunden, ohne Kabel

von Karl H. (kbuchegg)


Lesenswert?

Zumindest sieht die ganze Anordnung seltsam aus.

Man kann es nicht wirklich gut erkennen, aber von hier wirkt es so, als 
ob die Versorgungspannung DURCH die Kondensatoren durch geht.

Da müssten eigentlich Drahtbrücken sein, die von jedem IC jeweils von 
Vcc bzw. GND direkt auf die Vcc bzw. GND Schiene des Steckbretts geht. 
Ich kann diese Brücken aber auf dem Photo nicht identifizieren. Auf dem 
2.ten 595 ganz sicher nicht, auf dem ersten ist das durch den 
Drahtverhau schwer zu erkennen.

: Bearbeitet durch User
von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

Ich glaube Schaltplan und Aufbau stimmen immer noch nicht überein!
Zeichen mal wie du es WIRKLICH aufgebaut hat!

Edit: So geht das mit den Abblock-Cs

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Thorsten (Gast)

>Wirkt nur so, von der VCC bzw. GND Schiene ist der Abblockkondensator
>direkt verbunden, ohne Kabel

FALSCH! VCC und GND SIND NICHT ANGESCHLOSSEN!

Und du sollt doch um Willems Willen keine Kondensatoren in REIHE 
zwischen GND/VCC zum IC machen sondern PARALLEL!

GRUNDLAGEN! GRUNDLAGEN! GRUNDLAGEN! GRUNDLAGEN! GRUNDLAGEN! GRUNDLAGEN!

von Max H. (hartl192)


Lesenswert?


: Bearbeitet durch User
von Thorsten (Gast)


Lesenswert?

Max H. schrieb:
> So geht das mit den Abblock-Cs

Danke, leider funktioniert es trotzdem nicht

von Thorsten (Gast)


Lesenswert?

Steinigt mich, der Neuling hat einen Fehler gemacht, er sollte wohl 
lieber sich auspeitschen und einsperren lassen,zusätzlich ein paar 
Jährchen im Exil Bücher lesen...

Hab mich halt noch nicht so intensiv damit beschäftigt, grade zum ersten 
mal was von Abblockkondensatoren gehört

von Max H. (hartl192)


Lesenswert?

Das von den Abblock-Cs könnte man noch entschuldigen. Es sollte aber, 
auch von einem Anfänger, nicht zu viel verlang sein, dass der reale 
Aufbau mit dem Schaltplan übereinstimmt.

Ich habe nicht viel Ahnung von Arduino, aber versuche mal die SPI-Pins 
auf Output zu stellen.

: Bearbeitet durch User
von Thorsten (Gast)


Lesenswert?

Schaltplan halt zuerst gemacht, und danach dass mit den Kondensatoren 
versucht...

von Karl H. (kbuchegg)


Lesenswert?

Thorsten schrieb:
> Max H. schrieb:
>> So geht das mit den Abblock-Cs
>
> Danke, leider funktioniert es trotzdem nicht

-> neues Photo.


Sorry, aber nach diesem Lapsus traue ich dir nicht mehr über den Weg. 
Aber bitte eines auf dem man die Kabel verfolgen kann ohne Raten zu 
müssen.

Auch einem Neuling sollte klar sein, dass ein IC zuallererst mal direkt 
an Vcc bzw. GND angeschlossen wird.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Max H. schrieb:

> Ich habe nicht viel Ahnung von Arduino, aber versuche mal die SPI-Pins
> auf Output zu stellen.


Ich denke, das macht die SPI Klasse schon selbst. Zumindest wäre das 
logisch und das was ich von einer vernünftig designten Klasse erwarten 
würde. Was ja auch auf viele Arduino Klassen auch tatsächlich zutrifft.

: Bearbeitet durch User
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.