- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 61 bis 70 von 70

Thema: Raspberry Pi I2C

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #26
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    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 21: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

Ähnliche Themen

  1. [ERLEDIGT] Raspberry Pi GPIO
    Von Kampi im Forum Raspberry Pi
    Antworten: 4
    Letzter Beitrag: 04.11.2012, 22:45
  2. [ERLEDIGT] Raspberry Pi Übertakten
    Von Kampi im Forum Raspberry Pi
    Antworten: 2
    Letzter Beitrag: 21.09.2012, 22:03
  3. [ERLEDIGT] Kommunikation AVR <-> Raspberry
    Von Goldenflash im Forum Raspberry Pi
    Antworten: 6
    Letzter Beitrag: 04.09.2012, 08:30
  4. Raspberry PI Lieferzeit
    Von Thalhammer im Forum Offtopic und Community Tratsch
    Antworten: 9
    Letzter Beitrag: 01.08.2012, 16:12
  5. Verkaufe Raspberry Pi zu verkaufen
    Von FD im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 8
    Letzter Beitrag: 03.07.2012, 07:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress