Forum: Mikrocontroller und Digitale Elektronik Mit Atmega16 externes EPROM auslesen?


von Eprommer (Gast)


Lesenswert?

Hallo,

Ich möchte meinen Atmega16 dazu Missbrauchen, mir ein EPROM auszulesen 
und während dem Lesen, die daten an die UART Schnittstelle zu schicken 
um diese mit dem PC dann abgreifen zu können.

Das EEPROM ist ein 256Kbx8 von ST (M27C2001)

So nun habe ich ja A0 - A17 was ja meine Inputs sind.
Dann Q0-Q7 = Dataoutputs. (Ich denke die werden fürs Lesen relevant 
sein?)
Dann E für Chip Enable
G für Output Enable
und P für Program (Erstmal uninteressant)
und VPP, VCC, VSS.


So nun müsste ich ja die Q0-Q7 an PB0-PB7 ran klemmen können ohne 
Probleme, müsste dann den PB als "Eingang" setzten, und die Port Pins 
auf High oder Low?

Dann müsste ich ja Die Steuerleitungen ChipEnable (e) und G (Output 
Enable) auf High setzten wenn ich das Richtig aus dem Datenblatt gelesen 
habe?

Laut Datenblatt gibts ein "Two Line Output Control" aber damit kann ich 
nichts anfangen, kann mir vielleicht jemand das ein bischen erklären?

Lg
Daniel

von manni (Gast)


Lesenswert?

Hmmm.., interessiert mich auch.

Gruss

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nun, du kannst deine Adressen "zu Fuß" auf irgendwelche Ausgabeports
schreiben, und wenn du CE und OE des EPROMs aktiv hast (kannst du,
wenn der Stromverbrauch keine Rolle spielt, die ganze Zeit aktiv
halten), dann hast du nach der Zugriffszeit die Daten am EPROM-Ausgang,
von wo aus du sie mit einem 8-bit-Port wieder einlesen kannst.  Man
braucht natürlich ziemlich viele Portpins für Adressleitungen.
Könntest du ggf. durch Multiplexen machen, dann brauchst du ein
(oder zwei) 74*373 Register dazwischen.  Dann bist du schon fast
beim externen Speicherinterface, wie es zwar der ATmega16 nicht hat,
aber beispielsweise der ATmega8515 (oder ATmega128/ATmega1281 dann
wieder).

von Eprommer (Gast)


Lesenswert?

Ah okay danke,

Wie würde denn dann die Programmierung aussehen?
Hätte hier einen Atmega1281, Atmega8515 noch rum fliegen, nur an den 
Multiplexern haperts ein bischen.

Dann benötige ich für das Auslesen dennoch die A0-17 Ports?

von Max (Gast)


Lesenswert?

geht es darum das teil einmalig einzulesen (sicherungskopie) oder um 
einen professionellen "reader" der dauerhaft eingesetzt werden soll ?
für so ne einmalaktion lohnt sich ein imho ein mega128 nich (layout 
nötig), aber wenn man was professionelles (evtl. erweiterbares) will tut 
mehr flash immer gut...
PS: für ne einmalaktion reicht theor. sogar ein tiny2313 mit externen 
schieberegistern (is nich so teuer wenn was falsch angeschlossen und 
dein chip wegbruzelt).

von Eprommer (Gast)


Lesenswert?

Primär für die Sicherung 5 EPROMs des selbigen Typs.

Wie würde denn eine solche beschaltung aussehen?

von Hc Z. (mizch)


Lesenswert?

Eprommer schrieb:
> Dann müsste ich ja Die Steuerleitungen ChipEnable (e) und G (Output
> Enable) auf High setzten

CE und OE sind low aktiv, erkennbar am Querstrich im Blockschaltbild. 
Da das zwei Leitungen sind, ist das das

> "Two Line Output Control"
> aber damit kann ich nichts anfangen,

von Eprommer (Gast)


Lesenswert?

Naja, das ist auf jedenfall schon mal gut zu wissen.

von Eprommer (Gast)


Lesenswert?

Gibt wohl nicht sehr viele, die mir hier eventuell weiterhelfen könnten?
Hab in Google bisher auch nichts tolles gefunden..

von Wahhhhhhh (Gast)


Lesenswert?

Eprommer schrieb:
> Gibt wohl nicht sehr viele, die mir hier eventuell weiterhelfen könnten?
Sach mal, was erwartest du? Dass dir hier jemand ein fertiges Programm 
serviert?

> Hab in Google bisher auch nichts tolles gefunden..
Dann suchst du falsch. Zweiter Treffer ist ein Datenblatt vom EEPROM, 
dazu das Datenblatt vom µP, der Rest wurde hier erklärt oder steht in 
zig Tutorials die es überall im Netz gibt.

von Eprommer (Gast)


Lesenswert?

Ich erwarte hier kein vollständiges Programm!

Ich habe bereits gefragt, wie ich das EEPROM am besten an einen AtMega 
anschließen könnte, oder wie ich das Abfragen kann, das wird wohl nicht 
so wie in den Tutorials für I2C EEPROMs funktionieren.

Wenn es doch Zig Tutorials dazu gibt, dann kannst du gerne mal paar 
Posten, das Datenblatt hab ich dazu schon selbst auf dem Rechner.

von Wahhhhhhh (Gast)


Lesenswert?

>Datenblatt hab ich dazu schon selbst auf dem Rechner.
Lesen! Paragraph 2.2 beschreibt den "Algorithmus" (mit 3 
Anführungszeichen) welcher nur noch in eine beliebige Programmiersprache 
umgesetzt werden muss...
>Wie würde denn dann die Programmierung aussehen?
... und dafür gibts Tutorials, z.B. 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial wenn es C sein 
soll.

Sollten die Portpins nicht reichen hilft 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister .

Reicht das?

von Wahhhhhhh (Gast)


Lesenswert?

Verzeihung, es ist Paragraph 2.1.

von Eprommer (Gast)


Lesenswert?

Ja okay..

Benötige ich nun zum Lesen die A0-17 Pins oder reichen mir lediglich die 
O0-7 Pins?

von Klaus D. (kolisson)


Lesenswert?

A0-17 Pins -> Adresse anlegen
(fängt bei 0 an und hört bei  262143 = 111111111111111111 auf)
Also 0 anlegen,
auf dem Datemport lesen
1 anlegen und
auf dem Datemport lesen

immer so weiter.

Gruss Klaus

von Skipper (Gast)


Lesenswert?

Zitat: "Primär für die Sicherung 5 EPROMs des selbigen Typs."

Irgendwie steh ich auf'm Schlauch....

Wenn ich die Daten will, dann nehme ich ein entspr. Programmiergerät und
lese die EPROMs damit aus.

Und ein Programmiergerät ist auch nötig, um Dublikate zu erstellen.

Oder willst Du die Daten dann auch noch modifizieren?
(Motorsteuergerät, BIOS, ...)

von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

ich habe das vor einigen Jahren mal gemacht, war ein EEPROM mit 12 oder 
13 Adresspins ich habe diese mittels 2 74HC573 Latches angesteuert. Und 
nur 1 Port für die Latches +4 Pins für die Steuerung des EEPROMs und der 
Latches benutzt. Auf die schnelle habe ich die ersten Versuche noch 
hier, habe Sie gerade durchgesehen und die Komentare geradegerückt, habe 
da anscheinend nur die unteren 8 Adressen ausprobiert waren wie gesagt 
die allerersten Versuche. Aber vielleicht könnt ihr damit schon etwas 
anfangen.

von Peter D. (peda)


Lesenswert?

Du kannst die Adressen auch über 2 * 74HC4040 erzeugen, dann brauchst Du 
nur 2 IO-Pins zum MC (Rücksetzen, Zählen).

Also insgesamt 10 IOs.


Peter

von Thomas (kosmos)


Lesenswert?

ok um den Speicher von 0-xyz komplett lesen oder beschreiben ist ok. 
Wenn ich aber von Speicherstelle 0 auf 10514 will vergeht schon etwas 
Zeit wenn ich das reinzählen muss. Da fährt man mit 12 Pin besser wobei 
man hier auch noch was einsparen kann, bin mir nicht mehr sicher ob ich 
die Latches immer auf OE gelagt habe oder per µC ansteuere.

von JW (Gast)


Lesenswert?

Hallo Thomas,

Du kannst die 4040er ja "parallel" betreiben, d.h. jedes kann einzel 
getakted werden. Dann sind's nicht 2**24 sondern nur 2*12, bzw. 2**9 
statt 2*18, wenn Du nur 18 Adresspins hast.

Gruß,
Jürgen

von Karl H. (kbuchegg)


Lesenswert?

Eprommer schrieb:
> Ja okay..
>
> Benötige ich nun zum Lesen die A0-17 Pins oder reichen mir lediglich die
> O0-7 Pins?

Alleine für diese Fragestellung sollte man dir die Lizenz entziehen.

von Hilfestellung (Gast)


Lesenswert?

AVR mit 40Pins (keiner mit ADC), dann Daten-, Adress- und 
Steuerleitungen
an Ports und Lesevorgang "händisch" nach Datenblatt programieren
-> Fertig
ist halt "etwas" Verdrahtungs- und Programmieraufwand.
ciao.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Eprommer schrieb:
> Primär für die Sicherung 5 EPROMs des selbigen Typs.

Schick sie mir mit einem frankierten Rückumschlag, und ich sende dir
die Daten zu.  Das geht schneller, als dir hier zu erklären, wie man
einen EEPROM anschließt und dir dann auch noch ein Programm zu
liefern.

von Eprommer (Gast)


Lesenswert?

Hallo,

Danke für die vielen Kommentare.

Karl heinz Buchegger @ Sorry, aber ich habe bisher nur mit I2C EPROMs 
gearbeitet und nicht mit solchen alten 40 Pin EPROMs, ist es daher nicht 
verständlich das es einen gewaltigen Unterschied zwischen normalen 
EPROMs und I2C Eproms die man lediglich über 2 Leitungen abfrägt, gibt?

Es tut mir leid, wenn man eben nicht alles weiß und ein Forum zum 
nachfragen nutzt.

Danke @ DL8DTL für dein Angebot, werde evtl. drauf zurück kommen :-)

von Karl H. (kbuchegg)


Lesenswert?

Eprommer schrieb:

> Karl heinz Buchegger @ Sorry, aber ich habe bisher nur mit I2C EPROMs
> gearbeitet und nicht mit solchen alten 40 Pin EPROMs, ist es daher nicht
> verständlich das es einen gewaltigen Unterschied zwischen normalen
> EPROMs und I2C Eproms die man lediglich über 2 Leitungen abfrägt, gibt?

Gibt es.
Aber auch dir muss klar sein, dass man irgendwie dem EEPROM mitteilen 
muss, von welcher Speicherzelle es die Daten auslesen soll.
Wenn du bereits I2C EEPROMs ausgelesen hast, dann hast du dem die 
Adresse über I2C geschickt. Bei dem hier muss man auf den 
Adressleitungen die Adresse einstellen. Also im Grunde noch viel 
primitiver als ein I2C EEPROM, weil es kein Protokoll oder dergleichen 
einzuhalten gilt. Aber wenn du im Datenblatt 'Adressleitungen' liest UND 
weißt wie ein I2C EEPROM ausgelesen wird (das man eine Adresse angeben 
muss), dann muss es bei dir klingeln, wofür die Adressleitungen wohl gut 
sind.

Adresse A an den Adressleitungen anlegen
Mit den Steuerleitungen laut Datenblattvorschrift wackeln
Das EEPROM legt die von der angegebenen Adresse gelesenen Daten auf die 
Ausgangspins.
µC holt sich das Datum von den Datenleitungen ab.

Fertig mit auslesen des gespeicherten Datums von der Adresse A.


Ein Forum in der Hinterhand zu haben entbindet nicht vom eigenständigen 
denken. Gerade ältere Technologien (ab etwa 1970, davor war vieles 
ausgesprochen trickreich) sind meistens unglaublich primitiv. Je 
einfacher und naheliegender du daher mit deiner Denkweise an die Sachen 
rangehst, desto näher liegst du oft an der Wahrheit.

von Eprommer (Gast)


Lesenswert?

Danke,

Leider empfand ich vor den ganzen Beiträgen die Thematik mit den älteren 
EEPROMs, "frickeliger" als ein I2C, wo man einfach sein Protokoll 
schreibt.

Aber klar, ich hab das Datenblatt so Interpretiert, das man lediglich 
über die "Two wires" lesen kann.

Aber wenn's natürlich so einfach funktioniert, werd ich das auf 
jedenfall mal testen, und mich dieser Primitiven sache nicht geschlagen 
geben :-)

Dennoch danke für deine Antwort! :)

Ich werde jedenfalls berichten wie's ausgegangen ist!

von Wahhhhhhh (Gast)


Lesenswert?

@Karl heinz Buchegger
> Alleine für diese Fragestellung sollte man dir die Lizenz entziehen.
Welche Lizenz?

von Erich (Gast)


Lesenswert?

@Eprommer
Schonmal drangedacht, irgendwie vorort eine Schule oder ein Uni-Labor zu 
finden, wo noch ein Eprom-Programmiergerät rumliegt ?
(Und jedmand da ist, der es bedienen kann).

Oder -wie bereits angeboten- an Jörg Wunsch schicken...

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.