Also das I²C Problem hat sich wohl gelöst.
Ich Depp habe vergessen, dass das EEPROM eine 16-Bit Adresse hatte und beim PSoC habe ich ein Byte zuviel gesendet, da ich dachte man müsse einen Pointer setzen ab wann man das EEPROM auslesen will.
Wenn ich aber nur
i2cget -y 0 0x40
sende, statt wie vorher
i2cget -y 0 0x40 0x00
klappt es 1a.
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Ja aber erstmal nur mit dem EEPROM. Den PSoC kann ich bisher nur auslesen aber mit dem Schreiben weiß ich noch nichts neues.
Da kommt immer ein Error :/
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Heyho,
hab mal wieder bisschen rumgespielt und dabei ist ein Programm rausgekommen um eine DS1307 auszulesen (gar nicht gewusst das man das Ding nicht mit 3,3V betreiben kann. Habs erst gemacht und dann gewundert warum ich das Ding nicht im Bus gesehen habe..... -.-)
Code:// Compile with: GCC /Programme/DS1307.c -o /Programme/DS1307 #include <stdio.h> #include <stdlib.h> #include <linux/i2c-dev.h> #include <linux/i2c.h> #include <fcntl.h> #include <string.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #define Buffer 7 char BCD2D(char Wert) { return (Wert%16 + 10 * (Wert/16)); } int main() { int File; char Device[] = "/dev/i2c-0"; char RTC = 0x68; char Date[7]; int i; if ((File = open("/dev/i2c-0", O_RDWR)) < 0) // I²C aktivieren { printf("I²C Modul kann nicht geladen werden!\n"); return -1; } if (ioctl(File, I2C_SLAVE, RTC) < 0) // Port und Adresse setzen { printf("Deviceadresse wurde nicht gefunden!\n"); exit(1); } Date[0] = 0; // Pointer auf Adresse 0 (Startadresse) setzen if(write(File, Date, 1) != 1) { printf("Fehler beim Schreiben der Daten!\n"); return -1; } if (read(File, Date, Buffer) != Buffer) { printf("Fehler beim Lesen der Daten!\n"); return -1; } else { // Werte von BCD in Dezimal umwandeln for(i = 0; i < Buffer; i++) { Date[i] = BCD2D(Date[i]); } printf("DS1307 Ausgabe"); printf("\n"); printf("\n"); // Uhrzeit ausgeben printf("Stunden: %d", Date[2]); printf("\n"); printf("Minuten: %d", Date[1]); printf("\n"); printf("Sekunden: %d", Date[0]); printf("\n"); // Tage ausgeben printf("Jahr: 20%d", Date[6]); printf("\n"); printf("Monat: %d", Date[5]); printf("\n"); printf("Tag: %d", Date[4]); printf("\n"); printf("Wochentag: %d", Date[3]); printf("\n"); } close(File); return 0; }
Geändert von Kampi (10.10.2012 um 22:11 Uhr) Grund: Code aktualisiert
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Laesst du deine I2C Funktionen im main()?
Ich hab mich gestern noch ein wenig mit C befasst (kompletter C-Anfaenger) und angefangen dass nach bestem Wissen und Gewissen in Funktionen und in separate files zu packen.
Vllt. kann ich dich ja als debug user begeistern wenn ich fertig bin
(bevor ich wieder erschlagen werd, ja ich bin mir sicher da gibts schon *.h und *.c files fuer, aber der Lerneffekt... )
Nam et ipsa scientia potestas est..
Das Programm nutze ich jetzt eh nimmer. Hab mein Raspberry Pi so eingestellt, dass es die Uhrzeit aus der DS1307 holt. Dadurch wird die RTC quasi blockiert und die Systemzeit des Pis immer aktuell.....netter kleiner Stolperstein war noch die Zeitzone....hab mich gewundert warum die Zeit dauernd zwei Stunden hinterher ging ^.^
Aber ansonsten wüsste ich bei dem Programm keinen Grund die Sachen nochmal in Funktionen zu packen.
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Also ich habe eben nochmal bisl rumprobiert (diesmal mit einem anderen PSoC Board).
Das Lesen klappt auf einmal problemlos.......sogar mit dem ersten Board.....
Schreiben schlägt noch immer fehl......aber zumindest habe ich jetzt meine CapSense Tasten am Pi hängen und kann die auswerten. Bei denen brauche ich eigtl nicht schreiben ^.^
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hey,
ich wollte nur mal einen aktuellen Stand posten......
Ich habe es nun mittlerweile geschafft den PSoC als Slave zu nutzen.
Der Fehler war anscheinend die Geschwindigkeit. Mit 100k kann ich nur lesen und nicht schreiben. Aber bei 400k klappt beides (hätte ich mal früher drauf kommen können dies zu testen >.<)
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hey wo bekomm ich die includes für das I"c auf dem Pi her ??
Bin gerene bereit Hilfe zu leisten, freue mich wenn auch mir geholfen werden kann.
Entschuldigt bitte Rechtschreibfehler falls welche vorkommen
Die sind schon auf dem Pi. Ich habe zumindest nichts installieren müssen.
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen