Hallo!
Ich arbeite erst seit kurzem mit µCs und stehe nun vor einem kleinen
Problem.
Vor mir habe ich eine fertige Firmware für unsere intelligenten
Vorschaltgeräte. Dabei ist im D register auf RD0/RD1/RD2/RD3 eine
7-Segment Anzeige vorgesehen.
Allerdings sollen an diese Pins nun ein Drehkodierschalter angebracht
werden und ich sollte das in der Firmware integrieren. Allerdings bin
ich mir nicht ganz sicher was ich wie ändern soll, da ich die Schritte
des alten Programmierers nicht wirklich nachvollziehen kann.
in lowinit.c:
1 | /* PORT D */
|
2 | /* clear LATD register */
|
3 | LATD = CLEAR_LATCH_REGISTER;
|
4 |
|
5 | /* RD0; 7-segment display A */
|
6 | DISPLAY_A_ON; /* switch A input of 7-segment display on */
|
7 | TRISD &= 0xFE; /* set port to output */
|
8 |
|
9 | /* RD1; 7-segment display B */
|
10 | DISPLAY_B_OFF; /* switch B input of 7-segment display off */
|
11 | TRISD &= 0xFD; /* set port to output */
|
12 |
|
13 | /* RD2; 7-segment display C */
|
14 | DISPLAY_C_OFF; /* switch C input of 7-segment display off */
|
15 | TRISD &= 0xFB; /* set port to output */
|
16 |
|
17 | /* RD3; 7-segment display D */
|
18 | DISPLAY_D_ON; /* switch D input of 7-segment display on */
|
19 | TRISD &= 0xF7; /* set port to output */
|
die defines aus der global.h:
1 | #define DISPLAY_A_ON LATD |= 0x01
|
2 | #define DISPLAY_A_OFF LATD &= 0xFE
|
3 |
|
4 | #define DISPLAY_B_ON LATD |= 0x02
|
5 | #define DISPLAY_B_OFF LATD &= 0xFD
|
6 |
|
7 | #define DISPLAY_C_ON LATD |= 0x04
|
8 | #define DISPLAY_C_OFF LATD &= 0xFB
|
9 |
|
10 | #define DISPLAY_D_ON LATD |= 0x08
|
11 | #define DISPLAY_D_OFF LATD &= 0xF7
|
Der Drehkodierschalter gibt dem Gerät eine eindeutige ID (1 - 16 bzw hex
0 - F bzw bin 0000 - 1111) mit dem dann schlussendlich 16 Geräte im
Bus-System betrieben werden können.
Durch bisschen recherchieren habe ich eine vage vorstellung was TRIS
macht und denke um RD0-3 als Eingänge zu definieren reicht:
1 | /* Set RD 0-3 to input ( 0 = output | 1 = input ) */
|
2 | TRISD = 0x0F; // 0000 1111
|
Aber der rest ist mir noch relativ schleierhaft.
Vlt kann mir jemand kurz einen Input in einfachen Worten geben, der
meine Arbeit erleichtert.
Vielen Dank im Vorhinein!
MFG
-Ben