www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PCF8574 Routine in C


Autor: Fichte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hay @all

Ich habe eine Frage ich habe einen PCF8574P an meinen Mega16.

Nun möchte ich an diesen IC LED´s Ansteuern.
Im Normalfall geht das ja im Mega16 mit
PORTA.1=0 oder =1

Aber wie funktioniert es den bei der I2C Sache.???

Angafangen habe ich schon mal mit den Standart Werten.

#define EEPROM_BUS_ADDRESS 0xa0

/* read a byte from the EEPROM */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}

/* write a byte to the EEPROM */
void eeprom_write(unsigned char address, unsigned char data) {

i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();

/* 10ms delay to complete the write operation */
delay_ms(10);
}

Die Adresse A0 Stimmt. da ich A0-A2 auf GND geschlossen habe.

Aber nun komme ich mit dem Befehlen nicht zurecht Sprich:

eeprom_write(address,data);

die kann ich die LED´s ein und aus schalten?

MFG: Fichte

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
die Adressbereich vom PCF8574 geht von fängt bei 0x40 an.
0xA0 ist eine Adresse eines EEPORMs.

Gruss
Andreas

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wo hast Du denn den EEPROM_Write Befehl her?
Wenn ich mich recht entsinne musst Du zuerst schreiben (auch wenn Du
die  Pins als Eingang benutzt) und kannst dann zurücklesen.

Gruss
Andreas

Autor: Fichte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die befehele sind im Codevision in der Hilfe Datei so vorzufinden.

Ob da nun EEPROM_Write oder was anderes steht denke ich mal ist doch
egal Hauptsache ist doch das er auf den I2C schreibt oder liest oder?


MFG: Fichte

Autor: Eugen Kannsnet (kannsnet)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
wie kommt man eigentlich auf die adresse 0x40, also ich hab im 
datenblatt (Seite 9) geschaut und da ist die slave adresse 0b0100A2A1A0, 
d.h. die adresse müsste doch 0x20 bis 0x27 sein, oder täusch ich mich?

gruß
eugen

Autor: Eugen Kannsnet (kannsnet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaub ich seh es, bei 0x20 beginnt die slave adresse und bei 0x40 
gehen die daten los. Das heißt data 1 geht bei 0x40 los, data 2 müsste 
ja dann bei 0x4000 starten oder?

gruß eugen

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.