Speichern von Daten in einem Externen EEPROM mit PIC18
Habe ich PIC18F87J11 mit 25LC1024 externen EEPROM, und ich möchte, um zu speichern einige Daten über Sie und können Sie später Lesen. Ich habe einige der Forschung getan, aber leider konnte ich nicht finden, ein tutorial verwendet, ähnlichen board wie meins. Ich verwende MPLAB IDE mit C18-compiler.
Hinweis: zwei weitere links geschrieben, als Kommentar unten.
Dies ist, wo mein problem ist ...
Um zu schreiben, um die 25LC1024 externen EEPROM-ich folgte der Anleitung von microchip. Das erste problem ist, dass dieses tut geschrieben für PIC18F1220 und ich bin mit PIC18F87J11. So auf das Projekt zu öffnen bekomme ich zwei Dateien nicht gefunden Fehler, aber ich kann einfach ignoriert haben.
Kopiert habe ich die Datei AN1018.h und AN1018_SPI.c dem Projekt an dem ich arbeite, und ich kopierte einige Stück code aus AN1018.c Datei.
Code von AN1018.c-Datei
void main(void)
{
#define PAGESIZE 16
static unsigned char data[PAGESIZE]; //One-page data array
static unsigned char i;
init(); //Initialize PIC
data[0] = 0xCC; //Initialize first data byte
/* Low-density byte function calls */
LowDensByteWrite(data[0], 0x133); //Write 1 byte of data at 0x133
data[0] = 0xFF;
LowDensByteRead(data, 0x133);
printf("%x",data);
while(1){};
}
void init(void)
{
ADCON1 = 0x7F; //Configure digital I/O
PORTA = 0x08; //Set CS high (inactive)
TRISA = 0b11110111; //Configure PORTA I/O
PORTB = 0; //Clear all PORTB pins
TRISB = 0b11111100; //Configure PORTB I/O
}
Mein zweites problem ist, dass die output-message ist immer 1e0. In anderen Worten, ich weiß nicht, ob der Schreibvorgang erfolgreich war oder nicht. Auch ich bin nicht sicher, was ich möglicherweise fehlen.
Wenn ich in irgendeiner Art helfen können, würde ich mich freuen. In der Summe alles, ich will zum speichern von Daten auf meine externe EEPROM und bewahren Sie Sie, wenn nötig. Bitte wissen, ich bin ein Anfänger mit Mikrocontroller-Programmierung.
Erste, nicht die hardware-arbeiten, - wenn Sie einen Bereich und/oder digital-analyser auf die EEPROM-pins werden die Signale der Ankunft an, Wann Sie die 'LowDensByteRead' genannt wird?? Bis dies aasured, es ist unsinnig, suchen auf diesem code noch tiefer.
InformationsquelleAutor cookie monster | 2013-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als ersten Schritt (vor dem Lesen & schreiben), müssen Sie sicher sein, dass dein SPI-interface (hardware und software) richtig konfiguriert ist. Zu überprüfen, in diesem Schritt können Sie das Lesen "- Status-Register" aus der 25LC1024. Schauen Sie das Datenblatt für "RDSR", die Anweisung zum senden der eeprom sollte 0b00000101 so (int)5.
Hier einige code für 18F* + 25LC* wirtten in sdcc ein wirklich altes Projekt. Der code ist sehr einfach, keine externe Bibliothek verwendet, müssen Sie nur zu ersetzen, die register-variable-Namen und init-config für dein pic.
Code kommt aus hier, Dank bitberzerkir!
spi.c
eeprom.c
Hinweis: Da die Adresse von 25LC1024 sind 3x8bits stellen Sie sicher, dass Ihr compiler "long" - Typ hat mindestens 24bit
main.c
Stellen Sie Ihre init laut Datenblatt
Wenn Sie möchten, Lesen Sie/schreiben Sie einen Puffer kümmern sich um die Paginierung. ZB hier:
InformationsquelleAutor tuxone
Ich denke, bevor Sie direkt mit dem AN1018.h/AN1018_spi.c Sie brauchen, um zu überprüfen, dass es kompatibel mit Ihrem micro-controller. Ich empfehle zu prüfen, das Datenblatt der beiden micro-Controller und sehen Sie den Unterschied, die speziell für das SPI Modul als externen EEPROM, die Sie verwenden, wird eine Verbindung zum SPI-bus. Wenn diese beiden micro-controller hat die gleichen register Konfiguration/Modul für SPI-dann können Sie es verwenden, sonst werden Sie haben, den Treiber zu schreiben auf Ihrem eigenen. Sie können AN1018_spi.c für die Referenz, die ich denke, Sie brauchen nur zu ändern einiger Register, falls erforderlich.
Dann sind Sie in der init-Funktion, Sie sind nicht initialisieren SPI-Modul verwenden, müssen Sie angeben, korrekt SPI Uhr SPI-Modus basierend auf Ihrem externen Gerät. Sobald Sie richtig initialisieren SPI-Modul. Sie müssen schreiben EEPROM_Read/EEPROM_Write-Funktion. In dem Sie haben, um folgende Protokoll gegeben im Datenblatt des externen Geräts für das senden/empfangen von Daten vom Gerät verwenden.
InformationsquelleAutor praks411
Hallo ich gegoogelt und erhalten eine sehr gute website gefunden, Wo ich posten auf die Anbindung externer EEPROM mit PIC-Mikrocontroller via i2c-Protokoll mit dem FM24C64 und den code, die Sie in der post, die ich getestet und funktioniert Prima. ich gebe zu, dass link vielleicht hilft es dir. http://www.nbcafe.in/interfacing-external-eeprom-with-pic-microcontroller/
InformationsquelleAutor user3220494