PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC16F876 mit externem EEProm erweitern



Staudi
25.10.2006, 13:06
Ich möchte gerne einen PIC16F876 extern mit einem EEPROM erweitern, da dieser EEPROM mit Daten gefüllt werden soll, die in den normalen Speichher nicht reinpassen. Welchen EEPOM´s kann ich benutzen, wie schließe ich diese EEPOM´s an dn PIC an und was sollte ich noch beachten.

Vielen Dank für Eure Hilfe!
Staudi

BigWumpus
25.10.2006, 23:28
Du kannst serielle EEPROMS nutzen - SPI oder I2C. Also 24xxyy oder 93xxyy oder was auch immer !
Ein 16F876 hat alle Hardware-Schnittstellen für SPI oder I2C und kann auch alles in Software simulieren.

Physikus
27.10.2006, 12:50
Hallo zusammen!
Entschuldigung für meine "Unbildung": Kann man an einem PIC Mikrocontroller auch die guten alten EPROMs (Ja die mit dem Glasfenster; natürlich schon programmiert) über einen Wandler anschließen? Wenn ja, was muß man dabei beachten? Kann in modernen seriellen externen ROM-Bausteinen auch Programmcode abgelegt werden oder "nur" Daten, z.B. Lookup-Tabellen oder diverse Zeichenketten?
CUL8A Euer Physikus.

BigWumpus
27.10.2006, 13:00
Ja, man kann diese alten EEPROMs über "Wandler" anschließen. Ist mega-aufwendig.

In externen Speicher kann man keinen Programmcode ablegen, nur Daten.

Mobius
27.10.2006, 18:25
In externen Speicher kann man keinen Programmcode ablegen, nur Daten.Stimmt schon, außer du baust dir einen wirklichen Parser, der dir je nach eingelesenem Befehl eine anderen im programmcode abgespeicherten Befehl ausführt. Ist Mega aufwendig und meist ist es einfacher das Programm intern abzuspeichern, schon weil das Interface für den EPROM/Flash-Speicher sehr schnell sehr Portintensiv wird. Lohnt sich echt nur, wenn man ein vorprogrammiertes Programm hat und es versucht mit einem PIC zum Laufen zu bringen (zum Beispiel das BIOS einer ISA-Graca zu interpretieren). Wobei sich es beim Beispiel schon lohnt den EPROM auszulesen und mittels disassembler den eigentlich Code in x86-Asm zu bekommen und diesen dann einfach auf PIC-Code umzuschreiben.

Wie gesagt, für lookup Tabellen lohnt es sich nur, wenn du 1. viele unbenutzten Pins hast (viele = min 2 Ports, oder es wird sehr langsam, ich sag nur shiftregister) und 2. diese echt nicht in den PIC-Speicher passen. Wenn ich erlich sein soll, ich hab bis heute nie die 2k Grenze bei PIC-Programmen überschritten und das war ein Sinus-Generator mit 2 lookup Tabellen.
MfG
Mobius

Staudi
28.10.2006, 00:35
Danke erstmal. Die Daten die ich im externen EEPROM ablegen möchte sind Audiodateien. Kurz und knackig. jeweils ca. 0,5 bis 1 sekunde lang. Genauer gesagt 13 Audiodateien. Das dürfte doch machbar sein,oder.
Gruß
Staudi

BigWumpus
28.10.2006, 10:40
Ja,
aber ich kann nur dringend empfehlen, auf brauchbare serielle Speicher umzusteigen, statt an den super-schwierigen parallelen Speichern festzuhalten.

dieta
28.10.2006, 11:04
Pollin hat unter Bauelemente --> Aktiv --> ICs --> EPROMs auch EEPROMs mit I²C-Interface ab 30ct (8x1024).

Mobius
30.10.2006, 17:03
Audiodaten? Hast du dir mal durchgerechnet, wie viel speicher du für 13 (oder 6,5) Sekunden brauchen wirst? Weil, eine gute Sample-Qualität erreichst du erst ab *schätz* 4000 Samples/Sekunde, zumindest ist das die minimale Samplerate um Sprache zu digitalisieren. Das sind, ohne dass auch nur eine minimale Kompression anlegt von 26 bis maximal 52 kByte an Daten. Diese kannst du noch um die Hälfte verkleinern, solltest du eine 4 Bit Differential Pulse Code Modulation anlegen. Damit wären wir bei 13 bis 26 kByte.
Auch musst du bedenken, dass du die abgespeicherten Daten anschließend wieder mit 4kHz durch einen DA-Wandler (sei es nur ein R2R-Netzwerk) jagen musst. Da ich annehme, dass der I2C-Protokoll diese Datenrate nicht schafft wirst du nicht umhin kommen, zuerst erstmal die Daten aus dem EEPROM auszulesen und diese (zumindest Teilweise) in die Memory zu laden.

Naja, sind nur einige Gedanken.
MfG
Mobius

BigWumpus
30.10.2006, 20:15
Taktrate zu I2C-EEPROMs ist mindestens 100kHz - in Wirklichkeit eher 1MHz.
DA-Wandler steuere ich per SPI mit 3MHz an.
Timing ist hier nicht das Problem !

kalledom
31.10.2006, 13:28
Hallo,
eine Ansteuerung von parallelen Speicherbausteinen läßt sich mit 11 bis 12 I/O-Pins realisieren:
Py.0...7 = AD0...7 = Adress / Data 0...7
Px.0 = ALL = Adress Latch Low
Px.1 = ALH = Adress Latch High
Px.2 = RD# = Read (low-aktiv)
Px.3 = WR# = Write (low aktiv) (entfällt bei Nur-Lese-Bausteinen)