Hallo zusammen
Ich möchte in einem Interrupt einen ganzen Port, an dem Taster sind,
auslesen und diesen Wert in einen Buffer schreiben. Ich benutze
CodeBlocks und einen Attiny48.
Die Taster werden per Software entprellt. Der Grundzustand der Taster
ist 0xFC(DEFAULT_VALUE_PORTD)
Hier ist der Code:
1 | ISR(TIMER0_COMPA_vect)
|
2 | {
|
3 | // stop the counter
|
4 | TCCR0A &= ((0<<CS02) & (0<<CS01) & (0<<CS00));
|
5 |
|
6 | uint8_t tmp_portd = 0;
|
7 | tmp_portd = DDRD;
|
8 | tmp_portd = ((tmp_portd ^ DEFAULT_VALUE_PORTD) & 0x93);
|
9 | // Write the active switch into the buffer
|
10 | bufferIn(tmp_portd);
|
11 | // clear interrupt flag
|
12 | PCIFR = 0x00;
|
13 |
|
14 | // enable interrupt at PORTD
|
15 | PCMSK2 |= 0xFF;
|
16 | }
|
Ich möchte herausfinden, welcher Taster geändert. Wenn ich jedoch
debugge, wird immer nur der selbe Wert(220) in den Buffer geschrieben.
Wie muss ich es ändern, dass nur das aktive Bit in den Buffer
geschrieben wird?
MfG und danke im Voraus