TH Bingen HAPO Labor 1, Prof. Altenburg, WS2022
Revision 0:5ac32d240694, committed 2022-10-24
- Comitter:
- prof_al
- Date:
- Mon Oct 24 11:59:31 2022 +0000
- Commit message:
- Version 24.10.2022 HAPO Labor1
Changed in this revision
--- /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