Forum: Mikrocontroller und Digitale Elektronik Speicher beschreiben schlägt fehl


von Jeromyo H. (jeromyo) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo an alle,

wie aus meinem gestrigen Posting zu erahnen, arbeite ich immer noch an 
der Ansteuerung eines Flash-Speichers. AMIC A29040l-70.

Datenblatt:
http://pdf1.alldatasheet.com/datasheet-pdf/view/55589/AMICC/A29040L-70.html

Lesen klappt soweit wunderbar, Verkabelung zum Mikrocontroller(Arduino 
Mega 2560, also ATMega 2560) alles in Ordnung und überprüft. Der Fehler 
liegt in meinem Programmtext, ich blicke mit den Comand Sequences und 
dem Write Befehl, insbesondere dem Chip Erase, an das ich mich als 
erstes herangewagt habe, nicht klar :/
 Hier seht ihr meinen Versuch, einen Chip Erase durchzuführen, im 
Anhang. Stellenweise war sogar ein teil des ersten Sektors schön mit 
"1"en gefüllt, aber jetzt funktioniert gar nichts mehr. Vielleicht liegt 
es am Timing, aber so vermurkst kann es ja gar nicht sein, wenn es 
zumindest partiell funktioniert (hat). Könntet ihr bitte einmal als 
Experten den Programmcode durchsehen und mir sagen, warum es nicht 
klappt?

Schonmal Danke, freue mich über jeden konstruktiven Beitrag :)

von Jeromyo H. (jeromyo) Benutzerseite


Lesenswert?

Oh, zwei Mal das Gleiche angehängt, entschuldigt.

von Jeromyo (Gast)


Lesenswert?

Dieser Fehler im Code wurde übrigens schon behoben, keine Besserung 
erzielt...
ioLinesWrite(0b10100000); // 0x10 für Chip Erase
Wurde in
ioLinesWrite(0b00010000);
korrigiert.

von DirkZ (Gast)


Lesenswert?

Hast Du den AMIC direkt am µC angeschlossen? Der AMIC braucht zum 
Schreiben/Löschen 30mA, zum Lesen nur 20mA. Der AVR liefert nur 20mA.

Wie schnell kommen denn die Befehle aus dem AVR? Bist Du vllt. zu 
schnell: Noise pulses of less than 5ns (typical) on OE,CE or WE do not 
initiate a write cycle.

von Jeromyo H. (jeromyo) Benutzerseite


Lesenswert?

Die Adress-, Steuer- und Datenleitungen liegen direkt an dein uC Ein-, 
bzw. Ausgängen. Die Spannungsversorgung ist jedoch extern über einen 
Spannungsregler, da sollte es kaum Probleme geben, der wird dadurch kaum 
ausgelastet.
Hm, ich dachte, da ein Takt 62ns bei 16Mhz dauert, und "digitalWrite" in 
dieser IDE in mindestens 3,4 Befehle kompiliert wird, dass das kein 
Problem darstellen wird.

von DirkZ (Gast)


Lesenswert?

DirkZ schrieb:
> Der AVR liefert nur 20mA.

Quatsch: Der AVR liefert max. 40mA.

von Jeromyo H. (jeromyo) Benutzerseite


Lesenswert?

Für euch ist sowas doch alltäglich, seht es doch bitte mal durch und 
gebt ein kurzes Statement, wenn ihr Lust habt :/

von DirkZ (Gast)


Lesenswert?

Beitrag "M32 Bascom Programm zum Beschreiben von AM29F040 Flash"
http://www.mikrocontroller.net/attachment/18571/f040test.bas

Ein Beisiel in BASCOM zum Lesen/Schreiben und Löschen eines AM29F040. 
Solltest Dich zurechtfinden.


Zu Deinem Code:
1
// Zum allgemeinen Aufrufen einer Command Sequence muss WE und CE auf Logic-Low und OE auf Logic-High liegen
2
  digitalWrite(CE, LOW);
3
  digitalWrite(WE, LOW); // WE High?
4
  digitalWrite(OE, HIGH);
5
  //delay?
6
  
7
  // First Cycle
8
  digitalWrite(WE, HIGH);

Warum setzt Du WE wieder auf HIGH?

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.