Hallo,
ich versuche zum Stromsparen den ENC in in den Power-Down zu versetzen.
Nach dem Aufwachen bleibt der ENC hängen, Link-LED leuchtet. Stimmt
etwas mit der Power-Up Routine nicht?
void enc_powerdown( void)
{
/* turn off packet reception */
enc_clrbits_reg( ENC_REG_ECON1, (1<<ENC_BIT_RXEN) );
/* wait for any in progress packets */
while( (enc_read_reg( ENC_REG_ESTAT ) & (1<<ENC_BIT_RXBUSY)) );
/* wait for any current transmissions */
while( (enc_read_reg( ENC_REG_ECON1 ) & (1<<ENC_BIT_TXRTS)) );
enc_setbits_reg( ENC_REG_ECON2, (1<<ENC_BIT_VRPS) );
/* enter sleep mode */
enc_setbits_reg( ENC_REG_ECON2, (1<<ENC_BIT_PWRSV) );
}
void enc_powerup( void )
{
/* Wake up*/
enc_clrbits_reg( ENC_REG_ECON2, (1<<ENC_BIT_PWRSV) );
/* Wait for PHY to stabilise */
while( !(enc_read_reg( ENC_REG_ESTAT ) & (1<<ENC_BIT_CLKRDY)) );
/* Restore receive capability */
enc_setbits_reg( ENC_REG_ECON1, (1<<ENC_BIT_RXEN) );
}
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.