Schieberegisterkaskade total verbuggt

OP #1130908
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
Gast
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)
OP
hier sind sie schon:

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

5

6
Config Spi = Soft , _
7
       Din = Pind.7 , _
8
       Dout = Portb.5 , _
9
       Ss = None , _
10
       Clock = Portd.2
11

12
       Spiinit
13

14

15
Ddrb = &B10111111
16

17
Ddrd = &B01100100
18
Portb = &B00011111
19

20

21
Dim Array_index As Byte
22

23
Dim Test1 As Word
24
Test1 = &HFF
25

26
Dim Test2 As Word
27
Test2 = &H00
28

29

30
Rck Alias Portd.5
31

32

33
Do
34

35
For Array_index = 1 To 8
36
   Spiout Test1 , 2
37
Next
38
      Reset Rck
39
      Set Rck
40
      Reset Rck
41

42
Waitms 200
43

44
For Array_index = 1 To 8
45
   Spiout Test2 , 2
46
Next
47

48
      Reset Rck
49
      Set Rck
50
      Reset Rck
51

52
Waitms 200
53

54
Loop
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.