www.mikrocontroller.net

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


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie ist mein Dateianhang nicht dabei? Ich probiers noch mal

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Da Kn (studentdk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Route_66 (Gast)
Datum:

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

Autor: Da Kn (studentdk)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind die Fuses des PIC denn richtig gesetzt?

Autor: Da Kn (studentdk)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.