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
wofür nen Oszi ??? Der Code ist Dein Oszi !!
> adresse=0x4369;
Dein Chip hat 16kBit. Also 2kByte.
Die höchste Adresse die du beschreiben kannst
ist 2047 oder 0x7FF.
> 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
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.