Forum: Projekte & Code I2C EEPROM-Brenner M24C01,C02,C04,C08,C16,C32,C64


von Michael (Gast)


Lesenswert?

Hallo,

ich möchte hier meinen I²C-EEPROM-Brenner vorstellen, der aus einer in 
Delphi programmierten PC-Software und einen PIC16F877 oder PIC16F876 als 
Hardware aufgebaut ist.
Damit können I²C-EEPROMs des Typs: 
M24C01,M24C02,M24C04,M24C08,M24C16,M24C32 und M24C64 beschrieben, 
ausgelesen(und als File abgespeichert) und gelöscht werden. Auch können 
Hexfiles (allerdingst keine Intel-Hex-Files, vielleicht implementiere 
ich das auch noch) geladen und geschrieben werden, wobei der Aufbau der 
Hexfile volgendermassen aussieht:
Jedes Hexbyte wird mit einem h eingeleitet. Nach diesen h's sucht mein 
Programm und speichert die zwei Nachfolgende Hexzeichen in ein Array 
(vorher wird noch überprüft, ob es sich dabei auch wirklich um 
Hexzeichen handelt), zusätzlich kann noch die Zieladresse ins Hexfile 
geschrieben werden (kann aber nachträglich noch geändert werden) in der 
Form: Hex=.... (bsp. Hex=01A0), wo das in der Hexfile steht ist relativ 
egal, auch können Komentare einfach mit eingeschrieben werden. Es muss 
nur darauf geachtet werden, dass nicht sowas wie bsp. habedere vorkommt, 
denn sonst meint das Prog es handelt sich um den Hexwert AB.

Zum Hardwareaufbau ist eigentlich nicht viel zu sagen: Einfach einen 
PIC16F877 oder PIC16F876 mit 20Mhz Quarz nehmen, einen MAX232 
anbriengen, das EEPROM zusammen mit den passenden Hochziehwiderständen 
(ca. 1,8k) an die Daten und Clockleitungen des I²C Interfaces 
anschliessen. Die Enable-Leitungen E2,E1,E0 können jeweils an Plus oder 
Masse angeschlossen werden, allerdings müssen die Zustände der 
Adressleitung (E2,E1,E0) durch Setzen von Hacken im Prog unter 
Geräteadresse angegeben werden.

Verbesserungvorschläge sind erwünscht, Bugs bitte mir mitteilen.

MFG Michael

von Michael (Gast)


Lesenswert?

Eigentlich hatte ich denn Brenner nur für mich gebaut, weil ich für mein 
aktuelles Projekt (eine Wetterstation mit GLCS) einen Programmer für 
EEPROMs brauchte. Deshalb hab ich momentan die Zeit nicht, einen 
Programmer für sämtliche EEPROMs zu bauen, aber später werde ich 
nochmals zu dem Thema zurüchkommen.

PS.: Bei mir läuft der Programmer an USB (FT232RL), die Stromverorgung 
ebenfalls

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Irgendwie ist mein Dateianhang nicht dabei? Ich probiers noch mal

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Version 1.6

Changelog:
-Sprachfile mit Sprache Deutsch und Englisch vollständig (weitere können 
hinzugefügt werden)
-Device.ini mit spezifischen Daten der verschiedenen I²C EEPROMs 
(MC24C01 bis 64, AT24C128, AT24C256 bereits eingetragen, kann mit 
beliebieg vielen I²C EEPROMs erweitert werden (max. EEPROM-Größe 
32768Byte)) (>'Device.ini_ReadMe.txt' erklärt den Aufbau der Device.ini)
-Fortschrittsbalken beim Löschen hinzugefügt

Da ich in der nächsten Zeit mit meinem Wetterstationsprojekt beschäftigt 
bin, wird es in nächster Zeit keine Aktualisierungen geben (außer jemand 
hat einen Bug entdeckt, der wird natürlich sofort behoben), wenn ich 
damit fertig bin, werd ich versuchen, weiter EEPROM-Typen (SPI, 
Microwire, etc.) einzubauen.

MFG
Michael

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, hab im Post davor die Hexdatei und die Device.ini-Readme.txt 
vergessen,
btw. verwechselt mit dem Quellcode ;-). Hier nochmal das neuste und 
komplette Packet.

von Da K. (studentdk)


Lesenswert?

Hallo,

ich hoffe das ich noch eine Antwort bekomme, da der Post dieses 
Beitrages nun doch schon etwas länger her ist.

Ich habe den Brenner mit einem PIC16F877 nachgebaut, den Controller 
programmiert und alles macht auf den ersten Blick einen sehr guten 
Eindruck! Jedoch bekomme ich jedes Mal wenn ich versuche mit dem 
Controller zu kommunizieren den Fehler:

Fehler: Zeitüberschreitung
Es ist ein Übertragungsfehler aufgetreten! Keine Antwort vom Brenner

Wenn ich mit dem Oszilloskop nachmesse kann ich das auch nachvollziehen, 
da die Signale vom PC zwar bis zum Controller kommen, von dort aus 
jedoch keine weitere Initiative ausgeht, weder auf dem TxD noch auf dem 
SDA oder SCL.

Den Quarz habe ich nachgemessen der schwingt mit 20MHz. Habe auch schon 
zwei weitere Controller probiert. Diese verhalten sich genau gleich.


Hoffe das mir jemand helfen kann!

Danke

Daniel

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

So wies aussieht rennt also das Programm nicht los.
Ich würde zuerst mal gucken, ob alle Löstellen in Ordnung sind, vlt 
nochmal jeden Lötpunkt, der etwas "schräg" aussieht kurz mitm Lötkolben 
antippen und flicken. Fehlen vlt irgendwelche Brücken? 
"Grundbeschaltung" des Controllers in Ordnung (RS232 Teil, 
Spannungsversorgung, Reset, ...)?

Wenn du dir damit sicher bist, dann vergleiche mal Aufbau mit Sourcecode 
und/oder Schaltplan (soll ja auchmal vorkommen, dass im Code was anderes 
is, als im Plan).

von Route_66 (Gast)


Lesenswert?

Wenn ich die Lösung hier mit dem Aufwand von PonyProg vergleiche, kann 
ich nur sagen: "Kanonen auf Spatzen"...

von Da K. (studentdk)


Lesenswert?

Also das Programm läuft an! Das sehe ich ja daran das der Quarz anfängt 
zu schwingen.
Das Layout habe ich jetzt auch noch einmal kontrolliert da scheint auch 
alles ok zu sein.

Eigentlich müsste der Controller nachdem er die Daten über die RS232 
Schnittstelle bekommen hat ja anfangen sie auf die I²C Schnittstelle zu 
übertragen. Aber das macht er nicht da ich weder am SCL noch am SDA Pin 
etwas sehen kann wenn ich nachmesse.

von Sebastian (Gast)


Lesenswert?

Sind die Fuses des PIC denn richtig gesetzt?

von Da K. (studentdk)


Angehängte Dateien:

Lesenswert?

Ich habe bei den Fuses eigentlich nichts geändert.
Kenne mich mit MPLAB auch nicht so gut aus.
Wenn die Fusebits unter Configure -> Configuration bits zu finden sind, 
stellen sie sich aber beim Impotieren des Codes von alleine ein.
Hab das Ganze mal in einem pdf ausgeben lassen und mitgeschickt.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Also das Programm läuft an! Das sehe ich ja daran das der Quarz anfängt
>zu schwingen.

Der schwingt auch, wenn kein Programm drin ist....

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.