Noch ein weiteres Thema:
Hat schonmal jemand mit Powerdown und WakeUp mit TWI-Interrupt gearbeitet? Ich hab grad einen Versuchsaufbau auf dem Tisch, in dem ich das mal probieren wollte. Atmega8 ist als TWI-Slave konfiguriert und wird nach 10 Sekunden kreiseln im Mainloop ueber eine Subroutine, die die Durchlaeufe im Mainloop zaehlt, in den Powerdown versetzt. Hab eine LED am Mega, die er vor dem Powerdown abschaltet und mir anzeigt, das er pennen geht. Jetzt will ich ihn per TWI aufwecken und zurueck in den Mainloop schicken, was aber nicht klappt. Sobald er aufwacht, sollte die LED wieder leuchten, was sie nicht tut. Im Logikanalysator kommt ein ACK nachdem er seine Adresse erkennt, dann garnichts mehr. Im Datenblatt kann ich nichts dazu finden, es sieht so aus, als ob nur das TWI-Modul antwortet, das Hauptprogramm aber weiter schlaeft. Muss man da noch irgendwas aktivieren? Hier mal ein Ausschnitt des Codes:
Hat schonmal jemand mit Powerdown und WakeUp mit TWI-Interrupt gearbeitet? Ich hab grad einen Versuchsaufbau auf dem Tisch, in dem ich das mal probieren wollte. Atmega8 ist als TWI-Slave konfiguriert und wird nach 10 Sekunden kreiseln im Mainloop ueber eine Subroutine, die die Durchlaeufe im Mainloop zaehlt, in den Powerdown versetzt. Hab eine LED am Mega, die er vor dem Powerdown abschaltet und mir anzeigt, das er pennen geht. Jetzt will ich ihn per TWI aufwecken und zurueck in den Mainloop schicken, was aber nicht klappt. Sobald er aufwacht, sollte die LED wieder leuchten, was sie nicht tut. Im Logikanalysator kommt ein ACK nachdem er seine Adresse erkennt, dann garnichts mehr. Im Datenblatt kann ich nichts dazu finden, es sieht so aus, als ob nur das TWI-Modul antwortet, das Hauptprogramm aber weiter schlaeft. Muss man da noch irgendwas aktivieren? Hier mal ein Ausschnitt des Codes:
Code:
Mainloop:
Set LED
Do
Twi_control = Twcr And &H80
If Twi_control = &H80 Then
Twi_status = Twsr And &HF8
Gosub Comstart
End If
Waitms 50
Gosub Sleeptimer
Loop
End
'===============================================================================
Sleeptimer:
Incr I2 'Zaehler fuer die Durchlaeufe
Select Case I2
Case Is > 200 : I2 = 0 'Wenn 10 Sek. erreicht dann Zaehler auf Null
Reset LED
Power Powerdown
Set LED
End Select
Return