mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Attiny 2313 mit einem Schieberegister fürs lauflicht


Autor: Ewald Zimmermann (ewaldinho)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich möchte ein Lauflicht mit 16 LED´s machen.
Ich habe bereits Lauflichter mit 8 LED´s gemacht und programmiert.
Ich weiß nur nicht wie ich das kabel verlegen soll, also wie ich diese 
mit dem Schieberegister verbinden soll und mit dem Prozessor(Attiny 
2313).

Die Bilder zeigen wie die Platine aussieht.
Der Prozessor ist extern also nicht auf der Platine verbaut.

Hoffe auf schnelle Antworten.

Gruß Ewaldinho

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Ich weiß nur nicht wie ich das kabel verlegen soll, also wie ich diese
> mit dem Schieberegister verbinden soll und mit dem Prozessor(Attiny
> 2313).

Ist zwar nicht genau dein Schieberegister, aber das Prinzip ist ähnlich

http://www.mikrocontroller.net/articles/AVR-Tutori...

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:

> Ist zwar nicht genau dein Schieberegister, aber das Prinzip ist ähnlich
>
> http://www.mikrocontroller.net/articles/AVR-Tutori...

Jaa aber ich meine da ich ja meinen 10 pol. anschluss hab...
Da steht ja das es an Port b 0,1,2,3 angschlossen werden muss.
aber bei mir sind ist nur 1 portb an dem 10 pol anschluss dran...
Muss ich dann den Prozesser ändern.

Wie muss ich die LED´s denn ansteuern?

Autor: Rene Zimmermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn es denn dann unbedingt ein Schieberegister sein muß wird ein 
zweiter 74HCT164 benötigt.


Dateneingang vom zweiten 164 an denn letzten Ausgang vom ersten 164. 
Weitere 8 Led wie beim ersten auch anschliessen. Das Taktsignal beiden 
zuführen.

Gruß Rene

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke dann mache ich noch nen zweiten dran..

Tut mir leid aber das verstehe ich nicht so ganz , ich bin noch 13...
Was für anschlüsse brauche ich denn dafür beim Attiny 2313?
Und wie soll ich die Schieberegister verbinden?
Gruß Ewald

Autor: Rene Zimmermann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hier mal eine übersicht kann man dann besser verstehen.

Gruß Rene

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Jaa aber ich meine da ich ja meinen 10 pol. anschluss hab...

Du hast doch eine Prozessorplatine auf der das Gegenstück des 
Anschlusses ist, oder nicht.
Die beiden Platinen werden mit einem Flachbandkabel verbunden. Und damit 
landen dann irgendwelche Pins elektrisch an deinem Anschluss auf der 
Zusatzplatine. Da suchst du dir dann 3 aus, die dir passen. Du verfolgst 
also welche 3 Prozessorpins über das Kabel an welchen Pins von deinem 
Anschluss rauskommen. Und an die schliesst du dann die Schieberegister 
an.

> Da steht ja das es an Port b 0,1,2,3 angschlossen werden muss.

Muss nicht.
Du musst nur wissen welche Prozessor-Pin du mit welcher 
Schieberegisterleitung belegt hast.

> Wie muss ich die LED´s denn ansteuern?

genau so wie es im Tutorial steht.
Zum richtigen Zeitpunkt am richtigen Pin vom Schieberegister 'wackeln'

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an euch beiden nun muss ich nur noch den 2 Schieberegister von 
meinem Lehrer besorgen und dann kann ich auch schon loslegen mit dem 
Programmieren..

Achja schöner Schaltplan auf die schnelle.
Ich werde mich noch melden wenn es geklappt hat.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene Zimmermann schrieb:
> Hallo,
>
> hier mal eine übersicht kann man dann besser verstehen.

Deine Schieberegister sind ja gar nicht kaskadiert!

Damit kannst du nur 2 mal jeweils das identische Muster erzeugen

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das nun Falsch?
Oder nicht ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> Danke an euch beiden nun muss ich nur noch den 2 Schieberegister von
> meinem Lehrer besorgen und dann kann ich auch schon loslegen mit dem
> Programmieren..

Wenn du noch mal um wechseln kannst, frag ihn nach 74595

Die haben im Gegensatz zum 164 ein eingebautes Latch. Damit kannst du 
gleichzeitig schieben während deine LED was anderes anzeigen. Erst mit 
einem Impuls am RCLK wird der Inhalt des Schieberegisters ausgegeben.

> Achja schöner Schaltplan auf die schnelle.

Deine Lötungen sehen schon ziemlich gut aus. Für deine 13 Jahre, 
Respekt.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> Ist das nun Falsch?

Es ist nicht falsch. Hauptsächlich weil es keine Definition für richtig 
gibt :-)

Kommt immer drauf an was du machen willst.

Schau noch mal ins Tutorial. Ziemlich weit unten werden 2 
Schieberegister kaskadiert: Das zweite Schieberegister hängt am Ausgang 
vom ersten. Beide 8 Bit Schieberegister wirken dann zusammen so, als ob 
sie ein einziges SR mit 16 Bit wären: Jeder der 16 Ausgänge ist einzeln 
erreichbar.

Die SR im geposteten Schaltplan hängen aber komplett parallel: Jedes SR 
kriegt genau dieselben Eingangssignale: Die 8 Ausgänge jedes SR werden 
immer genau denselben Zustand anzeigen.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Wenn du noch mal um wechseln kannst, frag ihn nach 74595
>
> Die haben im Gegensatz zum 164 ein eingebautes Latch. Damit kannst du
> gleichzeitig schieben während deine LED was anderes anzeigen. Erst mit
> einem Impuls am RCLK wird der Inhalt des Schieberegisters ausgegeben.
>
nee er hat nun schon 10 stück bestellt und ich sollte einfach mal was 
ausprobieren und ja er hat keine anderen mehr.
Aber es würde doch auch so gehn?!
>
> Deine Lötungen sehen schon ziemlich gut aus. Für deine 13 Jahre,
> Respekt.

Jaa Danke,ich löte seit dem ich klein bin :P

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> nee er hat nun schon 10 stück bestellt und ich sollte einfach mal was
> ausprobieren und ja er hat keine anderen mehr.
> Aber es würde doch auch so gehn?!

Ja klar.

Ist vielleicht ohnehin besser. Beim 164 'sieht' man besser, wie sich ein 
1-Bit bei jedem Clock-Puls immer um 1 Stelle weiterbewegt.

Dein Lauflicht wird dann eben nur in eine Richtung 'sauber' laufen und 
in die andere wirds ein wenig flackern. Aber damit kann man leben.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
>
> Es ist nicht falsch. Hauptsächlich weil es keine Definition für richtig
> gibt :-)
>
> Kommt immer drauf an was du machen willst.
>
> Schau noch mal ins Tutorial. Ziemlich weit unten werden 2
> Schieberegister kaskadiert: Das zweite Schieberegister hängt am Ausgang
> vom ersten. Beide 8 Bit Schieberegister wirken dann zusammen so, als ob
> sie ein einziges SR mit 16 Bit wären: Jeder der 16 Ausgänge ist einzeln
> erreichbar.
>
> Die SR im geposteten Schaltplan hängen aber komplett parallel: Jedes SR
> kriegt genau dieselben Eingangssignale: Die 8 Ausgänge jedes SR werden
> immer genau denselben Zustand anzeigen.

Hast Recht.
Du meinst doch Kaskadieren von Schieberegistern oder?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Du meinst doch Kaskadieren von Schieberegistern oder?

Genau.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Ja klar.
>
> Ist vielleicht ohnehin besser. Beim 164 'sieht' man besser, wie sich ein
> 1-Bit bei jedem Clock-Puls immer um 1 Stelle weiterbewegt.
>
> Dein Lauflicht wird dann eben nur in eine Richtung 'sauber' laufen und
> in die andere wirds ein wenig flackern. Aber damit kann man leben.
Das macht garnix
Dann hab ich noch ne andere frage.
Was ist wenn man das an ne Matrix anschließen würde?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Was ist wenn man das an ne Matrix anschließen würde?

Welche Matrix?

Man schliesst eine Matrix an einen µC an.
Sprich man baut zb aus SR eine Matrix auf.


Nicht böse sein: Back erst mal kleine Brötchen.

Du kannst übrigens dein erstes SR mit 8 LED schon mal in Betrieb nehmen. 
Das 2.te wird ja dann dahinter angeschlossen. Du musst nicht warten, bis 
du das zweite 164 hast. Das ist ja einer der Vorteile einer SR Lösung: 
Aus µC Sicht ändert sich elektrisch nichts, wenn noch ein SR dazu kommt.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Welche Matrix?
>
> Man schliesst eine Matrix an einen µC an.
> Sprich man baut zb aus SR eine Matrix auf.
>
>
> Nicht böse sein: Back erst mal kleine Brötchen.
>
> Du kannst übrigens dein erstes SR mit 8 LED schon mal in Betrieb nehmen.
> Das 2.te wird ja dann dahinter angeschlossen. Du musst nicht warten, bis
> du das zweite 164 hast. Das ist ja einer der Vorteile einer SR Lösung:
> Aus µC Sicht ändert sich elektrisch nichts, wenn noch ein SR dazu kommt.

Nee weil wir werden noch mit unserem Lehrer mit mehreren SR 10 
Matrixanzeigen
hintereinander schließen und wollen dort eine Laufschrift machen.
Aber das ist erstmal egal.
Ich versuche jetzt erstmal alles zulöten.
Bin in 20 min Fertig.

Autor: Ewald Zimmermann (ewaldinho)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So nun war ich schon natürlich früher fertig aber ich weiß nicht wo 
minus und wo die anderen 3 pins dran kommen '?!
Guck mal bitte die bilder an

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> So nun war ich schon natürlich früher fertig aber ich weiß nicht wo
> minus und wo die anderen 3 pins dran kommen '?!

Dann suchst du dir im Web das Datenblatt zum IC
(einfach bei google die IC-Nummer eingeben)
und siehst im Datenblatt nach.

Da musst du durch, dass man sich auch mal Informationen auf eigene Faust 
zusammensuchen muss.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Guck mal bitte die bilder an

Deine Bilder in allen Ehren.
Aber von meiner Seite des Bildschirms sind das einfach nur Lötpunkte an 
denen Kabeln enden. Wenn sie wenigstens scharf wären, könnte man 'schön' 
sagen. Aber ansonsten sagen sie nicht viel aus.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Dann suchst du dir im Web das Datenblatt zum IC
> (einfach bei google die IC-Nummer eingeben)
> und siehst im Datenblatt nach.
>
> Da musst du durch, dass man sich auch mal Informationen auf eigene Faust
> zusammensuchen muss.

Jaa aber da sind ja 2 Serial Outputs ein GND eine Clear Ein Clock und 
ein Ycc
Aber welchen soll ich anschließen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Jaa aber da sind ja 2 Serial Outputs ein GND eine Clear Ein Clock und
> ein Ycc
> Aber welchen soll ich anschließen?

Alle.

Von deiner Prozessorplatine kommt ein Kabel.
Auf diesem Kabel laufen die SR Signale (Clear, Clock, Data)

Und je nachdem wie der Anschluss auf der µC-Platine aussieht, ist da 
sehr wahrscheinlich auch - (also GND) und +5V (also Vcc) dabei.

Du hast


   +----------------------+                 +----------------------+
   |                      |                 |                      |
   |    µC-Platine        |                 |  +--+    LED-Platine |
   |                      | Flachbandkabel  |  |oo|                |
   |           Anschluss --------------------->|oo|                |
   |                      |                 |  |oo|                |
   +----------------------+                 |  +--+                |
                                            |                      |
                                            +----------------------+

Das musst du jetzt, ausgehend von der µC-Platine, ermitteln, über welche 
Leitung im Flachbandkabel, du die GND Verbdindung herstellen kannst. 
Selbiges für alle anderen Leitungen.
Für die SR-Signale (Clear, Clock, Data) suchst du dir auf der µC Platine 
4 Anschlüsse raus, die zu den Portpins vom µC führen und auf denen sonst 
nichts hängt. Dann wieder: ausgehen von der µC Platine - wo landen diese 
4 Anschlüsse auf deiner Platine und dort schliesst du dann die 
Steuersignale des SR an. Und schreibst dir auf einem Zettel auf, welcher 
SR-Eingang dadurch mit welchem Port-Pin von deinem Tiny verbunden ist!

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:

> Alle.
>
> Von deiner Prozessorplatine kommt ein Kabel.
> Auf diesem Kabel laufen die SR Signale (Clear, Clock, Data)
>
> Und je nachdem wie der Anschluss auf der µC-Platine aussieht, ist da
> sehr wahrscheinlich auch - (also GND) und +5V (also Vcc) dabei.
>
> Du hast
>
>
>    +----------------------+                 +----------------------+
>    |                      |                 |                      |
>    |    µC-Platine        |                 |  +--+    LED-Platine |
>    |                      | Flachbandkabel  |  |oo|                |
>    |           Anschluss --------------------->|oo|                |
>    |                      |                 |  |oo|                |
>    +----------------------+                 |  +--+                |
>                                             |                      |
>                                             +----------------------+
>
> Das musst du jetzt, ausgehend von der µC-Platine ermitteln, über welche
> Leitung im Flachbandkabel, du die GND Verbdindung herstellen kannst.
> Selbiges für alle anderen Leitungen.

Achso ok ich teste es dann einfahc.
Danke ich werde mich noch melden

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Achso ok ich teste es dann einfahc.

Besser wäre es, wenn du in die Doku zu deinem µC Bord schaust, dort den 
Anschluss identifizierst und nachsiehst, auf welchem Pin dort GND zur 
Verfügung steht.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
>
> Besser wäre es, wenn du in die Doku zu deinem µC Bord schaust, dort den
> Anschluss identifizierst und nachsiehst, auf welchem Pin dort GND zur
> Verfügung steht.

Achja mein Lehrer hat doch die 74HC 595 Also muss ich erstmal doch 
warten.
Danke aber

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Achja mein Lehrer hat doch die 74HC 595 Also muss ich erstmal doch
> warten.

Ziehs jetzt mit den 164 durch.
Du kannst nur lernen dabei.

Der interessantere Teil kommt ja noch:
Das Programm

In welcher Reihenfolge muss welcher Pin welchen Pegel einnehmen, damit 
am SR genau was passiert?

Autor: Rene Zimmermann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
kleiner Fehler auf die schnell, ups.

Gruß Rene

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
>
> In welcher Reihenfolge muss welcher Pin welchen Pegel einnehmen, damit
> am SR genau was passiert?

Das versteh ich nun nicht.
Kannst du es nochmal leichter sagen

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> Karl heinz Buchegger schrieb:
>>
>> In welcher Reihenfolge muss welcher Pin welchen Pegel einnehmen, damit
>> am SR genau was passiert?
>
> Das versteh ich nun nicht.
> Kannst du es nochmal leichter sagen

Ein Schieberegister macht ja nichts von alleine.

Erst das Zusammenspiel der 2 Eingänge Clock und Daten veranlasst etwas.

Am Dateneingang legt man 0 oder 1 an, je nachdem was man haben will. Ein 
anschliessender Puls (0-1-0) am Clock Eingang veranlasst das SR, die am 
Daten Eingang anliegende 0 (oder 1) an die erste Stelle im 
Schieberegister zu verfrachten. Gleichzeitig werden im Schieberegister 
alle anderen Stellen um 1 Stelle weitergeschoben.

Schau ins Tutorial: Da ist eine Beschreibung was ein Schieberegister 
prinzipiell macht.


  Daten
        +---+---+---+---+---+---+---+---+
        |   |   |   |   |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

An Daten legst du jetzt eine 1 an

  Daten: 1
        +---+---+---+---+---+---+---+---+
        |   |   |   |   |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

Danach kommt der Puls an den Clock Eingang: Einmal auf 1 und wieder 
zurück auf 0

  Daten 1
        +---+---+---+---+---+---+---+---+
        | 1 |   |   |   |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

Jetzt legst du an Daten zb eine 0 an

  Daten 0
        +---+---+---+---+---+---+---+---+
        | 1 |   |   |   |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

und wieder der Clock Impuls  0 - 1 - 0

  Daten 0
        +---+---+---+---+---+---+---+---+
        | 0 | 1 |   |   |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

wieder eine 0 und ein Clock Impuls später

  Daten 0
        +---+---+---+---+---+---+---+---+
        | 0 | 0 | 1 |   |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

sagen wir: Daten auf 1

  Daten 1
        +---+---+---+---+---+---+---+---+
        | 0 | 0 | 1 |   |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

und ein Clock Impuls 0 - 1 - 0

  Daten 1
        +---+---+---+---+---+---+---+---+
        | 1 | 0 | 0 | 1 |   |   |   |   |
        +---+---+---+---+---+---+---+---+
  Clock

deswegen heißt ein Schieberegister 'Schieberegister'. Mit jedem Clock 
Impuls werden die Daten im SR um 1 Stelle geschoben und mit dem Inhalt 
des Dateneingangs aufgefüllt.

Aber: Das macht das SR nicht von alleine. Dein Programm muss die 
entsprechenden Pegel 0 oder 1 zum richtigen Zeitpunkt erzeugen.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das verstehe ich.
....

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Ewald Zimmermann schrieb:
>> Karl heinz Buchegger schrieb:
>>>
>>> In welcher Reihenfolge muss welcher Pin welchen Pegel einnehmen, damit
>>> am SR genau was passiert?
>>
>> Das versteh ich nun nicht.
>> Kannst du es nochmal leichter sagen
>
> Ein Schieberegister macht ja nichts von alleine.
>
> Erst das Zusammenspiel der 2 Eingänge Clock und Daten veranlasst etwas.
>
> Am Dateneingang legt man 0 oder 1 an, je nachdem was man haben will. Ein
> anschliessender Puls (0-1-0) am Clock Eingang veranlasst das SR, die am
> Daten Eingang anliegende 0 (oder 1) an die erste Stelle im
> Schieberegister zu verfrachten. Gleichzeitig werden im Schieberegister
> alle anderen Stellen um 1 Stelle weitergeschoben.
>
> Schau ins Tutorial: Da ist eine Beschreibung was ein Schieberegister
> prinzipiell macht.
>
>
>   Daten
>         +---+---+---+---+---+---+---+---+
>         |   |   |   |   |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> An Daten legst du jetzt eine 1 an
>
>   Daten: 1
>         +---+---+---+---+---+---+---+---+
>         |   |   |   |   |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> Danach kommt der Puls an den Clock Eingang: Einmal auf 1 und wieder
> zurück auf 0
>
>   Daten 1
>         +---+---+---+---+---+---+---+---+
>         | 1 |   |   |   |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> Jetzt legst du an Daten zb eine 0 an
>
>   Daten 0
>         +---+---+---+---+---+---+---+---+
>         | 1 |   |   |   |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> und wieder der Clock Impuls  0 - 1 - 0
>
>   Daten 0
>         +---+---+---+---+---+---+---+---+
>         | 0 | 1 |   |   |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> wieder eine 0 und ein Clock Impuls später
>
>   Daten 0
>         +---+---+---+---+---+---+---+---+
>         | 0 | 0 | 1 |   |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> sagen wir: Daten auf 1
>
>   Daten 1
>         +---+---+---+---+---+---+---+---+
>         | 0 | 0 | 1 |   |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> und ein Clock Impuls 0 - 1 - 0
>
>   Daten 1
>         +---+---+---+---+---+---+---+---+
>         | 1 | 0 | 0 | 1 |   |   |   |   |
>         +---+---+---+---+---+---+---+---+
>   Clock
>
> deswegen heißt ein Schieberegister 'Schieberegister'. Mit jedem Clock
> Impuls werden die Daten im SR um 1 Stelle geschoben und mit dem Inhalt
> des Dateneingangs aufgefüllt.
>
> Aber: Das macht das SR nicht von alleine. Dein Programm muss die
> entsprechenden Pegel 0 oder 1 zum richtigen Zeitpunkt erzeugen.

Jaa aber wie schreibe ich das im AVR Studio?
Ich könnte es in Lauflicht mit 8 LED´s als beispiel nehmen die noch an 
den Ports vom Attiny sind.


.include"C:\Program Files (x86)\Atmel\AVR 
Tools\AvrAssembler2\Appnotes\tn2313def.inc"

ldi r16, 1+2+4+8+16+32+64+128
out DDRD, r16

ldi r17, 1
out DDRB, r17
jonas:

ldi r16, 1
out Portd, r16



rcall pause

ldi r16, 4
out Portd, r16

rcall pause

ldi r16, 16
out Portd, r16

rcall pause

ldi r16, 64
out Portd, r16

rcall pause

ldi r16, 0
out Portd, r16
ldi r16, 1
out Portb, r16

rcall pause


ldi r16, 0
out Portb, r16


ldi r16, 32
out Portd, r16

rcall pause

ldi r16, 2
out Portd, r16

rcall pause

ldi r16, 8
out Portd, r16

rcall pause
ldi r16, 2
out Portd, r16

rcall pause
ldi r16, 32
out Portd, r16

rcall pause
ldi r16, 0
out Portd, r16
ldi r16, 1
out Portb, r16

rcall pause


ldi r16,0
out Portb, r16




ldi r16, 64
out Portd, r16

rcall pause
ldi r16, 16
out Portd, r16

rcall pause

ldi r16, 4
out Portd, r16

rcall pause

ldi r16,1
out Portd, r16


 rcall pause2



ldi r16, 1+4
out Portd,r16

rcall pause2

ldi r16, 1+4+16
out Portd,r16

rcall pause2

ldi r16, 1+4+16+64
out Portd,r16

rcall pause2

ldi r16,1+4+16+64
out Portd,r16

ldi r16,1
out Portb,r16

rcall pause2

ldi r16, 1+4+16+64+32
out Portd,r16

rcall pause2

ldi r16, 1+4+16+64+32+2
out Portd,r16

rcall pause2

ldi r16, 1+4+16+64+32+2+8
out Portd,r16






rcall pause3
rcall pause3

ldi r16, 1+2+4+8+16+32+64
out Portd, r16
ldi r16, 1
out Portb,r16

rcall pause2
rcall pause2

 ldi r16 ,0
 out Portb, r16

ldi r16 ,0
out portd,r16





rcall pause3
rcall pause3

ldi r16, 1+2+4+8+16+32+64
out Portd, r16
ldi r16, 1
out Portb,r16

rcall pause2
rcall pause2

 ldi r16 ,0
 out Portb, r16

ldi r16 ,0
out portd,r16





rcall pause3
rcall pause3

ldi r16, 1+2+4+8+16+32+64
out Portd, r16
ldi r16, 1
out Portb,r16

rcall pause2
rcall pause2

 ldi r16 ,0
 out Portb, r16

ldi r16 ,0
out portd,r16





rcall pause2
rcall pause2




ldi r16, 1+4+16+64+32+2+8
out Portd,r16

ldi r16,1
out Portb,r16

rcall pause2

ldi r16,1+4+16+64+32+2
out Portd,r16

rcall pause2

ldi r16, 1+4+16+64+32
out Portd,r16

rcall pause2

ldi r16, 1+4+16+64
out Portd,r16

rcall pause2

ldi r16, 0
out Portb,r16

rcall pause2

ldi r16, 1+4+16
out Portd,r16

rcall pause2

ldi r16,1+4
out Portd,r16

rcall pause2

ldi r16,1
out Portd,r16

rcall pause2

ldi r16,0
out Portd,r16


rcall pause2
rcall pause2



ldi r16, 1
out Portd, r16



rcall pause

ldi r16, 4
out Portd, r16

rcall pause

ldi r16, 16
out Portd, r16

rcall pause

ldi r16, 64
out Portd, r16

rcall pause

ldi r16, 0
out Portd, r16
ldi r16, 1
out Portb, r16

rcall pause


ldi r16, 0
out Portb, r16


ldi r16, 32
out Portd, r16

rcall pause

ldi r16, 2
out Portd, r16

rcall pause

ldi r16, 8
out Portd, r16

rcall pause
ldi r16, 2
out Portd, r16

rcall pause
ldi r16, 32
out Portd, r16

rcall pause
ldi r16, 0
out Portd, r16
ldi r16, 1
out Portb, r16

rcall pause


ldi r16,0
out Portb, r16




ldi r16, 64
out Portd, r16

rcall pause
ldi r16, 16
out Portd, r16

rcall pause

ldi r16, 4
out Portd, r16



rcall pause2


rjmp jonas

;pause1
pause:
ldi r17, 50
pause_1a:
ldi r16, 255
pause_1b:
dec r16
tst r16
brne pause_1b
dec r17
tst r17
brne pause_1a
ret


;pause2
pause3:
ldi r17, 75
pause_3a:
ldi r16, 255
pause_3b:
dec r16
tst r16
brne pause_3b
dec r17
tst r17
brne pause_3a
ret



;pause1
pause2:
ldi r17, 170
pause_2a:
ldi r16, 255
pause_2b:
dec r16
tst r16
brne pause_2b
dec r17
tst r17
brne pause_2a
ret

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

>
> Jaa aber wie schreibe ich das im AVR Studio?
> Ich könnte es in Lauflicht mit 8 LED´s als beispiel nehmen die noch an
> den Ports vom Attiny sind.

Nein.
Leg das Programm beiseite. Schreib ein neues. Dein neues Programm wird 
mit dem alten nichts gemeinsam haben.

An welche Pins hast du die Clock und die Datenleitung vom SR 
angeschlossen?


Diese Pins konfigurierst du auf Ausgang.

Dann legst du an den Pin an dem die Datenleitung hängt eine zb eine 1

Dann schaltest du den Pin für Clock auf 1 und wieder zurück auf 0.

Dann wird am SR mit dem Voltmeter kontrolliert, ob der 1. Ausgang 
tatsächlich eine 1 ist.

Du kannst auch in noch kleineren Schritten vorgehen und einfach in 
deinem ersten Programm eine 1 an den Datenpin ausgeben. Mit dem 
Voltmeter, direkt am 164 kontrollieren, ob die 1 da ist.
Dasselbe dann mit einer 0 am Datenpin. Wieder mi dem Voltmeter 
kontrollieren.

Dasselbe Spielchen dann mit der Clock-Leitung.

Ehe man sich in gröberes stürzt, kontrolliert man erst mal die 
Verdrahtung! Und das kann man durchaus mit einem Programm machen.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:

> Nein.
> Leg das Programm beiseite. Schreib ein neues. Dein neues Programm wird
> mit dem alten nichts gemeinsam haben.
>
> An welche Pins hast du die Clock und die Datenleitung vom SR
> angeschlossen?
>
 An Serial out 1 und 2

>
>
> Ehe man sich in gröberes stürzt, kontrolliert man erst mal die
> Verdrahtung! Und das kann man durchaus mit einem Programm machen.
Jaa also ich habe jetzt ein altes Programm da drauf aber es leuchtet und 
alle blinken langsam

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> Karl heinz Buchegger schrieb:
>
>> Nein.
>> Leg das Programm beiseite. Schreib ein neues. Dein neues Programm wird
>> mit dem alten nichts gemeinsam haben.
>>
>> An welche Pins hast du die Clock und die Datenleitung vom SR
>> angeschlossen?
>>
>  An Serial out 1 und 2

Ich kenn dein Prozessorboard nicht.
Ich weiß nicht was Serial Out 1 und 2 ist.

An welchen Prozessorpins!

Autor: Ewald Zimmermann (ewaldinho)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Serial out 1 2 sind am SR!


^Jaa also was mir nur wichtig ist sind ist das Programm
Womit soll ich es denn Programmiern?

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal eine andere Frage, wie hast du das Lauflicht mit 8 LEDs programmiert 
und zum laufen gebracht?

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
chris schrieb:
> Mal eine andere Frage, wie hast du das Lauflicht mit 8 LEDs programmiert
> und zum laufen gebracht?
Indem ich jeder LED einem Port zugeordnet hab und dann diese dann mit 
dem text

ldi r16, 1
out PortD, r16

aber man braucht einen Attiny 2313 und ein Lauflicht.:P

Schau einfach nach oben in mein Programm

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> Serial out 1 2 sind am SR!

Ich bin jetzt raus.

Bis hier her hab ich dir einen Bonus gegeben, weil du gesagt hast du 
wärst erst 13.

Aber du stellst dich an, dass es einem die Zehennägel einrollt.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie du meinst .
Aber Danke Für die infos!!!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> chris schrieb:
>> Mal eine andere Frage, wie hast du das Lauflicht mit 8 LEDs programmiert
>> und zum laufen gebracht?
> Indem ich jeder LED einem Port zugeordnet hab und dann diese dann mit
> dem text

Siehst du.
Anstelle der LED hast du jetzt die Verbindung zum Schieberegister.

Deine 8 Led waren an den 8 Pins vom Port D.

An welchen Pins von welchem Port hängen denn nun die 3 Leitungen die zum 
Schieberegister führen.

> Schau einfach nach oben in mein Programm

Nein.
Du willst Hilfe.
Es ist deine Pflicht uns nicht Ratespielchen aufzudrängen.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl heinz Buchegger respekt vor deiner Gedult. Ich verfolge das schon 
eine ganze weile. Ich hätte schon lange das Handtuch geworfen.

Autor: Ewald Zimmermann (ewaldinho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
>
> An welchen Pins von welchem Port hängen denn nun die 3 Leitungen die zum
> Schieberegister führen.
>
An Portd 1, PortD 2, PortD 4

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:

> Indem ich jeder LED einem Port zugeordnet hab und dann diese dann mit
> dem text
>
> ldi r16, 1
> out PortD, r16

Kann es sein, dass du das einfach nur abgetippt hast und in Wirklichkeit 
keinen blassen Schimmer davon hast, was da eigentich passiert?

In dem Fall empfehle ich dir dringends, zumindest das erste Kapitel im 
AVR-Tutorial zu studieren. Nicht überfliegen, nicht durchscrollen 
sondern lesen, über das Gelesene nachdenken.

http://www.mikrocontroller.net/articles/AVR-Tutori...

Deine ganze Ausdrucksweise, dein (mglw. unabsichtliches) Vorenthalten 
von Informationen, das nicht wissen und nicht verstehen wonach 
eigentlich die ganze Zeit gefragt wird, legt den Schluss nahe, dass du 
nicht weißt was da passiert und warum das so ist.

Diesen Zustand musst du ändern! Es hat keinen Sinn da jetzt großartig 
weiter zu machen, wenn dir die absoluten Grundlagen fehlen. Und das sind 
absolute Grundlagen! Ohne sie fällst du unweigerlich auf die Schnauze. 
Einen µC-Pin gezielt auf 0 oder 1 zu setzen ist das kleine Einmal-Eins 
in der µC-Programmiererei. Ohne das zu beherrschen hat es keinen Sinn, 
da auch nur irgendetwas Komplizierteres anzufangen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ewald Zimmermann schrieb:
> Karl heinz Buchegger schrieb:
>>
>> An welchen Pins von welchem Port hängen denn nun die 3 Leitungen die zum
>> Schieberegister führen.
>>
> An Portd 1, PortD 2, PortD 4

Mühsam ernährt sich das Eichhörnchen.
Verrätst du auch noch, welche der SR-Leitungen (Clock, Daten, Clear) an 
welchem Pin gelandet ist?
Aus dem vorher Gesagtem sollte dir eigentlich schon klar sein, dass das 
jetzt nicht mehr wie bei deinen bisherigen LED funktioniert. Du setzt 
irgendeinen Pin auf 1 (oder 0) und eine LED leuchtet, oder nicht.
Aber jetzt müssen die 3 Leitungen zum SR in der richtigen Reihenfolge 
bedient werden (anders ausgedrückt: wenn an diesen Leitungen noch LED 
wären; die müssen in der richtigen Reihenfolge ein/aus geschaltet 
werden), damit das SR das gewünschte macht.

Und dazu muss man natürlich wissen, welche Leitung an welchem Pin endet.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.