ATMega 128 SPI Probleme

Gast #3412673
Lesenswert?
• ▲
▼
Hallo liebe Forengemeinde,
Ich arbeite gerade an einer Schaltung die einen ATMega128 und ein 74595 
Schieberegister beinhaltet. Irgendwie funktioniert das Ansprechen des 
Schieberegisters ueber die SPI Schnittstelle nicht. Selbst bei eine ganz 
einfachen ASM Programm tut sich nix. Ich habe schon gelesen, dass die 
Belegung vom ISP beim 128er abweicht. Das duerfte aber kein Problem sein 
da der Controller mittels JTAG programmiert wird. Ich komme echt nicht 
weiter. Waere echt froh wenn jemand den Fehler sehen wuerde.

Mfg Bastler
1
.include "m128def.inc"
2
.equ FCPU = 16000000
3
.org 0x0000
4
rjmp start
5

6

7
start:    ldi r16,LOW(RAMEND)
8
      out SPL,r16
9
      ldi r16,HIGH(RAMEND)
10
      out SPH,r16
11

12
      ldi r16,0xFF
13
      out DDRB,r16
14

15
      ldi r16,(1<<SPE)|(1<<MSTR)|(SPR0)|(1<<SPR1)
16
      out SPCR,r16
17

18
      clr r16
19
      out SPSR,r16
20

21
      ldi r16,0xFF
22
      rcall SPIPutByte
23

24
loop:    rjmp loop
25

26
SPIPutByte:  cbi PORTB,0
27
      out SPDR,r16
28
      sbis SPSR,SPIF
29
      rjmp PC-1
30
      in r16,SPDR
31
      ret
#3412741
Lesenswert?
• ▲
▼
Moment.
Da wird ein 595 Schieberegister angesteuert.

Da muss ein Puls auf den RCLK Eingang vom 595 hinten nach kommen, sonst 
tut sich an den Ausgängen vom 595 nichts. Bis jetzt ist das Byte 0xFF 
lediglich in das Schieberegister vom 595 eingetaktet worden. Aber es ist 
noch nicht ins Latch übernommen worden. Der Puls an RCLK macht genau 
das.
Gast #3412779
Lesenswert?
• ▲
▼
Ja ich weiss. Hab den source nur schnell vereinfacht.
1
.include "m128def.inc"
2
.equ FCPU = 16000000
3
.org 0x0000
4
rjmp start
5

6

7
start:    ldi r16,LOW(RAMEND)
8
      out SPL,r16
9
      ldi r16,HIGH(RAMEND)
10
      out SPH,r16
11

12
      ldi r16,0xFF
13
      out DDRB,r16
14

15
      ldi r16,(1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1)
16
      out SPCR,r16
17

18
      clr r16
19
      out SPSR,r16
20

21
      ldi r16,0xFF
22
      rcall SPIPutByte
23

24
loop:    rjmp loop
25

26
SPIPutByte:  cbi PORTB,0
27
      out SPDR,r16
28
      sbis SPSR,SPIF
29
      rjmp PC-1
30
      in r16,SPDR
31
      sbi PORTB,0
32
      ret
Gast #3412790
Lesenswert?
• ▲
▼
Da Sie meine Frage nicht beantworten, nehme ich an, dass SPI läuft, und 
dass das an 595 Angeschlossene, was auch immer, nicht das Gewünschte 
bringt.
Also stellt sich die Frage nach dem Schaltplan.
Gast #3412908
Lesenswert?
• ▲
▼
Hi

>Ich weiß bei solchen Dingen immer nie, ob da jetzt der PC von der
>aktuellen Anweisung benutzt wird, oder ob das schon der PC von der
>nächsten Anwweisung ist. :-)

So geht es mir auch. Das erinnert mich immer an das erste µC-System mit 
dem ich zu tun hatte. Von Hand assemblieren und dann den Hex-Code 
eingeben. war in den Achtzigern.

MfG Spess

Antwort schreiben

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.

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.