Versuch 02 übernommen und angefangen es für Versuch 03 abzuwandeln

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
prof_al
Date:
Mon Oct 24 11:59:31 2022 +0000
Child:
1:d400ca81c517
Commit message:
Version 24.10.2022 HAPO Labor1

Changed in this revision

cdef.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cdef.h	Mon Oct 24 11:59:31 2022 +0000
@@ -0,0 +1,78 @@
+/********************************************************************
+ *
+ *  Name:           cdef.h
+ *  Beschreibung:   grundlegende Typdefinitionen
+ *  Autor:
+ *  Erstellung:     23.10.2012
+ *
+ *  Revisionsliste
+ *  Datum       | Autor         | Änderung
+ *  ------------+---------------+--------------------------
+ *  23.10.2012  | Altenburg     | Ersterstellung
+ *  ------------+---------------+--------------------------
+ *
+ ********************************************************************/
+#ifndef CDEF_H
+#define CDEF_H
+
+/**************************************************************************/
+/* Definitions                                                            */
+/**************************************************************************/
+typedef unsigned char byte;        /* vorzeichenlose 8-Bit-Zahl */
+typedef unsigned short word;       /* vorzeichenlose 16-Bit-Zahl */
+typedef signed char int8;          /* vorzeichenbehaftete 8-Bit-Zahl */
+typedef signed short int16;        /* vorzeichenbehaftete 16-Bit-Zahl */
+//typedef byte bool;                 /* True/False Aussage */
+typedef unsigned long dword;       /* Long-Zahl */
+typedef signed long int32;
+
+
+#define True                1
+#define False               0
+#define true                1
+#define false               0
+#define On                  1
+#define Off                 0
+#define Yes                 1
+#define No                  0
+
+#define Bit0    0x01                /* Bit-Definitionen */
+#define Bit1    0x02
+#define Bit2    0x04
+#define Bit3    0x08
+#define Bit4    0x10
+#define Bit5    0x20
+#define Bit6    0x40
+#define Bit7    0x80
+#define Bit8    (unsigned long)(1 << 8)            /* Bit-Definitionen */
+#define Bit9    (unsigned long)(1 << 9)
+#define Bit10   (1 << 10)
+#define Bit11   (unsigned long)(1 << 11)
+#define Bit12   (1 << 12)
+#define Bit13   (unsigned long)(1 << 13)
+#define Bit14   (1 << 14)
+#define Bit15   (unsigned long)(1 << 15)
+#define Bit16   (unsigned long)(1 << 16)           /* Bit-Definitionen */
+#define Bit17   (unsigned long)(1 << 17)
+#define Bit18   (unsigned long)(1 << 18)
+#define Bit19   (unsigned long)(1 << 19)
+#define Bit20   (unsigned long)(1 << 20)
+#define Bit21   (unsigned long)(1 << 21)
+#define Bit22   (unsigned long)(1 << 22)
+#define Bit23   (unsigned long)(1 << 23)
+#define Bit24   (unsigned long)(1 << 24)           /* Bit-Definitionen */
+#define Bit25   (unsigned long)(1 << 25)
+#define Bit26   (unsigned long)(1 << 26)
+#define Bit27   (unsigned long)(1 << 27)
+#define Bit28   (unsigned long)(1 << 28)
+#define Bit29   (unsigned long)(1 << 29)
+#define Bit30   (unsigned long)(1 << 30)
+#define Bit31   (unsigned long)(1 << 31)
+
+#define nDirectTFT
+
+//void vDontCheat( void );
+
+#endif
+/********************************************************************/
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 24 11:59:31 2022 +0000
@@ -0,0 +1,163 @@
+/***************************************************************************
+* Titel        : main.c
+*
+* Description  : Labormodul "DIBI"
+*
+* Revision List:
+  --------------------------------------------------------------------------
+  Date     | Author          | Change
+  --------------------------------------------------------------------------
+  24.10.22 | J. Altenburg    | Ersterstellung
+  --------------------------------------------------------------------------
+           |                 |
+  ----------------------------------------------------------------------------
+****************************************************************************/
+#include "mbed.h"
+#include "cdef.h"
+
+/* Vereinbarungen zu den Tasteneingängen */
+DigitalIn   pinS1(A1);
+DigitalIn   pinS2(A2);
+DigitalIn   pinS3(A3);
+
+BusOut      bLedShield(D10, D11, D12, D13);
+
+/* Anschlüsse der Schieberegister */
+DigitalOut  pinSdo(PA_9);
+DigitalOut  pinSck(PA_8);
+DigitalOut  pinLoad(PB_5);
+
+/* ISR */
+Ticker      stTimer;
+
+/***************************************************************************
+*   Defines und Makros                                                       *
+***************************************************************************/
+#define nTastShort    4     /* Taste 50 Millisekunden gedrückt */    
+#define nTastLong   150     /* Taste 1.5 Sekunden gedrückt */ 
+
+#define nSegA           0x01
+#define nSegB           0x02
+#define nSegC           0x04
+#define nSegD           0x08
+#define nSegE           0x10
+#define nSegF           0x20
+#define nSegG           0x40
+#define nSegH           0x80
+
+#define nZiffer0    ~(nSegA | nSegB | nSegC | nSegD | nSegE | nSegF)
+#define nZiffer1    ~(nSegB | nSegC)
+#define nZiffer2    ~(nSegA | nSegB | nSegD | nSegE | nSegG)
+#define nZiffer3    ~(nSegA | nSegB | nSegC | nSegD | nSegG)
+#define nZiffer4    ~(nSegB | nSegC | nSegF | nSegG)
+#define nZiffer5    ~(nSegA | nSegC | nSegD | nSegF | nSegG)
+#define nZiffer6    ~(nSegA | nSegC | nSegD | nSegE | nSegF | nSegG)
+#define nZiffer7    ~(nSegA | nSegB | nSegC)
+#define nZiffer8    ~(nSegA | nSegB | nSegC | nSegD | nSegE | nSegF | nSegG)
+#define nZiffer9    ~(nSegA | nSegB | nSegC | nSegD | nSegF | nSegG)
+#define nZifferA    ~(nSegA | nSegB | nSegC | nSegE | nSegF | nSegG)
+#define nZifferB    ~(nSegC | nSegD | nSegE | nSegF | nSegG)
+#define nZifferC    ~(nSegA | nSegD | nSegE | nSegF)
+#define nZifferD    ~(nSegB | nSegC | nSegD | nSegE | nSegG)
+#define nZifferE    ~(nSegA | nSegD | nSegE | nSegF | nSegG)
+#define nZifferF    ~(nSegA | nSegE | nSegF | nSegG)
+#define nZifferOff   (nSegA | nSegB | nSegC | nSegD | nSegE | nSegF | nSegG | nSegH)
+
+byte bIdx; /*
+* Description : Index auf Ausgabe
+*/
+
+byte bDigit; /*
+* Description : aktives Digit
+*/
+
+byte bBargraph; /*
+* Description : Bargraph durchschalten
+*/
+
+byte bS1Timer; /*
+* Description : Timer für Taste S1
+*/
+
+byte bS2Timer; /*
+* Description : Timer für Taste S2
+*/
+
+byte bS3Timer; /*
+* Description : Timer für Taste S3
+*/
+
+word wSerial; /*
+* Description : serielles Ausgaberegister
+*/
+
+/* Bitmuster */
+const byte abZiffer[] = {nZiffer0, nZiffer1, nZiffer2, nZiffer3, nZiffer4, nZiffer5, nZiffer6, nZiffer7, nZiffer8, nZiffer9, nZifferA, nZifferB, nZifferC, nZifferD, nZifferE, nZifferF, nZifferOff};
+const byte abBargraph[] = {~Bit0, ~(Bit0|Bit1), ~(Bit0|Bit1|Bit2), ~(Bit0|Bit1|Bit2|Bit3), 0x0f};
+
+
+/* Tastenabfrage */
+void vTasteS1( void ){
+    if(pinS1 == 0){                             /* User-Taste gedrückt */
+        if(bS1Timer < nTastLong+1){             /* Abfrage max. bis Taste lange gedrückt */
+            if(bS1Timer == nTastShort){         /* Taste "kurz gedrückt" erkannt */
+                //...
+                }
+            if(bS1Timer == nTastLong){          /* Taste "lange gedrückt" erkannt */ 
+                bIdx--;
+                }
+            bS1Timer++;
+            }
+        }
+    else{                                       /* Taste nicht gedrückt */ 
+        if((bS1Timer >= nTastShort) && (bS1Timer <= nTastLong)){             /* Taste wurde bereits erkannt */
+            bIdx++;
+            }
+        bS1Timer = 0;
+        }
+    } 
+
+void vTasteS2( void ){
+    } 
+
+void vTasteS3( void ){
+    } 
+
+
+
+void vCheckTasten( void ){
+    vTasteS1();
+    vTasteS2();
+    vTasteS3();
+    }
+
+/* Ausschieben der 16 Bits für die Anzeige */
+void vShiftLoad(word wLoad){
+    word wMask = Bit15;
+    pinLoad = 0;
+    while(wMask){
+        if(wMask & wLoad) pinSdo = 1;
+        else              pinSdo = 0;
+        pinSck = 1;
+        wMask >>= 1;
+        pinSck = 0;
+        }    
+    pinLoad = 1;
+    }
+
+/***************************************************************************
+*   main()
+***************************************************************************/
+int main() {
+    /* Variablen initialisieren */    
+    bIdx = 0;
+    bDigit = 0;
+    bLedShield = 0x00;
+    while(1){
+        vCheckTasten();
+        //wSerial = ???;            /* 7-Segmentziffer bestimmen */
+        vShiftLoad(wSerial          /* Segmente verschieben und Digit festlegen */);
+        //bLedShield = ???          /* Bargraph bestimmen */
+        wait_us(10000);
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Oct 24 11:59:31 2022 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/165afa46840b
\ No newline at end of file