mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 74HC165 auslesen


Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin erst vor kurzem auf die Idee gekommen einen PIC zu programmieren 
(18F452). Womit ich noch Probleme habe ist das Setzen von Pins auf High 
oder Low. Der PIC besitzt glaub ich 5 Ports (A-E) Ich würde jetzt gerne 
Software SPI implementieren und eine kaskadierte Reihe von 74HC165 
Registern auslesen. Laut Datenblatt muss der Pin 1 des Registers zuerst 
auf High und anschließend auf Low gesetzt werden, damit ich die Eingänge 
an Pin 9 tacktweise auslesen kann.

Ich hab gute Kenntnisse in C und würde auch gerne den PIC in C 
programmieren. Die Frage ist nun...kann man einen einzelnen Pin 
ansteuern (pseudocode: pind2 = 1) oder muss ich immer einen Hex Wert an 
PortD "ausgeben" z.B. PORTD = 0x08 damit der einzelne Pin High oder Low 
geschaltet wird.
TRISD ist dafür dafür da die Pins als Ausgang bzw. Eingang zu 
konfigurieren, oder hab ich da etwas falsch verstanden?

Wenn mir jemand erklären kann wie ich nun ein Schieberegister auslesen 
kann wäre ich schon einen Schritt weiter. Ich will nicht, dass mir einer 
das Denken abnimmt, aber ein paar Tipps würden die Sache schon einfacher 
machen.

Software SPI habe ich Application Maestro konfiguriert, da ich SPI gerne 
über Port D laufen lassen möchte. Die Konfiguration ist wie folgt:

#define SW_CS_PIN PORTDbits.RD2      // Chip Select
#define TRIS_SW_CS_PIN TRISBbits.TRISD2
#define SW_DIN_PIN PORTDbits.RD1     // Data in
#define TRIS_SW_DIN_PIN TRISDbits.TRISD1
#define SW_DOUT_PIN PORTDbits.RD0    // Data out
#define TRIS_SW_DOUT_PIN TRISDbits.TRISD0
#define SW_SCK_PIN PORTDbits.RD3     // Clock
#define TRIS_SW_SCK_PIN TRISDbits.TRISD3



Danke schonmal
Christoph

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Seite hab ich schon durch. Die Frage, die jetzt bleibt ist wie kann 
ich unter C den Pegel einzelner Pins steuern?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph wrote:
> Die Seite hab ich schon durch. Die Frage, die jetzt bleibt ist wie kann
> ich unter C den Pegel einzelner Pins steuern?
Pin_dir = 1; // Pin = Ausgang
Pin = 1; // Pin = 5V
...
Pin = 0; // Pin = 0V
...
Pin_dir = 0; // Pin = Eingang
if( Pin ){ // wenn Pin = 5V
...
}


Peter

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also sobald ich RD2 = 1; eingebe kommt nur die Meldung

Error [1105] symbol 'RD2' has not been defined

Fehlt da noch ein include damit das klappt?

Autor: Oli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutze

PORTDbits.RD2 = 1 oder
PORTDBits.RD2 = 0

um den Pin zu setzen oder löschen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.