Hallo!
Dachte ich habs verstanden aber komme doch nicht weiter. Hab mir zwei Funktionen read und write gemacht, damit ich die nur aufrufen brauch.
Erstmal der Code:
Code:void write(unsigned char adr, unsigned char dat) { /* PortA ganz auf Ausgang */ (...) /* Bits nach links hochschieben */ adr <<= 4; dat <<= 4; /* Adresse anlegen */ PortA = B00000011 | adr; /* Chip Select */ PortA = B00001011 | adr; /* ALE Impuls -> Adresse uebernehmen */ PortA = B00001111 | adr; PortA = B00001011 | adr; /* WR auf Low, Daten schreiben */ PortA = B00001010 | dat; /* Schreiben abschliessen */ PortA = B00001011 | dat; /* Chip Deselect */ PortA = B00000011 | adr; /* alles auf Anfang */ PortA = B00000011; }
Und Lesen:
Also laufen tuts aber funktioniert leider nicht.Code:unsigned char read(unsigned char adr) { unsigned char dat; /* PortA ganz auf Ausgang */ (...) /* Bits nach links hochschieben */ adr <<= 4; /* Adresse anlegen */ PortA = B00000011 | adr; /* Chip Select */ PortA = B00001011 | adr; /* ALE Impuls -> Adresse uebernehmen */ PortA = B00001111 | adr; PortA = B00001011 | adr; /* WICHTIG: linken 4 Bits auf Eingang */ (...) /* RD auf Low, Daten lesen */ PortA = B00001001 | adr; dat = PortA >> 4; /* Lesen abschliessen */ PortA = B00001011 | adr; /* Chip Deselect */ PortA = B00000011 | adr; /* PortA wieder ganz auf Ausgang */ (...) /* alles auf Anfang */ PortA = B00000011; return dat; }Und weil man nicht in den Chip reingucken kann, weis ich nicht so wirklich wo der Fehler sein könnte. Wär das so prinzipiell richtig?
mfg
Mika







Zitieren

Lesezeichen