Pages: 1 2 [3] 4 5   Go Down
Author Topic: TLC5940 Mux Library & 74HC595 (Final Status)  (Read 8197 times)
0 Members and 1 Guest are viewing this topic.
Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21871
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

http://arduino.cc/en/Tutorial/ShiftOut elektrischer Anschluß
http://arduino.cc/playground/Code/ShiftRegister595 Bibiothek
Grüße Uwe
Logged

Dortmund
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dabei ist egal, dass der tlc teilweise die selben pins benötigt?  smiley-slim
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der 74HC595 wird anders als im Shiftout Tutorial mit Analog 0, Analog 1 und Digital 9 verbunden.

Also ist nur Digital 9 mit dem TLC5940NT aber auch mit dem 74HC595 verbunden, dies dient vermutlich der Synchronisation beider IC's bei der Zeilenumschaltung.
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Dortmund
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

jetzt klappt es! vielen dank! smiley
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

DIe von dir erfragte Routine wird übrigens von der ISR aufgerufen, das bedeutet das Multiplexen der Matrix geschieht dadurch automatisch.
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21871
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dabei ist egal, dass der tlc teilweise die selben pins benötigt?  smiley-slim
Nein sollten schon verschiedene PINs sein.
Der TLC braucht einige bestimmte PINs weil diese die Ausgänge der Timer sind (3,9,10) und diese durch di Timer bestimmte frequenzen erhalten bzw automatisch ohne zusätzliche Programmierung funktionieren. Die andere PINs können beliebig gewählt werden. Die Pins des 595 können beliebig gewählt werden.
Grüße Uwe
« Last Edit: September 20, 2012, 04:04:06 pm by uwefed » Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Falls Du noch mehr Informationen über den TLC5940 brauchst dann schau dir mal dies an:
http://flipmu.com/files/2011/04/Demystifying-the-TLC5940.pdf
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Dortmund
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So schwer ist es dann ja doch gar nicht, das multiplexen geschieht ja echt von alleine. smiley

Die Pins des 595 können beliebig gewählt werden.

Muss ich irgendwo angeben, welche Pins ich für den 595 verwende?
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21871
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muss ich irgendwo angeben, welche Pins ich für den 595 verwende?

Ja: Schau Dir mal den Beispielsketch auf http://arduino.cc/playground/Code/ShiftRegister595 an:

 
Code:
  #include "ShiftRegister595.h"
     
    byte latchPin = 8;  //Pin connected to ST_CP of 74HC595
    byte clockPin = 12; //Pin connected to SH_CP of 74HC595
    byte dataPin = 11;  //Pin connected to DS    of 74HC595
     
    ShiftRegister595 shiftRegister595 = ShiftRegister595( latchPin , clockPin , dataPin );
     
     
    void setup() {
    }
     
    void loop() {
      //count up routine
      for (int j = 0; j < 256; j++) {
        shiftRegister595.write(j);
        delay(1000);
      }
    }

Grüße Uwe
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der Pinanschluss des 74HC595 ist hier definiert, für die Ansteuerung durch die TLC5940Mux Library:

Atmega168/328
Code:
// SHIFT_DATA_PIN (PC0 is analog 0) = '595 SER pin (Pin 14)
#define SHIFT_DATA_PORT PORTC
#define SHIFT_DATA_PIN  PC0
#define SHIFT_DATA_DDR  DDRC
// SHIFT_CLK_PIN (PC1 is analog 1) = '595 SRCLK (Pin 11)
#define SHIFT_CLK_PORT  PORTC
#define SHIFT_CLK_PIN   PC1
#define SHIFT_CLK_DDR   DDRC
// '595 RCLK is hooked to tlc XLAT pin (Arduino digital Pin 9, 74HC595 Pin 12)

Atmega1280/2560
Code:
// SHIFT_DATA_PIN (PF0 is analog 0) = '595 SER pin (Pin 14)
#define SHIFT_DATA_PORT PORTF
#define SHIFT_DATA_PIN  PF0
#define SHIFT_DATA_DDR  DDRF
// SHIFT_CLK_PIN (PF1 is analog 1) = '595 SRCLK (Pin 11)
#define SHIFT_CLK_PORT  PORTF
#define SHIFT_CLK_PIN   PF1
#define SHIFT_CLK_DDR   DDRF
// '595 RCLK is hooked to tlc XLAT pin (Arduino digital Pin 11, 74HC595 Pin 12)

Atmega644/1284 (Sanguino)
Code:
/ SHIFT_DATA_PIN (PA0 is analog 0) = '595 SER pin (Pin 14)
#define SHIFT_DATA_PORT PORTA
#define SHIFT_DATA_PIN  PA0
#define SHIFT_DATA_DDR  DDRA
// SHIFT_CLK_PIN (PA1 is analog 1) = '595 SRCLK (Pin 11)
#define SHIFT_CLK_PORT  PORTA
#define SHIFT_CLK_PIN   PA1
#define SHIFT_CLK_DDR   DDRA
// '595 RCLK is hooked to tlc XLAT pin (Sanguino digital Pin 13, 74HC595 Pin 12)
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Anschluss des TLC5940 an den Arduino/Sanguino:

Atmega168/328
Arduino digital pin 11 (MOSI) -> SIN (Tlc pin 26)
Arduino digital pin 13 (SCK) -> SCLK (Tlc pin 25)
Arduino digital pin 9 (OC1A) -> XLAT (Tlc pin 24)
Arduino digital pin 10 (OC1B) -> BLANK (Tlc pin 23)
Arduino digital pin 3 (OC2B) -> GSCLK (Tlc pin 18)

Atmega1280/2560
Mega pin 51 (MOSI) -> SIN (Tlc pin 26)
Mega pin 52 (SCK) -> SCLK (Tlc pin 25)
Mega pin 11 (OC1A) -> XLAT (Tlc pin 24)
Mega pin 12 (OC1B) -> BLANK (Tlc pin 23)
Mega pin 9 (OC2B) -> GSCLK (Tlc pin 18)

Atmega644/1284 (Sanguino)
Sanguino pin 5 (MOSI) -> SIN (Tlc pin 26)
Sanguino pin 7 (SCK) -> SCLK (Tlc pin 25)
Sanguino pin 13 (OC1A) -> XLAT (Tlc pin 24)
Sanguino pin 12 (OC1B) -> BLANK (Tlc pin 23)
Sanguino pin 14 (OC2B) -> GSCLK (Tlc pin 18)
« Last Edit: February 27, 2013, 08:31:56 pm by Megaionstorm » Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Muss ich irgendwo angeben, welche Pins ich für den 595 verwende?

Code:
#define SHIFT_DATA_PORT PORTC
#define SHIFT_DATA_PIN  PC0
#define SHIFT_DATA_DDR  DDRC

In diesem Code wird definiert das Du den Pin PC0 des Ports C für die Übertragung der Daten an den 74HC595 benutzt, hierbei handelt es sich um den Analog 0 Pin des Arduinos !

Würdest Du den Analog 2 Pin für die Übertragung der Daten an den 74HC595 benutzen wollen müsstest Du den Code folgendermassen ändern, Analog 2 ist PC2.

Code:
#define SHIFT_DATA_PORT PORTC
#define SHIFT_DATA_PIN  PC2
#define SHIFT_DATA_DDR  DDRC
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Diesem Bild kannst Du entnehmen welcher Arduino Pin zu welchem Port gehört und welche Bezeichnung er hat:


Z.B.
Digital Pin 2 befindet sich beim Port D also PORTD, er hat die Bezeichnung PD2.
Digital Pin 12 hingegen findet man beim Port B und hat die Bezeichnung PB4 !!!
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Dortmund
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke, danke, danke!
Das Bild hab ich gebraucht. Somit kann ich jedem Pin die Funktionen des Clock- und Datapins zuweisen, sehe ich das richtig?
Nur die Latch muss zusammen mit der Latch des Tlcs zusammengeschlossen werden, und die kann man auch nicht ändern?
Aus dem Pin Mapping steht bei Pin 9 'OC1A/PCINT1' und dieses 'PCINT' steht ja auch noch bei den Analogen Eingängen, bzw. das 'OC..' auch noch bei den Pins 10 und 11.

Noch mals vielen Dank für all die Hilfe!
Grüße Moritz
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 1980
Wo ein Wille ist, da ist auch ein Weg !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Nur die Latch muss zusammen mit der Latch des Tlcs zusammengeschlossen werden, und die kann man auch nicht ändern?

Nein, dies kann man nicht ändern weil der TLC5940 im SPI-Modus läuft und an die 3 SPI Pins angeschlossen werden muss.

Der TLC5940 kann auch im Bitbang Modus betrieben werden, wird dann aber llllaaannnngggsssaammmm !
Logged

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Pages: 1 2 [3] 4 5   Go Up
Jump to: