hallo zusammen,
ich versuche gerade ein m95160 eeprom anzusteuern.
ich glaube, das funktioniert auch teilweise!
ich kann einen wert auslesen, aber immer nur FFh, und nicht den
hineingeschriebenen!! weiss nicht genau was das problem ist, vielleicht
kann mir jemand helfen der schon mal ein M95xxx angesteuert hat..
habe den einten oder anderen beitrag dazu gefunden, jedoch keine antwort
wie das problem gelöst wurde!:(
nun ja, im anhang sind mal meine funktionen die ich geschrieben habe und
das datenblatt des eeproms.
das eeprom wird mit einem pic18f2550 angesteuert.
vielen dank für schnelle antworten und hilfe!!
lg philip
hatte ich mit nem Atmel Typ.
Achte auf CLK und Daten wenn CS low geht, das Schreiben beginnt mit der
L/H Flanke von CS. Da müssen diese beiden Pins exakt den gleichen
Zustand haben wie beim aktivieren des EEPROM.
Hier nochmal mein Bericht:
Beitrag "Problem beim Schreiben eines SPI EEPROM AT25080"
nun, danke schon mal für den tip!
habe leider kein oscilloskop zur verfügung, jedenfalls im moment
nicht...
konnte die daten noch nicht genau überprüfen.
aber meiner meinung nach sollte die spi-übertragung vom pic her gut
funktionieren...
ich übertrage über die gleich spi-schnittstelle auch daten zu einem
lcd(dog163) und das funktioniert. Fürs lcd habe ich die daten auch schon
mal mit dem osci kontrolliert, und die waren ok.
aber damals war das eeprom noch nicht initialisiert, und jetzt hab ich
das osci nicht mehr.. müsste es wieder organisieren...
was müsste ich überhaupt anders machen??
steht das in deinem beitrag? (habs leider nicht so mitm english :S, bin
auch noch azubi xD )
und sonst trotzdem schon mal vielen dank!! :D
ich versuch mal was interessantes aus deinem beitrag zu verstehen..
danke, lg philip
hier noch das datenblatt im anhang..
könnte es in mainem code an der initialisierung scheitern?
habe ich da evtl. etwas mit dem "write enable" falsch verstanden??
oder etwas vergessen??
lg philip
> eeprom_write(adresse,wert_out);> wert=eeprom_read(adresse);
Und nochwas: Du wartest in eeprom_write() nicht bis das
Byte geschrieben wurde und liest es gleich zurück.
Füge da mal ein Delay von 10ms ein.
Solltest du nicht vor dem Schreiben auch mal das Write-Enable-Kommando
(WREN) schicken? (Bild 7 / Seite 13 im DB)
EDIT:
Bekommst du irgendwas anderes als 0xFF zurück, z.B. wenn du das
Status-Register oder die ID ausliest?
BTW:
Anhänge in C bitte mit Endung .c
Dann werden die hübsch formatiert.
danke viel mals für die antworten!!
@holger:
ja danke, das hab ich bereits gemerkt.. peinlicher fehler!! :S
hat aber nichts genützt!
wegen dem warten nach dem schreiben, gibts da eine möglichkeit auf ein
bit zu warten? glaube nicht...
ein delay hatte ich auch schon mal drin, hab deine überlegung auch schon
gemacht! hatte da ein 100ms delay, hat aber auch nichts genützt..
@lothar:
den write-enable sende ich doch in der initialisierung im ersten teil,
reicht das nicht? muss ich vor dem schreibbefehl auch noch einen
senden??
ich denke dass man den nur einmal senden muss, ausser man sendet nen
write-disable..?!
hab ich noch nie versucht, das mach ich gleich, wäre ein guter test um
herauszufinden ob die read-funktion klappt, danke!
und danke für den tip, den nächsten werde ich mit .c hochladen! ;)
danke an alle, hoffe ich schaffe das noch..
hab heute den letzten tag an diesem projekt, dann wechsle ich die
abteilung und ein anderer azubi wird daran gesetzt.
und ich wäre schon froh, wenn die hardware und alle grundfunktionen der
software funktionieren!
vielen dank, lg philip
OK, hab jetzt den WREN vor dem schrieben auch noch getestet. und hab
auch wieder ein delay, zwischen write/read, funktioniert nicht.. FFh!
auch read-status-register(RDSR) gibt FFh zurück.. :(
hab jetzt ein oscilloskop, kontrolliere mal ob die daten auch richtig
ankommen..
hab jetzt noch das write-in-progress bit im statusregister gesehen, aber
glaube nicht dass es sinvoll ist auf das bit zu warten, oder?
denn ich glaube ein delay von 10 ms sollte das problem lösen..
hatte auch noch fehler beim herumschieben der 2bytes in dem 16bit
adresswert, hier die neuere version der funktionen..
(habe den write enable in der schreibfunktion wieder gelöscht)
lg philip
> auch read-status-register(RDSR) gibt FFh zurück.. :(
Du bekommst also gar nichts zurück. Da müssten mindestens 3 Bits
(b6,b5,b4) auf 0 sein. Das EEPROM stellt sich tot, vermutlich sprichst
du es nicht richtig an.
> hab jetzt ein oscilloskop, kontrolliere mal ob die daten auch richtig> ankommen..
Gut, alles andere ist nur Raten...
ich glaub ich hab was interessantes gefunden..
der datenausgang Q(pin2) ist immer auf 5V. sonst alle signale i.o.
dann hab ich nach einem kurzschlussvon Q zu VCC gesucht! und dabei 200
Ohm gemessen!! :S
ich denke der ausgang ist tot..
das ist gut möglich, denn an der gleichen spi schnittstelle ist auch ein
lcd angeschlossen, und das hatte ich einmal falsch angeschlossen.
muss jetzt wohl das eeprom ersetzten...
lg philip