Hat hier jemand schonmal xmega A1U mit EBI und SDRAM verwendet?

OP #7713734
Lesenswert?

Moin.

Ich habe Probleme mit dem EBI. Der CS-Pin macht einfach nichts. Ich könnte ihn zwar auch einfach GNDen, aber das ist nicht Sinn der Sache. Das EBI ist schon soweit konfiguriert, dass es laut Oszi erfolgreich auto refreshes ausgibt (ist also im SDRAM Modus) und auch lds und sts toggelt an den richtigen Pins rum. CS bleibt aber immer HIGH oder LOW, je nachdem, wie ich _OUT voreingestellt habe. _DIR ist für den CS-Pin immer gesetzt. Eigentlich müsste er da rumtoggeln. Als ob er auf 3 Port EBI steht...

PORTCFG_EBIOUT = 0b10. Da erwarte ich den CS3 (den man für SDRAM nehmen muss) auf F7.

EBI_CTRL = 0b01000010. Also 8 Bit und 4 Port EBI.

Was kann man da sonst noch falsch machen?

Achja, es ist ein atxmega128a1u.

OP #7713879
Lesenswert?

Hallo Falk,

ich habe mir deinen Code und dein Routing mal angeschaut. Das Routing ist identisch. Der Code ist hier Assembler, aber das spielt ja keine Rolle. In den Registern steht das selbe drin, wenn man davon ausgeht, dass Atmel damals keine Zahlendreher in ihren Headerfiles eingebaut hat.

Also ich finde den Fehler einfach nicht. Manuell vial PORTF_OUTSET PORTF_OUTCLR kann ich CS problemlos toggeln. Sieht im Oszi sauber aus. Aber EBI macht da nichts. Was ich etwas verdächtig finde ist, dass ich den CS manuell überhaupt toggeln kann. Wenn EBI aktiv wäre, müsste der Pin für Änderungen an PORTF_OUTSET PORTF_OUTCLR eigentlich gesperrt sein.

Da ich im Oszi den SDRAM-Refresh sehe, müsste EBI doch hier auch den CS periodisch LOW ziehen, oder?

Kannst du dich erinnern, ob der CS bei dir damals irgendwie rumgezickt hat?

OP #7713882
Lesenswert?

Achso und ich habe in deinem Code nirgendwio die Stelle gefunden, wo du vom CS-Pin PORTF_OUT HIGH setzt, bevor du _DIR auf 1 setzt. Das macht man ja eigentlich so, damit CS nicht kurz LOW geht. Wenn du das aber gar nicht gemacht hast, könnte bei dir der /CS chronisch LOW gewesen sein, ohne dass du es gemerkt hast?

#7713922
Lesenswert?

Christian schrieb:

Da ich im Oszi den SDRAM-Refresh sehe, müsste EBI doch hier auch den CS periodisch LOW ziehen, oder?

Kannst du dich erinnern, ob der CS bei dir damals irgendwie rumgezickt hat?

Puhhh, du fragst mich Fragen. Das war von ZEHN Jahren! Ich mach mal den Olaf S. . . . An CS Probleme kann ich mich nicht erinnern. Ob ich dort mal das Oszi drangehalten habe aber auch nicht 8-0

Wait . . .

Ich habe meinen uralten Prototypen ausgegraben, den gibt's noch! Und siehe da, CS ist dauerhaft LOW.

Im Anhang CKE und CLK.

Angehängte Dateien:
OP #7713935
Lesenswert?

Vielen Dank für die Info. Wenn ich hier CS einfach auf Dauer-LOW schalte, funktioniert es. Ist halt nicht sauber, weil der CS ja eigentlich nicht Dauer-LOW sein sollte. In diesem Fall natürlich egal. Bin froh, dass es überhaupt funktioniert. xmega ist ja leider eh tot. Ich kann mir zwar nicht vorstellen, dass so ein Errata nicht aufgefallen ist und vermute den Fehler weiterhin bei mir/uns, aber naja, wat solls.

Nutzt du die Dinger noch? Ist immerhin 10 Jahre her :D

Beitrag #7714024 wurde von einem Moderator gelöscht.
(Firma: L-E-A) #7714102
Lesenswert?

Christian schrieb:

Wenn ich hier CS einfach auf Dauer-LOW schalte, funktioniert es. Ist halt nicht sauber, weil der CS ja eigentlich nicht Dauer-LOW sein sollte.

Selber habe ich mit dem EBI nicht gearbeitet und deshalb auch keine eigenen Erfahrungen damit.

Meine Überlegung: Wäre es möglich, dass CS nur dann inaktiv wird, wenn mindestens 2 CS-Signale definiert sind? Das wäre vielleicht ein Versuch wert, wenn Du noch einen entsprechenden Pin übrig hast...

Grüßle, Volker

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren