I2C Steuerung by Matthias Hemmer

Files at this revision

API Documentation at this revision

Comitter:
hemmer_matthias
Date:
Fri Feb 05 18:13:27 2016 +0000
Commit message:
Projekt Bulme Drohne;

Changed in this revision

I2C.cpp Show annotated file Show diff for this revision Revisions of this file
I2C.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 266ede55f588 I2C.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/I2C.cpp	Fri Feb 05 18:13:27 2016 +0000
@@ -0,0 +1,79 @@
+#include "mbed.h"
+#include "I2C.h"
+
+I2C i2c(p28, p27);
+
+void PC9555_init(){
+        
+        char data[2];       // Initialisierung der Befehle/Zustände
+        
+//------------------------Port 0----------------------------------------------------------------               
+        // Definieren der Befehle/Zustände
+        data[0] = Port0_InPut;  // Zuerst die gewünschte Adresse       
+        data[1] = 0x00;         // Wird als Ausgang definiert (Zustand definieren)
+            
+        i2c.write(PC9555_ADDR, data, 2);        // Schreiben auf die Adresse des I2C's
+//------------------------Port 1----------------------------------------------------------------        
+        data[0] = Port1_InPut;
+        data[1] = 0x00;
+
+        i2c.write(PC9555_ADDR, data, 2);
+ //------------------------Port 2----------------------------------------------------------------       
+        data[0] = Port2_OutPut;
+        data[1] = 0x00;
+
+        i2c.write(PC9555_ADDR, data, 2);
+//------------------------Port 3----------------------------------------------------------------
+       data[0] = Port3_OutPut;
+       data[1] = 0x00;
+       
+       i2c.write(PC9555_ADDR, data, 2);
+//------------------------Port 4----------------------------------------------------------------
+       data[0] = Port4_PolarityInvert;
+       data[1] = 0xFF;      // Würde dies als Eingang setzten, aber diese eingänge sind Invertiert
+       
+       i2c.write(PC9555_ADDR, data, 2);
+//------------------------Port 5----------------------------------------------------------------
+       data[0] = Port5_PolarityInvert;
+       data[1] = 0xFF;
+       
+       i2c.write(PC9555_ADDR, data, 2);
+//------------------------Port 6----------------------------------------------------------------
+       data[0] = Port6_Config;
+       data[1] = 0x00;
+       
+       i2c.write(PC9555_ADDR, data, 2);
+//------------------------Port 7----------------------------------------------------------------
+       data[0] = Port7_Config;
+       data[1] = 0x00;
+       
+       i2c.write(PC9555_ADDR, data, 2);
+//------------------------Ende------------------------------------------------------------------    
+}// Ende bertl_PC9555_init
+
+void LEDs(unsigned char led){
+    char data[2];
+    
+    data[0] = Port2_OutPut;
+    data[1] = ~led;
+    
+    i2c.write(PC9555_ADDR, data, 2);
+}// Ende LEDs
+
+unsigned char Switch(){
+    
+    char data[1];
+    
+    data[0] = Port1_InPut;
+    i2c.write(PC9555_ADDR, data, 1, true); // Schreiben eines Bits, nicht STOPEN
+    i2c.read(PC9555_ADDR, data, 1, false); // Lesen eines Bits und dann STOPEN
+    
+    return((unsigned char) data[0]);
+}// Ende Switch    
+    
+    
+    
+    
+    
+    
+    
\ No newline at end of file
diff -r 000000000000 -r 266ede55f588 I2C.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/I2C.h	Fri Feb 05 18:13:27 2016 +0000
@@ -0,0 +1,40 @@
+
+
+// Definieren der Input port registers
+#define Port0_InPut     (0)
+#define Port1_InPut     (1)
+
+// Definieren der Outout port registers
+#define Port2_OutPut    (2)
+#define Port3_OutPut    (3)
+
+// Definieren der Polaroty Inversion registers
+#define Port4_PolarityInvert    (4)
+#define Port5_PolarityInvert    (5)
+
+// Definieren der Configuration registers
+#define Port6_Config    (6)
+#define Port7_Config    (7)
+
+// PC9555-defines
+#define PC9555_ADDR 0x40 // A2 = A1 = A0 = 0
+#define PC9555_FREQUENCY 100000 // f in Hz
+
+// LED-Defines
+#define LED_FL_WHITE    0x01 // 0b0000 0001
+#define LED_FR_WHITE    0x04 // 0b0000 0100
+#define LED_FL_ORANGE   0x02 // 0b0000 0010
+#define LED_FR_ORANGE   0x08 // 0b0000 1000
+#define LED_BL_ORANGE   0x20 // 0b0010 0000
+#define LED_BR_ORANGE   0x80 // 0b1000 0000
+#define LED_BL_RED      0x10 // 0b0001 0000
+#define LED_BR_RED      0x40 // 0b0100 0000
+
+#define LED_L_ORANGE (LED_FL_ORANGE | LED_BL_ORANGE) // 0b0000 0010 | 0b0010 0000 = 0b0010 0010
+#define LED_R_ORANGE (LED_FR_ORANGE | LED_BR_ORANGE) // right blinkers    
+#define LED_WHITE    (LED_FL_WHITE  | LED_FR_WHITE)  // front light
+#define LED_RED      (LED_BL_RED    | LED_BR_RED)    //back light
+
+void PC9555_init();
+void LEDs(unsigned char led);
+unsigned char Switch();
\ No newline at end of file