lightradar

Dependencies:   TextLCD mbed

Fork of Laster_Radar_test by Christopher H

Revision:
0:36109edfc712
Child:
1:ee1640b8be78
diff -r 000000000000 -r 36109edfc712 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jun 22 08:52:27 2015 +0000
@@ -0,0 +1,84 @@
+#include "mbed.h"
+#include "TextLCD.h"
+#include "cdef.h"
+#include "I2C.h"
+DigitalOut myled(LED1);
+TextLCD display(PA_9, PC_7, PB_5, PB_4, PB_10, PA_8, TextLCD::LCD16x2);
+
+/******************************************************
+* void vInitSystemClock(void)
+* Purpose:
+*   Initialisiert Clocksystem HSI,HSE,PLL, Setzt HSE als
+*   Taktquelle und PLL für SystemClock = 84 Mhz.
+*   Aktiviert Clock Secuity System für fall das HSE versagt
+* Parameter:
+*   -Keine Parameter-
+* Return value:
+*   -Keine Return Values
+* Interrupt:
+*   Im HSE Ausfall wird RCC Interrupt aufgerufen
+*******************************************************/
+void vInitSystemClock(void)
+{
+
+   /***Flash wait states 2 */
+   FLASH->ACR |= Bit1 ;
+   /** Enable the High Speed Internal Clock and wait for HSI to be stable.*/
+   RCC->CR |= RCC_CR_HSION;
+   while (!(RCC->CR & RCC_CR_HSIRDY));
+   RCC->CFGR = 0x00000000;                                        // HSI enabled and used as System Clock. No Clock Division.
+   while( (RCC->CFGR & RCC_CFGR_SWS)  != RCC_CFGR_SWS_HSI );  // WAITING HSI IS SYSTEM CLOCK
+    /**ENABLE HSE CLOCK and wait for HSE to be stable */
+    RCC->CR |= RCC_CR_HSEON ;
+    while( (RCC->CR & RCC_CR_HSERDY)  == 0);
+    RCC->CR &= ~(RCC_CR_PLLI2SON
+               | RCC_CR_CSSON
+               | RCC_CR_PLLON)
+               ;   // Turn off PLL and CSS (clock security system).
+     while(RCC->CR & RCC_CR_PLLRDY);  // WAITING PLL OF
+   /** Disable all clock generated interrupts. */
+   RCC->CIR = 0x00000000;
+   RCC->PLLCFGR = 0x20000000;                                       // SETZE PLL COMFIG REGISTERINHALT KOMPLETT AUF 0
+    /** SETTINGS FOR PLL OVER HSE 8Mhz **/
+      RCC->PLLCFGR |=  (8 << 0)                                       // 16 / 8 = 2MHz
+                |(168 << 6)                                     // 2 * 168 =  336MHz
+                |(1 << 16)                                      // 336MHz / 4 = 84MHz (0x01 corresponds to /4)
+                |(RCC_PLLCFGR_PLLSRC_HSI)                       // HSI selected.
+                |(7 << 24);                                     // 336Mhz / 7 = 48MHz
+   RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;                              // Low speed peripheral clock setup set to 42Mhz. (84Mhz / 2)
+   RCC->CR |= (RCC_CR_PLLON);                                     // Start the PLL clock.
+   while (!(RCC->CR & RCC_CR_PLLRDY));                            // Wait for the PLL to start.
+   RCC->CFGR &= ~(RCC_CFGR_SW);                                    // SET PLL AS SYSTEM CLOCK
+   RCC->CFGR |= RCC_CFGR_SW_PLL;
+   while ((RCC->CFGR & RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);       // Wait for configuration to take place.
+   /** ENABLE CLOCK SECUITY SYSTEM */
+   RCC->CR |= Bit19 ;
+   NVIC_EnableIRQ(RCC_IRQn);
+
+}
+
+
+
+
+
+
+
+
+int main() {
+    byte arr[2];
+    display.cls();
+    vInitSystemClock();
+    display.printf("Hallo\n");
+    PRESSURE_vInit();
+        while(1) {
+        myled = 1; // LED is ON
+        wait(0.1); // 200 ms
+        I2C_write(0xC4, 0x00, 0x04);
+        myled = 0; // LED is OFF
+        wait(0.3); // 1 sec
+       I2C_read(0xC4,0xC5, 0x8f, 2, arr);
+       display.cls();
+        display.printf("Distanz:%d cm\n", ((arr[0]<<8) | arr[1]) );
+        
+    }
+}