Jack Hansdampf / Mbed OS HP1819A1
Committer:
jack1930
Date:
Thu May 27 12:55:57 2021 +0000
Revision:
0:2a1ab6aefb7c
GSOE HP1819A1 mit Timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jack1930 0:2a1ab6aefb7c 1 /* mbed Microcontroller Library
jack1930 0:2a1ab6aefb7c 2 * Copyright (c) 2019 ARM Limited
jack1930 0:2a1ab6aefb7c 3 * SPDX-License-Identifier: Apache-2.0
jack1930 0:2a1ab6aefb7c 4 */
jack1930 0:2a1ab6aefb7c 5
jack1930 0:2a1ab6aefb7c 6 #include "mbed.h"
jack1930 0:2a1ab6aefb7c 7 #include "platform/mbed_thread.h"
jack1930 0:2a1ab6aefb7c 8
jack1930 0:2a1ab6aefb7c 9 InterruptIn LS1(PA_1);
jack1930 0:2a1ab6aefb7c 10 InterruptIn LS2(PA_6);
jack1930 0:2a1ab6aefb7c 11 DigitalIn ResetBehaelter(PA_10);
jack1930 0:2a1ab6aefb7c 12
jack1930 0:2a1ab6aefb7c 13 PortIn waage(PortB,0xFF);
jack1930 0:2a1ab6aefb7c 14 int sollwert=128;
jack1930 0:2a1ab6aefb7c 15
jack1930 0:2a1ab6aefb7c 16 PortOut ausgaenge(PortC,0b11111);
jack1930 0:2a1ab6aefb7c 17 volatile int anz=0;
jack1930 0:2a1ab6aefb7c 18
jack1930 0:2a1ab6aefb7c 19
jack1930 0:2a1ab6aefb7c 20
jack1930 0:2a1ab6aefb7c 21
jack1930 0:2a1ab6aefb7c 22 void warte1s()
jack1930 0:2a1ab6aefb7c 23 {
jack1930 0:2a1ab6aefb7c 24 RCC->APB1ENR |= 0b10000; //TIM6 mit Takt versorgen
jack1930 0:2a1ab6aefb7c 25 TIM6->PSC=31999; //Prescaler für 1ms
jack1930 0:2a1ab6aefb7c 26 TIM6->CNT=0; //Counter mit 0 starten
jack1930 0:2a1ab6aefb7c 27 TIM6->ARR=999; //Autoreload für 1s (1000ms Zählwert von 0-999
jack1930 0:2a1ab6aefb7c 28 TIM6->SR=0; //Überlaufflag zurücksetzen
jack1930 0:2a1ab6aefb7c 29 TIM6->CR1=1; //setzt CEN auf 1 => startet den Timer
jack1930 0:2a1ab6aefb7c 30 while (TIM6->SR==0); //Warten auf Überlauf
jack1930 0:2a1ab6aefb7c 31 TIM6->CR1=0; //setzt CEN auf 0 => stoppt den Timer
jack1930 0:2a1ab6aefb7c 32 }
jack1930 0:2a1ab6aefb7c 33
jack1930 0:2a1ab6aefb7c 34
jack1930 0:2a1ab6aefb7c 35
jack1930 0:2a1ab6aefb7c 36 void isrLS1()
jack1930 0:2a1ab6aefb7c 37 {
jack1930 0:2a1ab6aefb7c 38 ausgaenge=ausgaenge&0b11101;
jack1930 0:2a1ab6aefb7c 39 warte1s();
jack1930 0:2a1ab6aefb7c 40 if (waage<sollwert)
jack1930 0:2a1ab6aefb7c 41 {
jack1930 0:2a1ab6aefb7c 42 ausgaenge=ausgaenge|0b00001;
jack1930 0:2a1ab6aefb7c 43 }
jack1930 0:2a1ab6aefb7c 44 else
jack1930 0:2a1ab6aefb7c 45 {
jack1930 0:2a1ab6aefb7c 46 ausgaenge=ausgaenge&0b11110;
jack1930 0:2a1ab6aefb7c 47 }
jack1930 0:2a1ab6aefb7c 48 ausgaenge=ausgaenge|0b00010;
jack1930 0:2a1ab6aefb7c 49 }
jack1930 0:2a1ab6aefb7c 50 DigitalOut test(PC_7);
jack1930 0:2a1ab6aefb7c 51 char ampel[5]={0b00010,0b10010,0b01010,0b01110,0b00100};
jack1930 0:2a1ab6aefb7c 52 void isrLS2()
jack1930 0:2a1ab6aefb7c 53 {
jack1930 0:2a1ab6aefb7c 54 anz++;
jack1930 0:2a1ab6aefb7c 55 ausgaenge=ampel[anz];
jack1930 0:2a1ab6aefb7c 56 test=1;
jack1930 0:2a1ab6aefb7c 57 }
jack1930 0:2a1ab6aefb7c 58 void initISR()
jack1930 0:2a1ab6aefb7c 59 {
jack1930 0:2a1ab6aefb7c 60 LS1.mode(PullDown);
jack1930 0:2a1ab6aefb7c 61 LS2.mode(PullDown);
jack1930 0:2a1ab6aefb7c 62 ResetBehaelter.mode(PullDown);
jack1930 0:2a1ab6aefb7c 63 waage.mode(PullDown);
jack1930 0:2a1ab6aefb7c 64 LS1.fall(&isrLS1);
jack1930 0:2a1ab6aefb7c 65 LS2.fall(&isrLS2);
jack1930 0:2a1ab6aefb7c 66 }
jack1930 0:2a1ab6aefb7c 67
jack1930 0:2a1ab6aefb7c 68
jack1930 0:2a1ab6aefb7c 69
jack1930 0:2a1ab6aefb7c 70
jack1930 0:2a1ab6aefb7c 71 int main()
jack1930 0:2a1ab6aefb7c 72 {
jack1930 0:2a1ab6aefb7c 73 ausgaenge=0b00010;
jack1930 0:2a1ab6aefb7c 74 initISR();
jack1930 0:2a1ab6aefb7c 75
jack1930 0:2a1ab6aefb7c 76 while (true) {
jack1930 0:2a1ab6aefb7c 77 if (ResetBehaelter==1)
jack1930 0:2a1ab6aefb7c 78 {
jack1930 0:2a1ab6aefb7c 79 ausgaenge=0b00010;
jack1930 0:2a1ab6aefb7c 80 anz=0;
jack1930 0:2a1ab6aefb7c 81 }
jack1930 0:2a1ab6aefb7c 82 }
jack1930 0:2a1ab6aefb7c 83 }