Forum: Mikrocontroller und Digitale Elektronik 74HC165 auslesen


von Christoph (Gast)


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

von Falk B. (falk)


Lesenswert?


von Christoph (Gast)


Lesenswert?

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

von Peter D. (peda)


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?
1
Pin_dir = 1; // Pin = Ausgang
2
Pin = 1; // Pin = 5V
3
...
4
Pin = 0; // Pin = 0V
5
...
6
Pin_dir = 0; // Pin = Eingang
7
if( Pin ){ // wenn Pin = 5V
8
...
9
}


Peter

von Christoph (Gast)


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?

von Oli (Gast)


Lesenswert?

Benutze

PORTDbits.RD2 = 1 oder
PORTDBits.RD2 = 0

um den Pin zu setzen oder löschen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.