Flash EPROM

Im Unterforum Alle anderen elektronischen Probleme - Beschreibung: Was sonst nirgendwo hinpasst

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 9 2024  11:35:35      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Alle anderen elektronischen Probleme        Alle anderen elektronischen Probleme : Was sonst nirgendwo hinpasst

Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 Nächste Seite )      


Autor
Flash EPROM
Suche nach: eprom (644)

    







BID = 3366

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach
 

  


Ich glaube ich habe den Grund:

Du schreibst:
Timing kann ich ausschließen, habe immer 1ms Delays ziwschen jeden
Pegeländerungen, und da wo im Datenblatt 10ms stehen habe ich 100ms.


Aber nicht immer ist die Trödelei sicher!
Über die "Byte Load Cycle time" t_BLC steht im Datenblatt des AT29C20:


Each new byte to be programmed must have its high to low transition on WE (or CE) within 150 micro_seconds (!!das habe ich extra ausgeschrieben!!) of the low to high transition of WE (or CE) of the preceding byte. If a high to low transition is not detected within 150 micro_s of the last low to high transition, the load period will end and the internal programming period will start.

Dieser Timeout könnte doch durchaus auch für die Kommandosequenz gelten!


[ Diese Nachricht wurde geändert von: perl am 2002-09-08 03:56 ]

BID = 3370

Benedikt

Inventar

Beiträge: 6241

 

  

Dies gilt aber nur beim Laden der Datenbytes beim Programmieren, und nicht beim Senden von Befehlen !

Andere Frage:
Muss CE eigentlich überhaupt Impulse bekommen, oder kann man den Anschluß auf Masse legen ?
Laut Datenblatt erfüllt er dann alle Bedingungen.

BID = 3377

Jornbyte

Moderator



Beiträge: 7143

CE kann eigentlich immer an Masse liegen, wenn kein anderer Chip am gleichen Bus ist. Das ist ja hier der Fall. (CE = Chip Enabled)

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 3391

Benedikt

Inventar

Beiträge: 6241

CE liegt wieder an Masse, und ich habe mal alle Delays entfernt.
Und es geht (so halbe) !!!
Ab und zu liefert er zwar falche Werte, aber ansonsten geht es.
Kann es sein, dass nach der Aktivierung, der Modus nur für eine begrenzte Zeit aktiv bleibt ?
Sobald ich nach dem ID Mode Befehl ein paar ms warte, liefert er wieder die EPROM Werte. Aber selbst im Datenblatt steht: 10ms Pause nach dem Befehl ?!?

BID = 3395

Benedikt

Inventar

Beiträge: 6241

Zu früh gefreut.
Es war zufällig derselbe Wert, wie eigentlich erscheinen sollte.
Ich habe nochmals alles Überprüft:
Ich stelle die Adresse ein, sende ein Byte.
Und das ganze 3x.
Die Adresse stimmt, denn ich habe vor dem Bytesenden ein Byte gelesen, und dies stimmt mit dem Inhalt des EPROMs an der Stelle überein.
Der Sendealgorithmus passt auch, denn ein 28Fxxx geht. Allerdings werden hier die Bytes an Adresse 0 gesendet.

Mir ist dabei aufgefallen, dass unmittelbar nach dem Senden, das gelesene Byte weder dem Inhalt des Bytes, noch dem gesendeten entspricht. Man muss etwa 2ms warten, bis man ein richtiges Byte lesen kann.
Warum ?
Möglichkeit a): Das EPROM verarbeitet das eben gesendete Byte.
Möglichkeit b): Was könnte es sonst noch sein ???

BID = 3407

djtechno

Inventar



Beiträge: 4955
Wohnort: beutelsbach
Zur Homepage von djtechno ICQ Status  

den b austein schon in einem kommerziellen romburner getestet? vileicht isser futsch

BID = 3409

djtechno

Inventar



Beiträge: 4955
Wohnort: beutelsbach
Zur Homepage von djtechno ICQ Status  

sorry die antwort bezog sich auf seite 1 von 2,kannste streichen,wird net defekt sein

BID = 3421

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

>Mir ist dabei aufgefallen, dass unmittelbar nach dem Senden,
> das gelesene Byte weder dem Inhalt des Bytes, noch dem gesendeten entspricht. Man muss >etwa 2ms warten, bis man ein richtiges Byte lesen kann.


Warum Du unmittelbar nach den Kommandos keine gültigen Daten bekommst steht im Datenblatt. Unmittelbar nach der "Software Product Identification Entry" Kommandosequenz musst Du 10ms warten. Schau mal die Flowchart.

>Der Sendealgorithmus passt auch, denn ein 28Fxxx geht.
>Allerdings werden hier die Bytes an Adresse 0 gesendet.

Das deutet daraufhin, daß Du ein Problem mit dem Adressgenerator hast.
Zähler! Pfui!
Wie lange braucht Dein Programm denn, um von 0 auf 5555 oder auf 2aaaa zu zählen ?
Warum benutzest Du nicht 8-Bit-Register ? Dann dauert das höchstens 2 Clocks.
Der 29C.. erwartet ja gar nicht, daß Daten und Adressen bis in alle Ewigkeit stabil sind, da er interne Latches dafür hat (Datenstrobe= -CE * -WR, Adressstrobe= -CE * WR ).

Und weil diese Latches vorhanden sind, mag es außerdem sein, daß just im Moment der Pegeländerung auf der Steuerleitung am Ende Deines 5m langes Kabel per Übersprechen etwas ganz anderes produziert wird, als was Du in den LPT-Port geschrieben hast.
Laut Datenblatt ist ein 50ns Glitch reichlich ausreichend.

Als erstes würde ich das lange (Rund?)Kabel durch ein möglichst kurzes Flachkabel ersetzen, damit diese vorsätzliche Fehlerquelle entfällt.

BID = 3430

Benedikt

Inventar

Beiträge: 6241

perl >Mir ist dabei aufgefallen, dass unmittelbar nach dem Senden,
> das gelesene Byte weder dem Inhalt des Bytes, noch dem gesendeten entspricht. Man muss >etwa 2ms warten, bis man ein richtiges Byte lesen kann.


Warum Du unmittelbar nach den Kommandos keine gültigen Daten bekommst steht im Datenblatt. Unmittelbar nach der "Software Product Identification Entry" Kommandosequenz musst Du 10ms warten. Schau mal die Flowchart.

aber dann liefert er den Inhalt des EPROMs !

>Der Sendealgorithmus passt auch, denn ein 28Fxxx geht.
>Allerdings werden hier die Bytes an Adresse 0 gesendet.

Das deutet daraufhin, daß Du ein Problem mit dem Adressgenerator hast.
Zähler! Pfui!
Wie lange braucht Dein Programm denn, um von 0 auf 5555 oder auf 2aaaa zu zählen ?
Warum benutzest Du nicht 8-Bit-Register ?

das ding hat 17 Adressanschlüsse !!!
nehme ich 2 Register, brauche ich ein drittes wegen einer Adressleitung !

Dann dauert das höchstens 2 Clocks.
Der 29C.. erwartet ja gar nicht, daß Daten und Adressen bis in alle Ewigkeit stabil sind, da er interne Latches dafür hat (Datenstrobe= -CE * -WR, Adressstrobe= -CE * WR ).


Und weil diese Latches vorhanden sind, mag es außerdem sein, daß just im Moment der Pegeländerung auf der Steuerleitung am Ende Deines 5m langes Kabel per Übersprechen etwas ganz anderes produziert wird, als was Du in den LPT-Port geschrieben hast.
Laut Datenblatt ist ein 50ns Glitch reichlich ausreichend.

nachdem ich das kabel auf etwa 1m gekürzt hatte, und 74hc4040 einsetzte, hatte ich massive Probleme, dass einzelne Adressen übersprungen wurden. Dies habe ich mit 100pF 1k gelöst.

Als erstes würde ich das lange (Rund?)Kabel durch ein möglichst kurzes Flachkabel ersetzen, damit diese vorsätzliche Fehlerquelle entfällt.

Wenn ich aber mal Zeit habe, baue ich eine neue Schaltung mit 3x 74HC574.
Die Clock Leitungen werden mit einem 2 zu 4 Dekoder steueren.

BID = 3434

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

>aber dann liefert er den Inhalt des EPROMs !

Scheint daß der Chip ein angefangenes Kommando per Timeout beendet.


>>Laut Datenblatt ist ein 50ns Glitch reichlich ausreichend.

>nachdem ich das kabel auf etwa 1m gekürzt hatte, und 74hc4040 einsetzte, hatte ich massive Probleme, dass einzelne Adressen übersprungen wurden

Da siehst Du's, das sind offenbar die Reflektionen im Kabel. Die kann man bändigen, wenn man am Computerende in alle Signalleitungen rund 30..50 Ohm Widerstände einfügt.
Die Versorgungen an den Chips hast Du doch wohl hoffentlich abgeblockt?



>das ding hat 17 Adressanschlüsse !!!
nehme ich 2 Register, brauche ich ein drittes wegen einer Adressleitung !


Hat sogar 18 Adressleitungen, trotzdem brauchst Du wegen der internen Latches nur entweder zwei 8 Bit Register oder ein 8-Bit und ein 2-Bit (zB.74HC74):
D7....D0 vom LPT
IIIIIIII
++++++++---->A0..A7
IIIIIIII
I7....I0
Register
Q7....Q0
IIIIIIII
++++++++---->A8..A15
IIIIIIII
Register
Q1Q0---->A16,A17

Einen Decoder brauchst Du nicht, Du kannst die Clocks einfach zusammenbinden und
die alte RES-Leitung brauchst Du auch nicht mehr.

Außerdem, was soll der Geiz?






[ Diese Nachricht wurde geändert von: perl am 2002-09-09 18:24 ]

BID = 3442

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Weiterhin sehe ich folgenden Fehler:

Du schreibst:
>CE wird invertiert, und zusammen mit OE einem NAND Gatter zugeführt. Daraus wird WE erzeugt.

Später schreibst Du:
>CE liegt wieder an Masse, und ich habe mal alle Delays entfernt.


Das bedeutet, Du hast die Daten am LPT, der PROM hat ebenfalls OE aktiv und qualmt vor sich hin .
Man nennt das auch "Bus Contention".
Die Daten auf dem Bus sind die des stärkeren.
Dann schaltest Du praktisch gleichzeitig WE und OE um.
Noch bevor sich die Datenleitungen vom Kurzschluß beruhigt haben, latcht der PROM das, was er in diesem Moment sieht.
So darf das nicht sein!
Im DB steht, daß die Daten 50ns vor -WE stabil (und natürlich richtig) sein müssen und dann nicht mehr gehalten werden brauchen.

BID = 3450

Benedikt

Inventar

Beiträge: 6241

Nicht ganz:
Sobald OE auf 1 geht, bekommt WE denselben Pegel wie CE, ansonsten liegt WE auf 1.

Ich habe nun eine neue Schaltung überlegt. So einfache Sachen wie Spannungsversorgung und Kondensatoren fehlen noch.
Ist die Schaltung so OK ?

Uploaded Image: Flash4.gif

BID = 3463

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Sieht brauchbar aus.
Allerdings würde ich lieber A0..A7 ungepuffert zuführen, dann brauchst Du für die 256 Bytes eines Sektors die Register nicht mehr zu verändern.

Wie ich oben schrieb, ist eine Clock Leitung für die Register ausreichend. Falls Du tatsächlich mal alle Adressen puffern willst, brauchtst Du dann nur noch ein Register dazupappen, während Du bei Deiner parallelen Anordnung der Register mit den Steuerleitungen am Ende bist.

Achte drauf, daß der LPT im Standard (SPP) Mode läuft. In ECP oder EPP bekommst Du wahrscheinlich Kummer mit dem Protokoll und den FIFOs.

Viel Glück!

[ Diese Nachricht wurde geändert von: perl am 2002-09-09 23:52 ]

BID = 3468

Benedikt

Inventar

Beiträge: 6241

Du hast bei der Schaltung etwas übersehen:
Ist mir gestern aben auch nicht gleich eingefallen:
Die Adressleitungen werden nur beim Byte Load gelatched.
Beim Lesen der Daten müssen die Adressdaten die ganze Zeit anstehen. -> Weiteres 75HC574 und Adressdekoder für die Clock Leitung notwendig.

Ich betreibe den LPT Port laut BIOS im EPP/ECP Modus.
Dann sind die 4 Control Leitungen Open Kolllektor mit Pullups. Diese sind dann auch von außen auf Masse legbar. So in etwa wie I²C.
Dies kann ich beim EPROM aber nicht gebrauchen, und muss den Port softwaremäßig in den Standart Mode umschalten. Jetzt ist der Control Port TTL Ausgang, und die 8 Bit Leitungen sind in der Richtung umschaltbar, was im EPP Modus nicht geht.
Dies nur mal nebenbei.

BID = 3472

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Du brauchst trotzdem keinen Adressdecoder wenn Du die Register hintereinander hängst.
3 mal tick-tack an der gemeinsamen Clockleitung und alle Register sind geladen.


Vorherige Seite       Nächste Seite
Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 Nächste Seite )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 11 Beiträge verfasst
© x sparkkelsputz        Besucher : 182087696   Heute : 2176    Gestern : 6155    Online : 870        28.9.2024    11:35
4 Besucher in den letzten 60 Sekunden        alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0342669487