- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 11

Thema: 74HC595 Porterweiterung mit Bascom. Bitte um Hilfe.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    361

    74HC595 Porterweiterung mit Bascom. Bitte um Hilfe.

    Für ein Projekt beötige ich um die 70 Ausgänge und komm deshalb nicht um einige 74HC595 Schieberegister herum. Hab nach Bascom Bespielen gegoogelt aber leider nur schwer verständliche Dinge gefunden. Habe keinerlei Erfahrung mit Schieberegistern bisher. Hat vielleicht jemand von euch einen Minimalcode für mich als Beispiel um mir das ganze zu verdeutlichen. So einfach gehalten wie es geht bitte
    ----------------------------------------------------------------------------------------
    Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Im RN-Wissen ist unter "Portexpander am AVR" folgender Code dargestellt:
    Code:
    ' SERiell nach PArallel (serpa) mit Hardware-Unterstuetzung
    ' Beispiel mit 2 Datenbytes
    
    ' SPI Bus (Hardware) als Master konfiguiren
    Config SPI = Hard , Master = Yes
    
    ' SPI Bus initialisieren
    ' setzt das DDR Register entsprechend
    Spiinit
    
    ' Bytes für die Daten
    Dim Serpa(2) As Byte
    Serpa(1) = &B10101010
    Serpa(2) = &B00000000
    
    ' Die Bytes auf den SPI Bus schieben
    Spiout Serpa(1) , 2
    Dieser Code verwendet die Hardware-SPI, ein Arbeiten mit dem 595 als Portexpander ist aber auch mittels Software-SPI möglich. Dazu siehst du am Besten in der BASCOM-Hilfe unter "Serout" nach.

    Steht die Hardware schon?
    Grüße
    Thomas

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    361
    Danke für die Hilfe. Die Hardware steht noch nicht, da bin ich flexibel. Ich kann mit dem Code leider nur wenig anfangen. Ich hatte gehofft jemand kann mir anhand einiger Zeilen demonstrieren was ich tun muß, um z.B. den Ausgang Q0 von 0 auf 1 zu schalten. Am besten so einfach wie möglich und "komplett zu Fuß" damit ich es verstehe. Zum Test würde ich da mal LED's ansteuern. da ich nichts zeitkritisches mache reicht für mich auch eine Lösung per Software SPI.
    ----------------------------------------------------------------------------------------
    Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Im Prinzip schiebst du nur einen Bitstrom seriell in das Schieberegister hinein. Wenn du einen 595 hast, dann hast du auch 8 Bits die du reinschieben musst. Erst wenn alle 8 Bits drinnen sind, wird mit einem Strobe an RCK dem 595 gesagt: "Du hast alles bekommen, jetzt schalte!" Dann werden die Ausgänge so geschaltet, wie das Bitmuster aussah.

    Willst du also Q0 auf High und den Rest auf Low schalten, dann schiebst du 00000001 rein.
    Willst du Q0 und Q5 auf High schalten und den Rest auf Low, dann schiebst du 00010001 rein. Das wäre übrigens auch die Dezimalzahl 17.

    Als Grundlage für eigene Versuche solltest du die Zahlensysteme Binär, Dezimal und Hexadezimal verstehen und anwenden (also einen beliebigen Wert in ein anderes Zahlensystem konvertieren) können. Wenn diese Erfahrungen fehlen, würde ich erstmal dort ansetzen.
    Grüße
    Thomas

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    361
    Danke das hilft mir schonmal weiter das ganze zu verstehen. Bei einer seriellen Übertragung brauch ich auch ne Baudrate, oder? Bei "SER" schiebe ich das Bitmuster rein, mit "RCK" entscheide ich wann das ganze an den Ausgängen ausgegeben wird. Was hat es mit dem "SCK" aufsich? Da brauch ich ne Clock? Wie erzeuge ich die? Welche Frequenz muß diese haben? Wenn ich mehrere 595er kaskadiere wird dann einfach die Bitfolge länger, richtig?
    ----------------------------------------------------------------------------------------
    Je tiefer die Sonne der Kunst sinkt, umso grössere Schatten werfen Zwerge!!

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Lt. Wikipedia.org:
    Baud [bɔːd], Bd ist die Einheit für die Symbolrate (Schrittgeschwindigkeit) in der Nachrichtentechnik und Fernmeldetechnik. 1 Baud ist die Geschwindigkeit, wenn 1 Symbol pro Sekunde übertragen wird. Jedes Symbol entspricht einer definierten, messbaren Signaländerung im physischen Übertragungsmedium. Die Baudrate einer Datenübertragung muss auf Sende- und Empfangsseite gleich sein.
    Du bestimmst einfach eine Frequenz (nach oben allerdings begrenzt). Diese ist automatisch und ohne jegliches Abgleichen bei allen Schieberegistern die gleiche, da du sie ja alle über diesselbe Clockleitung taktest. Die Frequenz kannst du bei der Hard-SPI durch veschiedene Prescaler aus dem Systemtakt herunterteilen:
    Code:
    The SPI is clocked by the system clock which is divided by a the SPI divider. If you select a division factor of 4, and the system clock is 4 MHz, then the SPI clock will be 1 MHz.
    The possible values are :
    CLK2, CLK4, CLK8, CLK16, CLK32, CLK64 and CLK128
    Bei der Soft-SPI kannst du ebenfalls frei über die Frequenz verfügen, in dem du als Befehlsattribut eine Baudrate nennst.
    Du könntest übrigens auch auf einem Steckbrett ein Schieberegister rein nur mit Taster bedienen, sozusagen in Zeitlupe. Es gibt keine Mindestfrequenz, du kannst also in Ruhe überlegen, den Eingang auf einen Pegel legen und das Bit mit einem Tastendruck reinschieben.

    Bei "SER" schiebe ich das Bitmuster rein, mit "RCK" entscheide ich wann das ganze an den Ausgängen ausgegeben wird.
    Richtig. Den Strobe auf RCK macht man üblicherweise direkt nach dem Schieben. Es gibt auch Register ohne diese "Latch"-Funktion: Bei diesen flattern die Ausgänge während einem Schiebevorgang, da ja die Bits seriell durchgeschoben werden (total unpraktisch). Du schiebst quasi im Hintergrund und erst auf dein Kommando schalten alle Ausgänge um. Übrigens: Der Eingang G am 595 kann alle Ausgänge hochohmig schalten. Falls du LEDs mit den Schieberegistern bedienen willst, kannst du mit einem PWM-Takt an G diese dimmen - unabhängig von der Schieberei.

    Wenn ich mehrere 595er kaskadiere wird dann einfach die Bitfolge länger, richtig?
    Genau. Zu bedenken ist aber, dass das als erstes hinausgeschobene Bit am Ende der Schiebeoperation am letzten Schieberegister die letzte Stelle ist.
    Grüße
    Thomas

Ähnliche Themen

  1. Porterweiterung am Mega32 - Bascom Programm
    Von Duesentrieb im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 31.10.2010, 18:41
  2. Bitte um Hilfe STK500 Bascom
    Von tueftlerq7 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 20.07.2010, 16:15
  3. Bascom Schieberegister 74HC595
    Von kollimann im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 26.05.2009, 16:32
  4. Hardware Interrupts - Bascom ich bitte um Hilfe!
    Von tms2002 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 19
    Letzter Beitrag: 13.05.2005, 22:46
  5. Hilfe: Porterweiterung mit 5 74HC573 macht was es will :-(
    Von Hei.Mor im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 23.08.2004, 23:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress