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 :)
Dieser Fehler im Code wurde übrigens schon behoben, keine Besserung erzielt... ioLinesWrite(0b10100000); // 0x10 für Chip Erase Wurde in ioLinesWrite(0b00010000); korrigiert.
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.
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.
Für euch ist sowas doch alltäglich, seht es doch bitte mal durch und gebt ein kurzes Statement, wenn ihr Lust habt :/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.