Now you can use NC as InterruptIn
Fork of X_NUCLEO_6180XA1 by
Diff: Components/Display/Display_class.h
- Revision:
- 20:dd8390d615bf
- Parent:
- 17:922c88827e4d
- Child:
- 23:dfb5ccc7b780
--- a/Components/Display/Display_class.h Wed Oct 28 09:28:52 2015 +0000 +++ b/Components/Display/Display_class.h Wed Oct 28 13:07:59 2015 +0000 @@ -163,194 +163,189 @@ #ifndef FAST_DISPLAY Display(DevI2C &i2c, STMPE1600DigiOut &D1, STMPE1600DigiOut &D2, STMPE1600DigiOut &D3, STMPE1600DigiOut &D4, - STMPE1600DigiOut &D_A, STMPE1600DigiOut &D_B, STMPE1600DigiOut &D_C, STMPE1600DigiOut &D_D, - STMPE1600DigiOut &D_E, STMPE1600DigiOut &D_F, STMPE1600DigiOut &D_G) - : Display_D1(D1), Display_D2(D2), Display_D3(D3), Display_D4(D4), - Display_A(D_A), Display_B(D_B), Display_C(D_C), Display_D(D_D), - Display_E(D_E), Display_F(D_F), Display_G(D_G), dev_i2c(i2c) - { - pDisplay_DGT[0] = &Display_D1; - pDisplay_DGT[1] = &Display_D2; - pDisplay_DGT[2] = &Display_D3; - pDisplay_DGT[3] = &Display_D4; - pDisplay_SEG[0] = &Display_A; - pDisplay_SEG[1] = &Display_B; - pDisplay_SEG[2] = &Display_C; - pDisplay_SEG[3] = &Display_D; - pDisplay_SEG[4] = &Display_E; - pDisplay_SEG[5] = &Display_F; - pDisplay_SEG[6] = &Display_G; + STMPE1600DigiOut &D_A, STMPE1600DigiOut &D_B, STMPE1600DigiOut &D_C, STMPE1600DigiOut &D_D, + STMPE1600DigiOut &D_E, STMPE1600DigiOut &D_F, STMPE1600DigiOut &D_G) + : Display_D1(D1), Display_D2(D2), Display_D3(D3), Display_D4(D4), + Display_A(D_A), Display_B(D_B), Display_C(D_C), Display_D(D_D), + Display_E(D_E), Display_F(D_F), Display_G(D_G), dev_i2c(i2c) + { + pDisplay_DGT[0] = &Display_D1; + pDisplay_DGT[1] = &Display_D2; + pDisplay_DGT[2] = &Display_D3; + pDisplay_DGT[3] = &Display_D4; + pDisplay_SEG[0] = &Display_A; + pDisplay_SEG[1] = &Display_B; + pDisplay_SEG[2] = &Display_C; + pDisplay_SEG[3] = &Display_D; + pDisplay_SEG[4] = &Display_E; + pDisplay_SEG[5] = &Display_F; + pDisplay_SEG[6] = &Display_G; - for (int i=0; i<4; i++) { *pDisplay_DGT[i]=1; } - for (int i=0; i<7; i++) { *pDisplay_SEG[i]=1; } - } + for (int i=0; i<4; i++) { *pDisplay_DGT[i]=1; } + for (int i=0; i<7; i++) { *pDisplay_SEG[i]=1; } + } #else Display(DevI2C &i2c) : dev_i2c(i2c) {} #endif - virtual ~Display() - { - //nella classe board ci sara' un puntatore ad un oggetto di tipo Display che verra' creato con una new - //qui devo fare il delete[] del new - } #ifndef FAST_DISPLAY - void Digits_off (void) // all 4 digits off - { - Display_D1=1; - Display_D2=1; - Display_D3=1; - Display_D4=1; - } + void Digits_off (void) // all 4 digits off + { + Display_D1=1; + Display_D2=1; + Display_D3=1; + Display_D4=1; + } - void Digits_on (void) // all 4 digits on - { - Display_D1=0; - Display_D2=0; - Display_D3=0; - Display_D4=0; - } + void Digits_on (void) // all 4 digits on + { + Display_D1=0; + Display_D2=0; + Display_D3=0; + Display_D4=0; + } - void Digit_on (int digit) // digits on - { - *pDisplay_DGT[digit] = 0; - } + void Digit_on (int digit) // digits on + { + *pDisplay_DGT[digit] = 0; + } - void Digit_off (int digit) // digits on - { - *pDisplay_DGT[digit] = 1; - } + void Digit_off (int digit) // digits on + { + *pDisplay_DGT[digit] = 1; + } - void Segments_off () // all 7 segments off - { - Display_A=1; - Display_B=1; - Display_C=1; - Display_D=1; - Display_E=1; - Display_F=1; - Display_G=1; - } + void Segments_off () // all 7 segments off + { + Display_A=1; + Display_B=1; + Display_C=1; + Display_D=1; + Display_E=1; + Display_F=1; + Display_G=1; + } - void Segment_off (int seg) // segment off - { - *pDisplay_SEG[seg] = 1; - } + void Segment_off (int seg) // segment off + { + *pDisplay_SEG[seg] = 1; + } - void Segment_on (int seg) // segment on - { - *pDisplay_SEG[seg] = 0; - } + void Segment_on (int seg) // segment on + { + *pDisplay_SEG[seg] = 0; + } - void DisplayString (char str[4]) - { - int i; - const char *pc; + void DisplayString (char str[4]) + { + int i; + const char *pc; - for( i=0, pc=str; i<4 && *pc!=0 ; i++, pc++){ - _V2_Set7Segment( ascii_to_display_lut[(uint8_t)*pc], i); - if( *(pc+1)== '.'){ + for( i=0, pc=str; i<4 && *pc!=0 ; i++, pc++){ + _V2_Set7Segment( ascii_to_display_lut[(uint8_t)*pc], i); + if( *(pc+1)== '.'){ pc++; - } - wait_ms(DISPLAY_DELAY); - Digits_off(); - } - } + } + wait_ms(DISPLAY_DELAY); + Digits_off(); + } + } - void _V2_Set7Segment( int Leds, int digit ){ - //Digits_off(); - Segments_off(); // 7 seg off */ - int mask=1; - for (int i=0; i<7; i++) { - if (Leds & mask) Segment_on(i); - mask = mask<<1; - } - Digit_on(digit); - } + void _V2_Set7Segment( int Leds, int digit ){ + //Digits_off(); + Segments_off(); // 7 seg off */ + int mask=1; + for (int i=0; i<7; i++) { + if (Leds & mask) Segment_on(i); + mask = mask<<1; + } + Digit_on(digit); + } #else - void DisplayDigit (char *val, char dgt) - { - uint8_t data[2]; - uint16_t *pdata = (uint16_t*)data; - dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - *pdata = *pdata | (uint16_t)0x0780; // all digits off - dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 + void DisplayDigit (char *val, char dgt) + { + uint8_t data[2]; + uint16_t *pdata = (uint16_t*)data; + dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 + *pdata = *pdata | (uint16_t)0x0780; // all digits off + dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - _V2_Set7Segment( ascii_to_display_lut[(uint8_t)*val], dgt); - } + _V2_Set7Segment( ascii_to_display_lut[(uint8_t)*val], dgt); + } - void DisplayString (char str[4], char strlen) - { - int i, dgt; - const char *pc; - uint8_t data[2]; - uint16_t *pdata = (uint16_t*)data; + void DisplayString (char str[4], char strlen) + { + int i, dgt; + const char *pc; + uint8_t data[2]; + uint16_t *pdata = (uint16_t*)data; - // dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 -// *pdata = *pdata | (uint16_t)0x0780; // all digits off -// dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 +// dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 +// *pdata = *pdata | (uint16_t)0x0780; // all digits off +// dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - for(i=0, dgt=4-strlen, pc=str; i<strlen && *pc!=0; i++, pc++, dgt++){ - _V2_Set7Segment( ascii_to_display_lut[(uint8_t)*pc], dgt); - if( *(pc+1)== '.'){ - pc++; - } - wait_ms(DISPLAY_DELAY); - dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - *pdata = *pdata | (uint16_t)0x0780; // all digits off - dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - } - } + for(i=0, dgt=4-strlen, pc=str; i<strlen && *pc!=0; i++, pc++, dgt++){ + _V2_Set7Segment( ascii_to_display_lut[(uint8_t)*pc], dgt); + if( *(pc+1)== '.'){ + pc++; + } + wait_ms(DISPLAY_DELAY); + dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 + *pdata = *pdata | (uint16_t)0x0780; // all digits off + dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 + } + } - void _V2_Set7Segment( int Leds, int digit ){ - //Digits_off(); + void _V2_Set7Segment( int Leds, int digit ){ + //Digits_off(); - uint16_t dgt; - dgt = 1<<digit; - dgt = ((uint16_t)dgt)<<7; - dgt = ~dgt; - uint8_t data[2]; - uint16_t *pdata = (uint16_t*)data; + uint16_t dgt; + dgt = 1<<digit; + dgt = ((uint16_t)dgt)<<7; + dgt = ~dgt; + uint8_t data[2]; + uint16_t *pdata = (uint16_t*)data; - /* set the exppinname state to lvl */ - dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - *pdata = *pdata | (uint16_t)0x007F; // 7 segments off - dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 + /* set the exppinname state to lvl */ + dev_i2c.i2c_read(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 + *pdata = *pdata | (uint16_t)0x007F; // 7 segments off + dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - int mask=1; - for (int i=0; i<7; i++) { - if (Leds & mask) *pdata = *pdata & ~(uint16_t)mask; - mask = mask<<1; - } - *pdata = *pdata & dgt; - dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 - } + int mask=1; + for (int i=0; i<7; i++) { + if (Leds & mask) *pdata = *pdata & ~(uint16_t)mask; + mask = mask<<1; + } + *pdata = *pdata & dgt; + dev_i2c.i2c_write(data, (uint8_t)STMPE1600_DEF_DEVICE_ADDRESS, (uint8_t)GPSR_0_7, 2); // GPSR_0_7 + } #endif private: #ifndef FAST_DISPLAY - STMPE1600DigiOut &Display_D1; - STMPE1600DigiOut &Display_D2; - STMPE1600DigiOut &Display_D3; - STMPE1600DigiOut &Display_D4; - STMPE1600DigiOut *pDisplay_DGT[4]; // the 4 display digits + STMPE1600DigiOut &Display_D1; + STMPE1600DigiOut &Display_D2; + STMPE1600DigiOut &Display_D3; + STMPE1600DigiOut &Display_D4; + STMPE1600DigiOut *pDisplay_DGT[4]; // the 4 display digits - STMPE1600DigiOut &Display_A; - STMPE1600DigiOut &Display_B; - STMPE1600DigiOut &Display_C; - STMPE1600DigiOut &Display_D; - STMPE1600DigiOut &Display_E; - STMPE1600DigiOut &Display_F; - STMPE1600DigiOut &Display_G; - STMPE1600DigiOut *pDisplay_SEG[7]; // the 7 digit segmments + STMPE1600DigiOut &Display_A; + STMPE1600DigiOut &Display_B; + STMPE1600DigiOut &Display_C; + STMPE1600DigiOut &Display_D; + STMPE1600DigiOut &Display_E; + STMPE1600DigiOut &Display_F; + STMPE1600DigiOut &Display_G; + STMPE1600DigiOut *pDisplay_SEG[7]; // the 7 digit segmments #endif DevI2C &dev_i2c; };