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
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
Irgendwie ist mein Dateianhang nicht dabei? Ich probiers noch mal
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
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.
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
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).
Wenn ich die Lösung hier mit dem Aufwand von PonyProg vergleiche, kann ich nur sagen: "Kanonen auf Spatzen"...
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.
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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.