Handreichung TI3

Files at this revision

API Documentation at this revision

Comitter:
jack1930
Date:
Tue Apr 28 15:51:16 2020 +0000
Parent:
1:17722afc5909
Commit message:
V1.0

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Apr 24 14:13:21 2020 +0000
+++ b/main.cpp	Tue Apr 28 15:51:16 2020 +0000
@@ -1,80 +1,98 @@
 #include "mbed.h"
 
 
-DigitalOut myled(PC_0);
-DigitalOut PC1(PC_1);
+DigitalOut alarm(PC_0);
+DigitalOut anzeige(PC_1);
+InterruptIn flamme(PA_8);
+AnalogIn batterie(PA_0);
+DigitalIn test(PA_1);
 
-void EX1IRQhandler(void)
+bool alarmAktiv=false;
+
+void isrFlamme(void)
 {
-    //PC1=!PC1;
-    GPIOC->ODR=~GPIOC->ODR;
-    EXTI->PR=0b10;
-    HAL_NVIC_ClearPendingIRQ(EXTI1_IRQn);
+   alarmAktiv=true;
+   alarm=1;
+   anzeige=1;
 }
 
-//TIM_HandleTypeDef htim6;
+void warte(unsigned int ms)
+{
+    RCC->APB1ENR |= 0b100000; //TIM6
+    TIM7->PSC=31999; //Prescaler für 1 ms
+    TIM7->CNT=0;
+    TIM7->ARR=ms;
+    TIM7->SR=0;     //UIF=0
+    TIM7->CR1=1; 
+    while (TIM7->SR==0);
+    TIM7->CR1=0;   
+}
+
 void TIM6_IRQHandler(void)
 {
-    myled=!myled;
+    if (anzeige==0) 
+    {
+        anzeige=1;
+        TIM6->ARR=1000; //1Sekunde
+        if (batterie<0.7) alarm=1;
+    }
+    else
+    {
+        anzeige=0;
+        TIM6->ARR=10000; //10Sekunde
+        if (!alarmAktiv) alarm=0;
+    }
+    
     TIM6->SR=0;
     HAL_NVIC_ClearPendingIRQ(TIM6_IRQn);
 }
 
-void EX1init(void)
+void flammeinit(void)
 {
-RCC->AHBENR|=0b111;
-GPIOA->PUPDR|=0b1000;
-EXTI->IMR|=0b10;   
-EXTI->RTSR|=0b10; 
+flamme.rise(&isrFlamme);
 }
 
-static void NVIC_Init(void)
+void NVIC_Init(void)
 {
     /* TIM6_IRQn interrupt configuration */
-    //HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0);
     NVIC_SetVector(TIM6_IRQn, (uint32_t)&TIM6_IRQHandler);
     HAL_NVIC_EnableIRQ(TIM6_IRQn);
-    NVIC_SetVector(EXTI1_IRQn, (uint32_t)&EX1IRQhandler);
-    HAL_NVIC_EnableIRQ(EXTI1_IRQn);
 }
 
 /* TIM6 init function */
-static void TIM6_Init(void)
+void TIM6_Init(void)
 {
-    /*
-    __TIM6_CLK_ENABLE();
-    htim6.Instance = TIM6;
-    htim6.Init.Prescaler = 3200;
-    htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
-    htim6.Init.Period = 5000;
-    if (HAL_TIM_Base_Init(&htim6) != HAL_OK) {
-        while(1) {
-        }
-    }
-    HAL_TIM_Base_Start_IT(&htim6);
-    */
-
     RCC->APB1ENR|=0b10000;  //Clock Enable
-    TIM6->PSC=3200;         //Prescaler 100µs
-    TIM6->ARR=5000;         //Autoreload 5000*100µs = 0,5s
+    TIM6->PSC=31999;         //Prescaler 100µs
+    TIM6->ARR=1000;         //Autoreload 1000*1ms = 1s
     TIM6->DIER=1;           //UIE = 1 (Update Interrupt Enable)
     TIM6->SR=0;             //UIF =0 (Update Interrupt Flag)
     TIM6->CR1=1;            //CEN=1 (Counter Enable)
 }
 
+
 int main()
 {
     TIM6_Init();
-    EX1init();
+
+    flammeinit();
     NVIC_Init();
+    test.mode(PullDown);
     while(1) {
-        /*
-        if (TIM6->SR==1)
-        {
-            TIM6->SR=0;
-            myled=!myled;
+        if (test==1)
+        {            
+            warte(3000);
+            if (test==1)
+            {
+                TIM6->CR1=0;
+                alarm=1;
+                anzeige=1;
+                warte(1000);
+                alarm=0;
+                anzeige=0;
+                TIM6->CR1=1;
+            }
         }
-        */
     }
 
 }
\ No newline at end of file
--- a/mbed-os.lib	Fri Apr 24 14:13:21 2020 +0000
+++ b/mbed-os.lib	Tue Apr 28 15:51:16 2020 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/teams/EL4121-Embedded-System/code/mbed-os/#b74591d5ab33
+mbed-os#000000000000