Forum: Mikrocontroller und Digitale Elektronik ATMega16 und ext Flash Memory (W29C040)


von Jan-erik S. (madmanphytech)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem das ext. Flash Memory W29C040 (Winbond)über meinen 
ATMega16 anzupsrechen. Ich habe alle Infos die wichtig sein könnten mal 
angehängt.

Das Projekt ist ein Datenlogger, der verschiedene Sensoren einliesst und 
die Daten in dem ext. Flash speichert (bzw speichern soll).
Die Speicherung oder das Auslesen ist leider das Problem.

Im Programm wird zuerst der Software Protection Mode des W29C040 
ausgeschaltet. Anschliessend wird eine Speicherstelle(0x000F55) 
beschrieben und die Zellen (0x000000) und (0x000F55) gelesen.
Das Oszi-Image zeigt, dass beim zurücklesen das Datum nicht richtg 
angezeigt wird.

Ich bin über jede Idee und Hilfe dankbar.

Schöne Grüße
Jan-Erik

von Rudolph R. (rudolph)


Angehängte Dateien:

Lesenswert?

Assembler ist nicht so wirklich mein Ding.

Ich habe mal angefangen, einen FLASH-Programmer zu entwickeln.
Das Ziel war Low-Cost und daher beschränkt auf maximal 4 MBit in PLCC44, 
sollte im wesentlichen für ein BIOS sein.

Ist dann irgendwie gestorben.
Ich habe das nicht wirklich gebraucht und die Ziel-Gruppe war dann doch 
nicht so richtig interessiert.

Das Teil lässt sich über ein Terminal steuern und macht schon so Sachen 
wie Identifizieren, Leertest, Löschen und Schreiben eines Test-Strings.

Naja, ich hab's halt mal angehängt, viel Spass damit.

von Jan-erik S. (madmanphytech)


Lesenswert?

Hi Rudolph,

vielen Dank erstmal für deine Antwort.
Ich habe dein Programm gleich mal ausprobiert, nachdem ich das Flash 
direkt an den Mega16 angeschlossen haben. Aufbau und Portbelegung habe 
ich von dir übernommen. Allerdings habe ich auch jetzt noch ein Problem. 
Bei der Identifizierung bekommen ich schon kein vernünftigen Wert zurück 
(ist immer 0x90). Leider kann ich noch immer nicht sagen, ob es am 
schreiben oder lesen liegt. Hast du vielleicht noch eine Idee?
Welchen Flash Speicher hast du denn benutzt?

Schöne Grüße
Jan-Erik

von holger (Gast)


Lesenswert?

>Bei der Identifizierung bekommen ich schon kein vernünftigen Wert zurück
>(ist immer 0x90).

Da liest du den zuletzt gesendeten Wert fürs Identify Kommando zurück.
Warum auch immer. Der Wert scheint da am Port zu kleben.

von Rudolph R. (rudolph)


Angehängte Dateien:

Lesenswert?

Nun ja, mein Interesse galt vor allem dem AM29F040(A/B).

Besorgt habe ich mir, was ich so an 4 MBit FLASH's bekommen konnte.
Einen W29C040 habe ich hier.

Und auch W29C020 und andere Teile, die auch PLCC44 haben.

Allerdings ist das wirklich ziemlich weit weg inzwischen.
Ich bin mir nur sicher, dass das funktioniert hat, so richtig weit 
gekommen bin ich ja nun auch nicht.


Wenn ich mir den Code so ansehe dann ist es wahrscheinlich eine gute 
Idee, die Optimierung abzuschalten.
Die Zugriffe auf die Ports erfolgen sonst zu schnell.
Und im Projekt habe ich auch -O0 benutzt.

Aus write_command() :

 PORTB = 0x55;
 PORTC = 0x55;
 PORTD = (PORTD & 0x1f);
 PORTD |= OE;
 PORTD &= ~CE;
 PORTD &= ~WE;
 PORTA = 0xAA;
 PORTD |= WE;
 PORTD |= CE;

Mit Optimierung könnte das ein wenig sehr knapp für das FLASH werden...

von John S. (linux_80)


Lesenswert?

Hallo,

Du könntest auch messen wie die flanken der Signale sind, und je nach 
länge der Leitungen ein paar Takte Pause einbauen, damit die sicher den 
richtigen Wert am Flash haben, wenn die Enables low gehen.

Ich hatte mir mal einen Adapter gebaut, um ein Flash für das PC-BIOS zu 
beschreiben (DIP32), das ich zerschossen hatte. Das hab ich in Bascom 
geproggt auf einem Mega644. Ein Frontend dazu aber auf den PC, damit ich 
die 256KB per UART an den Mega übertragen konnte.

Bei 16MHz des Mega hab ich zwischen WE-low und WE-high ein NOP 
dazwischen gebaut, vor dem einlesen eines Bytes 2 NOPs.
Aja, und Pullups beim lesen aktiviert bei den Datenleitungen.

Hier noch die Unterseite der Verkabelung:
http://roboter.net-con.net/rn/FlashAdapter_Unterseite.JPG

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
Noch kein Account? Hier anmelden.