Richtig, diese Zeilen will ich ausführen, wenn die Methode
Device.Reset() ausgeführt und damit ein Bit in irgendeinem Register
verändert wird.
> SYNCDELAY;
> FIFORESET = 0x80; // activate NAK-ALL to avoid race
> conditions
> SYNCDELAY; // see TRM section 15.14
> FIFORESET = 0x02; // reset, FIFO 2
> SYNCDELAY; //
> FIFORESET = 0x04; // reset, FIFO 4
> SYNCDELAY; //
> FIFORESET = 0x06; // reset, FIFO 6
> SYNCDELAY; //
> FIFORESET = 0x08; // reset, FIFO 8
> SYNCDELAY; //
> FIFORESET = 0x00; // deactivate NAK-ALL
> SYNCDELAY;
>
Wenn ich kapitel 7 TRM (Resets) richtig verstehe wird Bit URES (Bit 5)
im Register USBIRQ auf 1 gesetzt sobals Device.reset() ausgelöst wird.
Mit dem Eintrag :
USBIRQ = 0xFF;
USBIE = 0x10;
in die TD_Init() und dem Eintrag:
if (USBIRQ & 0x10)
{
PA1 = 0x01; //ist ein Ausgang, damit überprüfe ich die Abfrage mittels
oszi
// hier müssen die FIFO-Resets rein
}
in die TD_Poll() klappt das schon ganz gut,
Woran liegt es, dass diese IF-Abfrage unregelmäßig ausgeführt wird?
manchmal beim ersten, manchmal erst beim zweiten oder auch erst beim 3.
Aufruf der Reset_Methode