Forum: Mikrocontroller und Digitale Elektronik AVR TWI Slave in C mit Interrupt


von Marc H. (bauerpilot)


Angehängte Dateien:

Lesenswert?

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.

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
Noch kein Account? Hier anmelden.