mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 29F040 schreiben geht nicht - setze Datasheet um...


Autor: Bastelmensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich versuche einen 29F040 zu beschreiben.

Es ist ein AMD, das Datenblatt dazu habe ich.

Wie angegeben schreibe ich die Program Command Sequence (h5555 -> hAA; 
h2AAA -> h55; h5555 -> hA0) und dann die gewünschte Adresse und den 
Inhalt.

Nur leider bleibt im Chip nichts hängen.

Auf Seite 8 im Datenblatt steht im 2ten Absatz letzer Satz "Standard 
microprocessor write timings are used."
Mir ist natürlich klar das dieser Satz nur für das Schreiben des 
Commandos und die Übergabe des Inhalts gilt. Das eigentliche schreiben 
findet ja quasi unter ausschluß der öffentlichkeit statt und dauert 
nicht nur 55ns sondern ein paar us.

Ich gebe dem Chip mehr als doppelt so viel Zeit wie angegeben, um die 
Daten zu schreiben. (16us - AMD gibt 7us an)
Aber selbst wenn ich es zu schnell versuchen würde erneut zu schreiben, 
dann würde der Chip das ja nur ignorieren. d.h. meine erste 
Speicherzelle müßte ja geschrieben werden.

Die Chips sind neu, der Inhalt Flächendeckend hFF. Alle 10 Chips machen 
das selbe. Ich denke einen defekten Chip kann ich ausschließen.

Wenn ich einen SRAM einsetze und das Programm laufen lasse, dann 
schreibt der Controller bei den Adressen h5555 und h2AAA die werte der 
Commando Sequence rein. Die Nutzdaten die eigentlich in den 29F040 
sollen, finden sich im SRAM natürlich auch wieder.

Also von daher ist es OK.

Ich habe auch das Timing des SRAM mit der des 29F040 verglichen (die 
Datenblätter) und so wie es aussieht müsste alles in Ordnung sein. :-/

Ich habe die Schaltung jetzt schon 2 mal durchgemessen.
Die Basis ist ein STK 200.
Der Flash sitzt auf einer Adapterplatine im Sockel, die Adressleitungen 
15-19 sind auf einen Port geschalten. Damit realisiere ich später das 
Bankswitchung. Zur Zeit sind A15-A19 des 29F040 auf Low.
Der uC ist ein 90S8515, von denen habe ich noch ein paar. Dieser uC war 
unbenutzt. Ich habe mein Programm auch auf anderen Chips ausprobiert, es 
verhält sich überall gleich.

Hat mir jemand einen Tipp, was könnte ich übersehen haben? Das 
Datenblatt hat zwar nur 33 Seiten, aber übersehen hat man ja schnell 
was.

Oh, ich merke gerade das ich die ganze Nacht durchgemacht habe. :-/

Gruß Bastelmensch

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert denn der Zugriff auf Manufacturer ID und Device ID?

Autor: Basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beitrag "M32 Bascom Programm zum Beschreiben von AM29F040 Flash"

Hatte mal ähnliche probleme. Dieses Programm hab ich in die Codesammlung 
gepostet es ist zwar nicht dokumentiert aber bascom und die einfachheit 
(nix großartig optimiert der so) sind selbsterklärend

Autor: Bastelmensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@A.K.: der Zugriff auf die Hersteller ID funktioniert. Es kommt wie 
erwartet 01h raus. Der Zugriff auf den Chiptyp funktioniert nicht 
richtig. Hier kommt anstatt 4Ah auch 01h raus. Die Adressleitung 0 kann 
aber kein Problem haben, sonst könnte ich ja nicht die "A" von 2AAAh 
anlegen. (Außerdem durchgeklingelt und für OK befunden)

Irgendwie sehr komisch das ganze. Ich tippe auf Timing Problem.

2 der 29F040 haben an nicht nachvollziehbaren Adressen irgendeinen 
Unsinn reingeschrieben. (Der eine 2 Byte der andere 6 Byte) Die Adressen 
liegen wild verteilt ohne erkennbares Muster. (Zumindest für mich nicht) 
Außerdem haben sie es auch unter nicht nachvollziehbaren Bedingungen 
gemacht.
Mir ist es aufgefallen weil ich in meiner Checkroutine erkannt habe das 
die Dinger nach einem schreibversuch DQ6 toggeln.
DQ7 ist dabei 0, DQ5 ist 1 und DQ3 ist 0. Das bedeutet laut Datenblatt 
das daß Zeit Limit zum schreiben überschritten wurde.
Wenn ich nach einem Power Reset nur lese scheint soweit alles im grünen 
Bereich. Ich lese nur FFs, bzw die 2/6 Byte die verstreut im Speicher 
liegen, aber immerhin sind die Teile noch ansprechbar.
Allerdings zeigen sie das Bit-togglen, seit dem sie das einmal gemacht 
haben, bei jedem Schreibversuch.
Komischerweise zeigen meine anderen AMD 29F040 dieses verhalten nicht.

Ein 29F040 von ST den ich auch mal ausprobiert habe, macht einfach mal 
gar nichts. (Die faule Sau!) Weder Hersteller ID noch Chiptyp oder gar 
schreiben. Es kommt nur FFh beim Lesen. Was ja auch kommen soll, da der 
Chip laut Eprombrenner leer ist. Der kann die Chips aber leider nur 
lesen, deshalb kann ich keine Testmuster reinschreiben.

@Basti: danke für den Verweis.
Beim 90S8515 habe ich den Flash ja ans Speicherinterface rangehängt (das 
dem Mega32 ja fehlt) und entsprechend verschalten. (über ein Latch A0-8 
und die Datenleitungen -> STK200) Mit Deiner Methode komme ich beim 
90S8515 allerdings nicht weiter, weil ich das ALE Steuersignal nicht von 
Hand setzen kann.
Deshalb nehm ich jetzt mal einen Mega162, bei dem kann ich das 
Steuersignal ALE (Port E.1) von Hand setzen. Zum Glück habe ich einen 
da.
Ich will auch meine Zielleiterplatte nicht nochmal umdesignen, war 
schwer genug mit 2 Lagen ohne Brücken auszukommen. Und jetzt ein anderes 
µC Pinout, ne ich glaub da müßt ich erst mal ein wenig weinen. ;-) 
Außerdem ist die Leiterplatte schon zu mir unterwegs.

Allerdings habe ich da eine Frage zu Deinem Code: Du hast als Adressen 
für die Command Sequence "555" und "2aa" angegeben.
Laut Datenblatt ist es aber "5555" und "2aaa".
Copy & Paste Fehler, andere Sequence da anderer Hersteller oder check 
ich Deinen Code nicht?
Von welchem Hersteller ist der 29F040 den Du benutzt?

Fragen über Fragen.

Auf jeden Fall mal Danke für die Hinweise.

Ich mache es jetzt ohne das Speicherinterface. Vielleicht bekomme ich so 
das vermutete Timingproblem in den Griff.

Gruß Bastelmensch

Autor: Bastelmensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ES TUT!

Ich dreh durch! :-)

Schreiben, lesen, IDs lesen, löschen, einfach alles!

OK, danke an A.K., einfach mal mit der Command Sequence lesen anstatt 
schreiben hat mich auf die richtige Spur gebracht (Timing Problem, fragt 
mich aber nicht wo, was anderes kanns aber nicht sein!)

Und auch danke an Basti, ich wußte das ich das Prinzip verstanden habe. 
Ein blick in ein funktionierendes Proggi kann einem nicht nur die Augen 
öffnen, sondern manchmal auch beruhigen. Ich hatte schon an mir 
gezweifelt und wollte den Technikerschein an das Bildungsministerium 
zurückschicken. ;-)

Meine 2 Chips sind auch noch OK, ich habe sie gelöscht und jetzt 
funktionieren sie wie die anderen.
Selbst der 29F040 von ST funktioniert.

Ich kanns gar nicht mehr erwarten bis meine Leiterplatte kommt.

Sodele, ich muß jetzt erst mal abkühlen, ein Weizen und was leckeres zum 
Essen einwerfen. :-)

Gruß vom Bastelmensch

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.