Schalter Problem, extrem komisch

OP #3280224
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.