@@ -55,7 +55,7 @@ void pinMode( uint32_t ulPin, uint32_t ulMode )
5555 | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos )
5656 | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
5757 break ;
58-
58+
5959 case INPUT_PULLUP_SENSE :
6060 // Set pin to input mode with pull-up resistor enabled and sense when Low
6161 port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos )
@@ -75,23 +75,104 @@ void pinMode( uint32_t ulPin, uint32_t ulMode )
7575 break ;
7676
7777 case INPUT_PULLDOWN_SENSE :
78- // Set pin to input mode with pull-down resistor enabled
78+ // Set pin to input mode with pull-down resistor enabled and sense when High
7979 port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos )
8080 | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos )
8181 | ((uint32_t )GPIO_PIN_CNF_PULL_Pulldown << GPIO_PIN_CNF_PULL_Pos )
8282 | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos )
8383 | ((uint32_t )GPIO_PIN_CNF_SENSE_High << GPIO_PIN_CNF_SENSE_Pos );
8484 break ;
8585
86- case OUTPUT :
87- // Set pin to output mode
86+ case INPUT_SENSE_HIGH :
87+ // Set pin to input mode and sense when High
88+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos )
89+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos )
90+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
91+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos )
92+ | ((uint32_t )GPIO_PIN_CNF_SENSE_High << GPIO_PIN_CNF_SENSE_Pos );
93+ break ;
94+
95+ case INPUT_SENSE_LOW :
96+ // Set pin to input mode and sense when Low
97+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos )
98+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos )
99+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
100+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos )
101+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Low << GPIO_PIN_CNF_SENSE_Pos );
102+ break ;
103+
104+ case OUTPUT_S0S1 :
105+ // Set pin to output mode, sink to standard and source to standard
88106 port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
89107 | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
90108 | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
91109 | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos )
92110 | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
93111 break ;
94112
113+ case OUTPUT_H0S1 :
114+ // Set pin to output mode, sink to high drive and source to standard
115+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
116+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
117+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
118+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_H0S1 << GPIO_PIN_CNF_DRIVE_Pos )
119+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
120+ break ;
121+
122+ case OUTPUT_S0H1 :
123+ // Set pin to output mode, sink to standard and source to high drive
124+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
125+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
126+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
127+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0H1 << GPIO_PIN_CNF_DRIVE_Pos )
128+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
129+ break ;
130+
131+ case OUTPUT_H0H1 :
132+ // Set pin to output mode, sink to high drive and source to high drive
133+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
134+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
135+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
136+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_H0H1 << GPIO_PIN_CNF_DRIVE_Pos )
137+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
138+ break ;
139+
140+ case OUTPUT_D0S1 :
141+ // Set pin to output mode, sink to disconnect and source to standard
142+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
143+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
144+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
145+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_D0S1 << GPIO_PIN_CNF_DRIVE_Pos )
146+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
147+ break ;
148+
149+ case OUTPUT_D0H1 :
150+ // Set pin to output mode, sink to disconnect and source to high drive
151+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
152+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
153+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
154+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_D0H1 << GPIO_PIN_CNF_DRIVE_Pos )
155+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
156+ break ;
157+
158+ case OUTPUT_S0D1 :
159+ // Set pin to output mode, sink to standard and source to disconnect
160+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
161+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
162+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
163+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos )
164+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
165+ break ;
166+
167+ case OUTPUT_H0D1 :
168+ // Set pin to output mode, sink to high drive and source to disconnect
169+ port -> PIN_CNF [ulPin ] = ((uint32_t )GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos )
170+ | ((uint32_t )GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos )
171+ | ((uint32_t )GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos )
172+ | ((uint32_t )GPIO_PIN_CNF_DRIVE_H0D1 << GPIO_PIN_CNF_DRIVE_Pos )
173+ | ((uint32_t )GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos );
174+ break ;
175+
95176 default :
96177 // do nothing
97178 break ;
0 commit comments