Schieberegister

Gast #2654941
Lesenswert?

Hi,
ich habe folgendes Ic als Schieberegister :
http://www.conrad.de/ce/de/product/155762/LOGIK-IC-M74HC595B1R-STM

Damit wollte ich das Programm aus dem AVR-Tutorial zum Thema 
Scheiberegister ausprobieren:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Ansteuerung_per_SPI-Modul
Ich hab das Programm in dem µC geschrieben und die Schaltung so 
aufgebaut.
Trotzdem sind, unabhängig vom einprogrammierten Wert, alle Outputpins 
des Schiebregisters auf Low geschaltet. Ich hab schon bestimmt hundert 
mal die Schaltung kontrolliert und kann mir nicht erklären warum es 
nicht funktioniert.
Gast #2655456
Lesenswert?

Hallo,
1
AVR-Assembler-Code
2
SchiebeOut:
3
    sbis  SPSR, SPIF            ; prüfe ob eine alte Übertragung beendet ist
4
    rjmp  SchiebeOut
5
    sbi   SCHIEBE_PORT, RCK
6
    cbi   SCHIEBE_PORT, RCK
7

8
>   sbi   SCHIEBE_PORT, RCK
9

10

11
    ret

Füge mal zum Test eine steigende Flanke hinzu.
Gast #2655716
Lesenswert?

Alsoooo:
Ich habe den Fehler gefunden, er liegt nicht im Programm, das 
funktioniert auch ohne die Änderungen. Der Fehler liegt in der 
Beschaltung, die Pins am AVR sind falsch (Angegeben ist zb Pin17 als 
SCK; SCK ist aber Pin19).
http://www.mikrocontroller.net/wikifiles/a/a6/Mega8-595-SPI.png

Man sollte das wohl im Artikel ändern, besser wäre wohl folgende 
Beschaltung :
http://www.rn-wissen.de/index.php/Portexpander_am_AVR#Schaltplan
Gast #2655789
Lesenswert?

Assault schrieb:
> er liegt nicht im Programm, das
> funktioniert auch ohne die Änderungen.

Sicher ?

Schau mal ins Datenblatt Seite 2

http://www.reichelt.de/index.html?;ACTION=7;LA=3;OPEN=0;INDEX=0;FILENAME=A240%252F74HC595%2523STM.pdf;SID=13T4mJP38AAAIAADjDbEo7869f99281d344f4705b035534e8139f

Hier steht...
RCK steigende Flanke: S.R. DATA IS STORED INTO STORAGE REGISTER
RCK fallende Flanke:  STORAGE REGISTER STATE IS NOT CHANGED

Also muss erst   "cbi   SCHIEBE_PORT, RCK" und dann "sbi   SCHIEBE_PORT, 
RCK" ins Programm.

Da das Programm nur einen konstanten Wert übermittelt, klappt das 
trotzdem, aber erst nach dem 2. flashen des M8.
Resette mal den hc595 und dann den Mega8 und schau was am Ausgang des 
595 ankommt.

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