Schieberegisterkaskade total verbuggt

OP #1130908
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
Gast #1130928
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)
OP #1130952
Lesenswert?
• ▲
▼
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren