mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schieberegisterkaskade total verbuggt


Autor: Johannes H. (menschenskind)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

Ich will 64 LEDs mit 8 SRs steuern.
Diese hängen kaskadiert am Software-SPI des uC(siehe Tutorial dazu hier 
auf uC.net)

Jetzt würde ich gern mal meine Herangehensweise erläutern. Ich 
programmiere das dann mit Bascom.

ich wollte zunächst alle 64 leds blinken lassen

Start:

Laden von Variable Test mit Umfang von zwei Byte mit HEX:FF

Senden von Test über SPI-Bus (8x insgesamt, damit 64 rauskommen->mittels 
FOR-Schleife)

Reset von RCK
Setzen von RCK

Zuweisung von HEX:00 an Test

Wieder das Senden über SPI mittels FOR-Schleife

Reset von RCK
Setzen von RCK

Ende:

Und diese 2 Operationen werden natürlich kontinuierlich in einer 
While(1)-Schleife ausgeführt.
Zwischen den einzelnen SPI-Befehlen noch etwas Delay und man hat ein 
schönes Blinklicht, möchte man meinen.

Doch Nix gibts! Die Kiste macht nur Unfug.
Deswegen wollt ich von euch gern wissen, ob das prinzipielle Herangehen 
so korrekt ist.

Vielen Dank

Autor: Checker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da kommt keiner draus. Ist wohl die Beschriebung der BASCOM User...

>ich wollte zunächst alle 64 leds blinken lassen

>Start:

>Laden von Variable Test mit Umfang von zwei Byte mit HEX:FF

>Senden von Test über SPI-Bus (8x insgesamt, damit 64 rauskommen->mittels
>FOR-Schleife)

Wen ich richtig zähle.. nach deiner Beschreibung schreibst du 128 bits 
raus..
Test: Umfang von zwei Byte -> 16 bit
8 mal senden von Test = 8 * 16 = 128

Befass dich doch mal mit den Grundlagen:
bit
Byte
Integer(16 bit)
Long(32 bit)

Autor: Johannes H. (menschenskind)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja bei einem Byte 8x und bei 2en 4x
Ich hatte beim Schreiben des Threads noch was geändert und dann 
vergessen das anzupassen.

Aber das ist doch Krümelkackerei, es geht mir in erste Linie darum 
festzustellen, wo genau der Fehler liegt.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes Hofmann wrote:
> Doch Nix gibts! Die Kiste macht nur Unfug.

Und das heißt?

Zeig dochmal den Schaltplan und das Programm.

Das 8 Byte Schieben und RCK takten würde ich als Unterprogramm machen.


Peter

Autor: Johannes H. (menschenskind)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier sind sie schon:

die 2 im Spiout-Befehl gibt an, wieviele Bytes er senden soll
$regfile = "ATtiny2313.dat"
$crystal = 8000000                                          'Takt: 8 MHz
$baud = 9600


Config Spi = Soft , _
       Din = Pind.7 , _
       Dout = Portb.5 , _
       Ss = None , _
       Clock = Portd.2

       Spiinit


Ddrb = &B10111111

Ddrd = &B01100100
Portb = &B00011111


Dim Array_index As Byte

Dim Test1 As Word
Test1 = &HFF

Dim Test2 As Word
Test2 = &H00


Rck Alias Portd.5


Do

For Array_index = 1 To 8
   Spiout Test1 , 2
Next
      Reset Rck
      Set Rck
      Reset Rck

Waitms 200

For Array_index = 1 To 8
   Spiout Test2 , 2
Next

      Reset Rck
      Set Rck
      Reset Rck

Waitms 200

Loop

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.