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
Die Seite hab ich schon durch. Die Frage, die jetzt bleibt ist wie kann ich unter C den Pegel einzelner Pins steuern?
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.