25.12.2013 Aufrufe

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

Gecko3 - CCC Event Weblog

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

E. Quellcode<br />

// The 4K demo t o o l s l o c a t e a l l code s e c t i o n s in e x t e r n a l memory .<br />

// The d e s c r i p t o r t a b l e i s r e l o c a t e d by t h e frameworks ONLY i f i t i s found<br />

// to be l o c a t e d in e x t e r n a l memory .<br />

pDeviceDscr = (WORD)&DeviceDscr ;<br />

131 pDeviceQualDscr = (WORD)&DeviceQualDscr ;<br />

pHighSpeedConfigDscr = (WORD)&HighSpeedConfigDscr ;<br />

pFullSpeedConfigDscr = (WORD)&FullSpeedConfigDscr ;<br />

pStringDscr = (WORD)&S t r i n g D s c r ;<br />

136 i f (EZUSB HIGHSPEED( ) )<br />

{<br />

pConfigDscr = pHighSpeedConfigDscr ;<br />

pOtherConfigDscr = pFullSpeedConfigDscr ;<br />

}<br />

141 else<br />

{<br />

pConfigDscr = pFullSpeedConfigDscr ;<br />

pOtherConfigDscr = pHighSpeedConfigDscr ;<br />

}<br />

146<br />

i f ( (WORD)&DeviceDscr & 0 xe000 )<br />

{<br />

IntDescrAddr = INTERNAL DSCR ADDR;<br />

ExtDescrAddr = (WORD)&DeviceDscr ;<br />

151 DevDescrLen = (WORD)&UserDscr − (WORD)&DeviceDscr + 2 ;<br />

for ( i = 0 ; i < DevDescrLen ; i ++)<br />

∗ ( (BYTE xdata ∗) IntDescrAddr+i ) = 0xCD;<br />

for ( i = 0 ; i < DevDescrLen ; i ++)<br />

∗ ( (BYTE xdata ∗) IntDescrAddr+i ) = ∗ ( (BYTE xdata ∗) ExtDescrAddr+i ) ;<br />

156 pDeviceDscr = IntDescrAddr ;<br />

o f f s e t = (WORD)&DeviceDscr − INTERNAL DSCR ADDR;<br />

pDeviceQualDscr −= o f f s e t ;<br />

pConfigDscr −= o f f s e t ;<br />

pOtherConfigDscr −= o f f s e t ;<br />

161 pHighSpeedConfigDscr −= o f f s e t ;<br />

pFullSpeedConfigDscr −= o f f s e t ;<br />

pStringDscr −= o f f s e t ;<br />

}<br />

166 EZUSB IRQ ENABLE( ) ; // Enable USB i n t e r r u p t (INT2)<br />

EZUSB ENABLE RSMIRQ( ) ; // Wake−up i n t e r r u p t<br />

INTSETUP |= (bmAV2EN | bmAV4EN) ; // Enable INT 2 & 4 a u t o v e c t o r i n g<br />

171 USBIE |= bmSUDAV | bmSUTOK | bmSUSP | bmURES | bmHSGRANT; // Enable s e l e c t e d<br />

i n t e r r u p t s<br />

EA = 1 ; // Enable 8051 i n t e r r u p t s<br />

#ifndef NO RENUM<br />

// Renumerate i f n e c e s s a r y . Do t h i s by c h e c k i n g t h e renum b i t . I f i t<br />

176 // i s a l r e a d y set , t h e r e i s no need to renumerate . The renum b i t w i l l<br />

// a l r e a d y be s e t i f t h i s firmware was loaded from an eeprom .<br />

i f ( ! ( USBCS & bmRENUM) )<br />

{<br />

EZUSB Discon (TRUE) ; // renumerate<br />

181 }<br />

#endif<br />

// u n c o n d i t i o n a l l y re−connect . I f we loaded from eeprom we are<br />

// d i s c o n n e c t e d and need to connect . I f we j u s t renumerated t h i s<br />

186 // i s not n e c e s s a r y but doesn ’ t hurt anything<br />

USBCS &=˜bmDISCON;<br />

CKCON = (CKCON&(˜bmSTRETCH) ) | FW STRETCH VALUE; // Set s t r e t c h to 0 ( a f t e r<br />

renumeration )<br />

60 Matthias Zurbrügg, Christoph Zimmermann

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!