Hallo Begeisterte Ucfreunde,
mein Problem ist relativ schnell erklärt.
Ich möchte den Wert eines BCD-Schalters abfragen und auswerten.
Es will nicht, sag ich jetzt mal.
Es wird nie eine Veränderung des Schalters registiert.
1 | void main(void) {
|
2 |
|
3 | MCU_init(); /* call Device Initialization */
|
4 |
|
5 |
|
6 | for(;;) {
|
7 | /* __RESET_WATCHDOG(); by default, COP is disabled with device init. When enabling, also reset the watchdog. */
|
8 |
|
9 | __RESET_WATCHDOG();
|
10 |
|
11 | Tastenabfrage();
|
12 | if(status_bcd == 1) {
|
13 |
|
14 | SPI_CG_SET(27);
|
15 | PTAD_PTAD0 = 1; // LED an
|
16 |
|
17 | status_bcd = 0;
|
18 | }
|
19 | else{
|
20 | PTAD_PTAD0 = 0; //LED aus
|
21 |
|
22 | //Der BCD-Schalter wurde nicht verändert
|
23 | }
|
24 |
|
25 | if(status_dil == 1) {
|
26 |
|
27 | status_dil = 0;
|
28 | }
|
29 | else{
|
30 | //Der DIL-Schalter wurde nicht verändert
|
31 | }
|
32 | }
|
33 | }
|
1 | // Funktionen -----------------------------------------------------------------------------------------
|
2 | void Tastenabfrage() {
|
3 |
|
4 | static uint8 ct0, ct1, ct2, ct3; // Variablen für Entprellung
|
5 | uint8 i,j; // Variablen für Entprellung
|
6 |
|
7 |
|
8 | //PEDA Tastenentprellung mechanische Schalter sollen anfällig sein.
|
9 | i = key_state_bcd ^ ~KEY_PIN_bcd; // key changed ?
|
10 | ct0 = ~( ct0 & i ); // reset or count ct0
|
11 | ct1 = ct0 ^ (ct1 & i); // reset or count ct1
|
12 | i &= ct0 & ct1; // count until roll over ?
|
13 | key_state_bcd ^= i; // then toggle debounced state
|
14 | key_press_bcd |= key_state_bcd & i;
|
15 |
|
16 | //Jetzt kann der Status des BCD Schalters abgefragt werden
|
17 | status_bcd = BCD_Verarbeiten(key_state_bcd);
|
18 | }
|
1 | // Funktionen -------------------------------------------------------------------------------
|
2 | bool BCD_Verarbeiten(int i) {
|
3 | if(lastresult_bcd == i) {
|
4 | return false;
|
5 | }
|
6 | else{
|
7 | lastresult_bcd = i;
|
8 | return true;
|
9 | } //Wert von BCD-Schalter weiterverarbeiten => entsprechende Taktrate setzen
|
10 | }
|
Habt ihr vielleicht eine Idee?
Gruß afo