Danke, das mit dem Tooglen ist nun klar.
Ich hab noch ein kelines Problem wo ich nicht weiß wie ich das lösen soll:
Mittels Tabelle weise ich bestimmten Eingänge, bestimmte Ausgänge zu:
Die dann im main abgerufen wird:Code:#define LED0 (1<<PC0) #define LED1 (1<<PC1) #define LED2 (1<<PC2) #define LED3 (1<<PC3) #define LED4 (1<<PC4) #define LED5 (1<<PC5) #define NR_KONFIGS 9 #define NR_KEYS 6 uint8_t Pattern[NR_KONFIGS][NR_KEYS] PROGMEM = { {LED0,LED1,LED2,LED3,LED4,LED5}, // Konfiguration 0 {LED0,LED2,LED4,LED1,LED3,LED5}, // Konfiguration 1 {LED2,LED0,LED4,LED1,LED3,LED5}, // Konfiguration 2 {LED0,LED2,LED4,LED1,LED3,LED5}, // Konfiguration 3 {LED0,LED2,LED4,LED1,LED3,LED5}, // Konfiguration 4 {LED0,LED2,LED4,LED1,LED3,LED5}, // Konfiguration 5 {LED0,LED2,LED4,LED1,LED3,LED5}, // Konfiguration 6 {LED0,LED2,LED4,LED1,LED3,LED5}, // Konfiguration 7 {LED0,LED2,LED4,LED1,LED3,LED5}, // Konfiguration 8 };
Jetzt soll das Togglen des PortC.0 da inkludiert werden falls eine Taste gedrückt wird. Jedoch nur wenn eine Variable auf 1 gesetzt ist.Code:while(1) { Summe = 0; if(!(KEY_PIN & 0x01)) // Wenn Taste PortB.0 auf HIGH Summe |= pgm_read_byte(&Pattern[nKeyPress][0]); if(!(KEY_PIN & 0x02)) // Wenn Taste PortB.1 auf HIGH Summe |= pgm_read_byte(&Pattern[nKeyPress][1]); if(!(KEY_PIN & 0x04)) // Wenn Taste PortB.2 auf HIGH Summe |= pgm_read_byte(&Pattern[nKeyPress][2]); if(!(KEY_PIN & 0x08)) // Wenn Taste PortB.3 auf HIGH Summe |= pgm_read_byte(&Pattern[nKeyPress][3]); if(!(KEY_PIN & 0x10)) // Wenn Taste PortB.4 auf HIGH Summe |= pgm_read_byte(&Pattern[nKeyPress][4]); if(!(KEY_PIN & 0x20)) // Wenn Taste PortB.5 auf HIGH Summe |= pgm_read_byte(&Pattern[nKeyPress][5]); OUT_PORT = Summe; // sonst nur definierte Konfiguration ausgeben
Ich dachte mir das zuerst so:
Der Toggleeffekt funktioniert zwar, geht jedoch natürlich sofort los, auch wenn keine Taste gedrückt ist.Code:if(Dauerfeuer= 1) // Wenn Dauerfeuer aktiv { OUT_PORT = Summe | repeatMask; // Definierte Konfiguration mit Dauerfeuer an Ausgang PortC.0 ausgeben } else { OUT_PORT = Summe // sonst nur definierte Konfiguration ausgeben }
Wie kann ich das am ellegantesten lösen?
Lesezeichen