Cypress EZ-USB FX2 Port-Pin Problem

Hallo,

Als Einsteiger in die EZ-USB FX2 Reihe habe ich ein Problem mit den Port-Pins. Ich kann sie nicht als Output nutzen, selbst ein einfaches Toggle funktioniert nicht.

Mein Programm basiert auf dem a3load Beispiel. Zum Laden benutze ich das EZ-USB Control Panel. Zum Pruefen habe ich ein zusaetzliches Vendor-Request eingebaut, welches mir im Log Fenster des Control Panel auf Anfrage einen Test-String zuruecksendet. Das funktioniert soweit.

Als naechstes wollte ich einen Port-Pin als Ausgang schalten, und mit dem Oszi bzw durch Zuruecklesen des Registers den Effekt beobachten. Dazu schalte ich die Alternativen Funktionen in PORTCFGx aus, und setze das entsprechende Bit in OEx. Dann toggle ich das Bit in IOx.

Leider kann ich keinen Effekt beobachten. Der Pin bleibt auf seinem Level stehen. Fuer den Test habe ich einen Pin ausgewaehlt, der auf der Platine nicht verbunden ist (um Seiteneffekte anderer Komponenten auszuschliessen). Weder mit dem Oszi, noch durch Zuruecklesen kann ich Aenderungen feststellen.

Andererseits kann ich durchaus das OEx Register zuruecklesen, und wenn ich einen Pin extern auf einen bestimmten Level zwinge, kann ich das ebenfalls korrekt zuruecklesen. Dasselbe beobachte ich bei allen anderen Pins (einzeln, und alle gleichzeitig).

Was mache ich falsch? Gibt es ein weiteres verstecktes Register Setup, welches ich durchfuehren muss? (Ich habe das TRM mit der Lupe durchsucht, aber nichts derartiges gefunden)

Kann mein FX2 Chip beschaedigt sein und deshalb diese Symptome zeigen? Immerhin handelt es sich um ein neues Board, welches es in Betrieb zu nehmen gilt. Es gibt sicher irgendwo auch I/O Kollisionen (deshalb zunaechst der Test mit einem nicht-verbundenen I/O Pin). Leider habe ich vorerst nur dieses eine Exemplar und kann nicht gegenchecken.

Ich bin fuer alle Hinweise dankbar!

Gruss, Marc

Reply to
Marc Jet
Loading thread data ...

Saublöde Frage...das sind keine open collector, bei denen Du nur die Vorspannung vergessen hast?

Reply to
Ralph A. Schmid, DK5RAS

Zeig mal Code.

--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
 Click to see the full signature
Reply to
Georg Acher

Hallo Georg,

Hier ist das reduzierte Beispiel, welches alle Pins togglen sollte. Dass der Build und Ladevorgang funktioniert, habe ich mit einer anderen Variante probiert, die auf ein bestimmtes Vendor-Request mit dem aktuellen Input-Pin Status antwortet.

void Delay (void) { uchar i=0; do { i--; } while (i); }

void main (void) {

//--- simple setup

CPUCS = 0x02; IFCONFIG = 0xc0;

PINFLAGSAB = 0x00; Delay(); PINFLAGSCD = 0x40; Delay();

PORTACFG = 0x00; PORTCCFG = 0x00; PORTECFG = 0x00;

//--- simple toggle (no USB communication)

OEA = 0xff; OEB = 0xff; OEC = 0xff; OED = 0xff; OEE = 0xff;

while (1) {

IOA = 0x00; IOB = 0x00; IOC = 0x00; IOD = 0x00; IOE = 0x00; Delay();

IOA = 0xff; IOB = 0xff; IOC = 0xff; IOD = 0xff; IOE = 0xff; Delay(); }

}
Reply to
Marc Jet

In article , "Marc Jet" writes: |> > Zeig mal Code. |> |> Hallo Georg, |> |> Hier ist das reduzierte Beispiel, welches alle Pins togglen sollte.

Sieht an sich gut aus. Werden die die Pins aktiv getrieben oder sind sie wirklich tri-state? Du hast was von "zwingen" geschrieben, das ist zweideutig... Kann man leicht mit einem 100R gegen GND oder VCC rausfinden, das darf den Pegel nicht verändern.

Wenn sie tri-state sind, kann ja entweder nur die Definition der SFRs für OE kaputt sein (mal per Disassembler nachschauen) oder die delay-Funktion klemmt.

Bei Port-D gibts ja noch das Setting mit EPnIFIOCFG, nicht dass da einer auf

16Bit steht und D damit auch nicht mehr IO ist...
--
         Georg Acher, acher@in.tum.de
         http://www.lrr.in.tum.de/~acher
 Click to see the full signature
Reply to
Georg Acher

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.