Hallo, Hab beim Tastenentprellen folgendes Problem beim Compilieren: ISR( TIMER0_OVF_vect ) // every 10ms { static uint8_t ct0, ct1, rpt; uint8_t i; TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5); // preload for 10ms i = key_state ^ ~BUTTON_PIN; // key changed ? ct0 = ~( ct0 & i ); // reset or count ct0 ct1 = ct0 ^ (ct1 & i); // reset or count ct1 i &= ct0 & ct1; // count until roll over ? key_state ^= i; // then toggle debounced state key_press |= key_state & i; // 0->1: key press detect if( (key_state & BUTTON_REPEAT_MASK) == 0 ) { // check repeat function rpt = BUTTON_REPEAT_START; // start delay } if(--rpt == 0) { rpt = BUTTON_REPEAT_NEXT; // repeat delay key_rpt |= key_state & BUTTON_REPEAT_MASK; } } ../keys.c:31: error: expected expression before ')' token ../keys.c:39: error: expected expression before ')' token was ist denn an den IF's falsch ??
Bitte formatiere Deinen Quelltext und nutze das Syntaxhighlighting des Forums, damit man den Kram besser lesen kann. Am besten geht das, indem Du vor den Quelltext [ c ] (ohne Leerzeichen) und nach den Quelltext [ / c ] (ebenfalls ohne Leerzeichen) stellst. Welche Zeilen sind 31 und 39? Pack' da 'nen Kommentar 'rein.
1 | ISR( TIMER0_OVF_vect ) // every 10ms |
2 | {
|
3 | static uint8_t ct0, ct1, rpt; |
4 | uint8_t i; |
5 | |
6 | TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5); // preload |
7 | for 10ms |
8 | |
9 | i = key_state ^ ~BUTTON_PIN; // 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 |
13 | over ? |
14 | key_state ^= i; // then toggle |
15 | debounced state |
16 | key_press |= key_state & i; // 0->1: key press |
17 | detect
|
18 | |
19 | if( (key_state & BUTTON_REPEAT_MASK) == 0 ) |
20 | { // check repeat function |
21 | rpt = BUTTON_REPEAT_START; // start delay |
22 | }
|
23 | |
24 | if(--rpt == 0) |
25 | {
|
26 | rpt = BUTTON_REPEAT_NEXT; // repeat delay |
27 | key_rpt |= key_state & BUTTON_REPEAT_MASK; |
28 | }
|
29 | }
|
Zeile 31:
1 | if( (key_state & BUTTON_REPEAT_MASK) == 0 ) |
Zeile 39:
1 | if(--rpt == 0) |
sorry ;)
Wo ist BUTTON_REPEAT_MASK definiert (schätze mal als #define); und wie? Ich glaube da liegt der Hase im Pfeffer. Wenn Zeile 31 diese ist:
1 | if( (key_state & BUTTON_REPEAT_MASK) == 0 ) |
dann ist Zeile 39 diese
1 | key_rpt |= key_state & BUTTON_REPEAT_MASK; |
Denn
1 | if(--rpt == 0) |
ist Zeile 36!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.