Hallo,
nachdem ich es geschafft habe den Slave mit "General Call" anzusprechen,
möchte ich jetzt zusätzlich den TWI-Teil über Interrupt ansteuern.
Bisher wird gepollt, wie es im Originalcode von Manni vorgesehen ist.
Leider funktioniert es nicht und ich habe keine Ahnung warum.
Ich habe in der TWIS_Init das TWIE-Bit gesetzt:
1 | TWCR = (1<<TWEA | 1<<TWEN | 1<<TWIE);
|
und im Hauptprogramm die TWI-Steuerung in die ISR gepackt:
1 | ISR(TWI_vect)
|
2 | {
|
3 | if (TWIS_ResonseRequired (&TWIS_ResonseType))
|
4 | {
|
5 | switch (TWIS_ResonseType)
|
6 | {
|
7 | case TWIS_ReadBytes:
|
8 | for (i=0;i<20;i++)
|
9 | {
|
10 | byte[i] = TWIS_ReadAck ();
|
11 | }
|
12 | byte[20] = TWIS_ReadNack ();
|
13 | TWIS_Stop ();
|
14 | break;
|
15 |
|
16 | case TWIS_ReadBytes_GC:
|
17 | for (i=0;i<20;i++)
|
18 | {
|
19 | byte[i] = TWIS_ReadAck ();
|
20 | }
|
21 | byte[20] = TWIS_ReadNack ();
|
22 | TWIS_Stop ();
|
23 | break;
|
24 | }
|
25 | }
|
26 | }
|
was mache ich falsch?
Zusätzlich habe ich den gesamten Code angehängt.