bosko lekovic
/
IO_board_K22
K22 processor
SPIledovi/LedLight.cpp@7:4aa3dac73b66, 2021-03-21 (annotated)
- Committer:
- bosko001
- Date:
- Sun Mar 21 18:20:15 2021 +0100
- Revision:
- 7:4aa3dac73b66
- Child:
- 12:ea2256d6c725
novi pocetak
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bosko001 | 7:4aa3dac73b66 | 1 | #include "LedLight.h" |
bosko001 | 7:4aa3dac73b66 | 2 | #include "ClassThreadAbstract.h" |
bosko001 | 7:4aa3dac73b66 | 3 | |
bosko001 | 7:4aa3dac73b66 | 4 | #include "mbed.h" |
bosko001 | 7:4aa3dac73b66 | 5 | // DigitalOut led(LED1,3); |
bosko001 | 7:4aa3dac73b66 | 6 | |
bosko001 | 7:4aa3dac73b66 | 7 | /************************************** class C_spi ******************************************* */ |
bosko001 | 7:4aa3dac73b66 | 8 | C_spi::C_spi( PinName mosi, PinName miso, PinName sclk, PinName pin_csdata ): SPI( mosi, miso, sclk) //SPI( PTD2, PTD3, PTD1 ) |
bosko001 | 7:4aa3dac73b66 | 9 | { |
bosko001 | 7:4aa3dac73b66 | 10 | p_csdata = new DigitalOut( pin_csdata,1); |
bosko001 | 7:4aa3dac73b66 | 11 | format( 16, 0); |
bosko001 | 7:4aa3dac73b66 | 12 | frequency(10000000); |
bosko001 | 7:4aa3dac73b66 | 13 | } |
bosko001 | 7:4aa3dac73b66 | 14 | unsigned short C_spi::transfer( unsigned short tx ) |
bosko001 | 7:4aa3dac73b66 | 15 | { |
bosko001 | 7:4aa3dac73b66 | 16 | // led = 0; |
bosko001 | 7:4aa3dac73b66 | 17 | *p_csdata = 0; |
bosko001 | 7:4aa3dac73b66 | 18 | *p_csdata = 1; |
bosko001 | 7:4aa3dac73b66 | 19 | unsigned short rx = write( tx ); |
bosko001 | 7:4aa3dac73b66 | 20 | *p_csdata = 0; |
bosko001 | 7:4aa3dac73b66 | 21 | *p_csdata = 1; |
bosko001 | 7:4aa3dac73b66 | 22 | // led = 1; |
bosko001 | 7:4aa3dac73b66 | 23 | return rx; |
bosko001 | 7:4aa3dac73b66 | 24 | } |
bosko001 | 7:4aa3dac73b66 | 25 | /********************************************************************************** */ |
bosko001 | 7:4aa3dac73b66 | 26 | |
bosko001 | 7:4aa3dac73b66 | 27 | |
bosko001 | 7:4aa3dac73b66 | 28 | |
bosko001 | 7:4aa3dac73b66 | 29 | /********************************************************************************** */ |
bosko001 | 7:4aa3dac73b66 | 30 | |
bosko001 | 7:4aa3dac73b66 | 31 | |
bosko001 | 7:4aa3dac73b66 | 32 | C_spiled::C_spiled():C_spi( PTD2, PTD3, PTD1, PTC4)//, C_thread() |
bosko001 | 7:4aa3dac73b66 | 33 | { |
bosko001 | 7:4aa3dac73b66 | 34 | |
bosko001 | 7:4aa3dac73b66 | 35 | } |
bosko001 | 7:4aa3dac73b66 | 36 | |
bosko001 | 7:4aa3dac73b66 | 37 | void C_spiled::do_Sifter( void ) |
bosko001 | 7:4aa3dac73b66 | 38 | { |
bosko001 | 7:4aa3dac73b66 | 39 | sifter = u_ledovi.ledovi<<2; |
bosko001 | 7:4aa3dac73b66 | 40 | received = transfer(sifter); |
bosko001 | 7:4aa3dac73b66 | 41 | } |
bosko001 | 7:4aa3dac73b66 | 42 | |
bosko001 | 7:4aa3dac73b66 | 43 | void C_spiled::set_led( char no, E_ledColor ct ) |
bosko001 | 7:4aa3dac73b66 | 44 | { |
bosko001 | 7:4aa3dac73b66 | 45 | switch( no ) |
bosko001 | 7:4aa3dac73b66 | 46 | { |
bosko001 | 7:4aa3dac73b66 | 47 | case 1: u_ledovi.ledpar1 = ct; break; |
bosko001 | 7:4aa3dac73b66 | 48 | case 2: u_ledovi.ledpar2 = ct; break; |
bosko001 | 7:4aa3dac73b66 | 49 | case 3: u_ledovi.ledpar3 = ct; break; |
bosko001 | 7:4aa3dac73b66 | 50 | case 4: u_ledovi.ledpar4 = ct; break; |
bosko001 | 7:4aa3dac73b66 | 51 | case 5: u_ledovi.ledpar5 = ct; break; |
bosko001 | 7:4aa3dac73b66 | 52 | case 6: u_ledovi.ledpar6 = ct; break; |
bosko001 | 7:4aa3dac73b66 | 53 | } |
bosko001 | 7:4aa3dac73b66 | 54 | } |
bosko001 | 7:4aa3dac73b66 | 55 | E_ledColor C_spiled::get_led( char no ) |
bosko001 | 7:4aa3dac73b66 | 56 | { |
bosko001 | 7:4aa3dac73b66 | 57 | E_ledColor ct; |
bosko001 | 7:4aa3dac73b66 | 58 | switch( no ) |
bosko001 | 7:4aa3dac73b66 | 59 | { |
bosko001 | 7:4aa3dac73b66 | 60 | case 1: ct = (E_ledColor)u_ledovi.ledpar1; break; |
bosko001 | 7:4aa3dac73b66 | 61 | case 2: ct = (E_ledColor)u_ledovi.ledpar2; break; |
bosko001 | 7:4aa3dac73b66 | 62 | case 3: ct = (E_ledColor)u_ledovi.ledpar3; break; |
bosko001 | 7:4aa3dac73b66 | 63 | case 4: ct = (E_ledColor)u_ledovi.ledpar4; break; |
bosko001 | 7:4aa3dac73b66 | 64 | case 5: ct = (E_ledColor)u_ledovi.ledpar5; break; |
bosko001 | 7:4aa3dac73b66 | 65 | case 6: ct = (E_ledColor)u_ledovi.ledpar6; break; |
bosko001 | 7:4aa3dac73b66 | 66 | } |
bosko001 | 7:4aa3dac73b66 | 67 | return ct; |
bosko001 | 7:4aa3dac73b66 | 68 | |
bosko001 | 7:4aa3dac73b66 | 69 | } |
bosko001 | 7:4aa3dac73b66 | 70 | |
bosko001 | 7:4aa3dac73b66 | 71 | /********************************************************************************** */ |
bosko001 | 7:4aa3dac73b66 | 72 | |
bosko001 | 7:4aa3dac73b66 | 73 | // refresh beskonacna funkcija se poziva u C_threadu |
bosko001 | 7:4aa3dac73b66 | 74 | |
bosko001 | 7:4aa3dac73b66 | 75 | |
bosko001 | 7:4aa3dac73b66 | 76 | C_ledLight::C_ledLight( ) { } |
bosko001 | 7:4aa3dac73b66 | 77 | C_ledLight::C_ledLight( int stack ):C_thread( stack) { } |
bosko001 | 7:4aa3dac73b66 | 78 | |
bosko001 | 7:4aa3dac73b66 | 79 | void C_ledLight::set_ledLight( char no, E_ledColor c, char t) |
bosko001 | 7:4aa3dac73b66 | 80 | { |
bosko001 | 7:4aa3dac73b66 | 81 | if( no && no<=NO_LED ) {s_ledLight[no-1].ct = c; s_ledLight[no-1].tickPatern= t; } |
bosko001 | 7:4aa3dac73b66 | 82 | } |
bosko001 | 7:4aa3dac73b66 | 83 | |
bosko001 | 7:4aa3dac73b66 | 84 | void C_ledLight::set_ledLight( char no, E_ledColor c ) { if( no && no<=NO_LED ) {s_ledLight[no-1].ct = c;} } |
bosko001 | 7:4aa3dac73b66 | 85 | void C_ledLight::set_ledLightTickPatern( char no, char t ) { if( no && no<=NO_LED ) {s_ledLight[no-1].tickPatern = t;} } |
bosko001 | 7:4aa3dac73b66 | 86 | // void set_ledLight( char no, bool on ) { if( no && no<=NO_LED ) {s_ledLight[no-1].tickPatern = ((on==true) ? 0xff : 0);} } |
bosko001 | 7:4aa3dac73b66 | 87 | void C_ledLight::set_ledLightByte( char Port ) |
bosko001 | 7:4aa3dac73b66 | 88 | { |
bosko001 | 7:4aa3dac73b66 | 89 | for( char i=0, j=1; i<NO_LED; i++, j<<=1 ) { s_ledLight[ i ].tickPatern = ((Port & j) ? 0xff : 0); } |
bosko001 | 7:4aa3dac73b66 | 90 | } |
bosko001 | 7:4aa3dac73b66 | 91 | |
bosko001 | 7:4aa3dac73b66 | 92 | |
bosko001 | 7:4aa3dac73b66 | 93 | S_ledLight C_ledLight::get_ledLight( char no ) { return s_ledLight[no-1];} |
bosko001 | 7:4aa3dac73b66 | 94 | char C_ledLight::get_ledLightTickPatern( char no ) { return s_ledLight[no-1].tickPatern;} |
bosko001 | 7:4aa3dac73b66 | 95 | E_ledColor C_ledLight::get_ledLightColor( char no ) { return s_ledLight[no-1].ct;} |
bosko001 | 7:4aa3dac73b66 | 96 | |
bosko001 | 7:4aa3dac73b66 | 97 | void C_ledLight::apply_ledColorTemplate( const E_ledColor *e_ct ) |
bosko001 | 7:4aa3dac73b66 | 98 | { |
bosko001 | 7:4aa3dac73b66 | 99 | for( int i = 0; i<NO_LED; i++) s_ledLight[i].ct = e_ct[i]; |
bosko001 | 7:4aa3dac73b66 | 100 | } |
bosko001 | 7:4aa3dac73b66 | 101 | |
bosko001 | 7:4aa3dac73b66 | 102 | void C_ledLight::_refresh( void) |
bosko001 | 7:4aa3dac73b66 | 103 | { |
bosko001 | 7:4aa3dac73b66 | 104 | static char j=1; |
bosko001 | 7:4aa3dac73b66 | 105 | |
bosko001 | 7:4aa3dac73b66 | 106 | set_led( 1, (E_ledColor)( (get_ledLightTickPatern(1) & j) ? ((get_ledLightColor(1))) : 0 ) ); |
bosko001 | 7:4aa3dac73b66 | 107 | set_led( 2, (E_ledColor)( (get_ledLightTickPatern(2) & j) ? ((get_ledLightColor(2))) : 0 ) ); |
bosko001 | 7:4aa3dac73b66 | 108 | set_led( 3, (E_ledColor)( (get_ledLightTickPatern(3) & j) ? ((get_ledLightColor(3))) : 0 ) ); |
bosko001 | 7:4aa3dac73b66 | 109 | set_led( 4, (E_ledColor)( (get_ledLightTickPatern(4) & j) ? ((get_ledLightColor(4))) : 0 ) ); |
bosko001 | 7:4aa3dac73b66 | 110 | set_led( 5, (E_ledColor)( (get_ledLightTickPatern(5) & j) ? ((get_ledLightColor(5))) : 0 ) ); |
bosko001 | 7:4aa3dac73b66 | 111 | set_led( 6, (E_ledColor)( (get_ledLightTickPatern(6) & j) ? ((get_ledLightColor(6))) : 0 ) ); |
bosko001 | 7:4aa3dac73b66 | 112 | |
bosko001 | 7:4aa3dac73b66 | 113 | do_Sifter(); |
bosko001 | 7:4aa3dac73b66 | 114 | |
bosko001 | 7:4aa3dac73b66 | 115 | if( !(j<<=1) ) j = 1; |
bosko001 | 7:4aa3dac73b66 | 116 | |
bosko001 | 7:4aa3dac73b66 | 117 | ThisThread::sleep_for(125ms); |
bosko001 | 7:4aa3dac73b66 | 118 | |
bosko001 | 7:4aa3dac73b66 | 119 | } |
bosko001 | 7:4aa3dac73b66 | 120 | |
bosko001 | 7:4aa3dac73b66 | 121 | // void C_ledLight::refresh( void) |
bosko001 | 7:4aa3dac73b66 | 122 | // { |
bosko001 | 7:4aa3dac73b66 | 123 | |
bosko001 | 7:4aa3dac73b66 | 124 | // // set_ledLight(0, ledRed, 0xff); |
bosko001 | 7:4aa3dac73b66 | 125 | // // set_ledLight(2, ledGreen, 0b01110010); |
bosko001 | 7:4aa3dac73b66 | 126 | |
bosko001 | 7:4aa3dac73b66 | 127 | // // apply_ledColorTemplate(e_colorTemplate); |
bosko001 | 7:4aa3dac73b66 | 128 | // // set_ledLightTickPatern(3, 0xf); |
bosko001 | 7:4aa3dac73b66 | 129 | |
bosko001 | 7:4aa3dac73b66 | 130 | |
bosko001 | 7:4aa3dac73b66 | 131 | // // set_ledLight(3, ledOff); |
bosko001 | 7:4aa3dac73b66 | 132 | |
bosko001 | 7:4aa3dac73b66 | 133 | // //set_ledLightByte(0x1f); |
bosko001 | 7:4aa3dac73b66 | 134 | |
bosko001 | 7:4aa3dac73b66 | 135 | // while(true) |
bosko001 | 7:4aa3dac73b66 | 136 | // { |
bosko001 | 7:4aa3dac73b66 | 137 | |
bosko001 | 7:4aa3dac73b66 | 138 | // _refresh(); |
bosko001 | 7:4aa3dac73b66 | 139 | |
bosko001 | 7:4aa3dac73b66 | 140 | // //printf(" max_stack %d ratio %d\n\r", get_max_stack(), get_stack_ratio()); |
bosko001 | 7:4aa3dac73b66 | 141 | |
bosko001 | 7:4aa3dac73b66 | 142 | // } |
bosko001 | 7:4aa3dac73b66 | 143 | // } |
bosko001 | 7:4aa3dac73b66 | 144 | |
bosko001 | 7:4aa3dac73b66 | 145 | |
bosko001 | 7:4aa3dac73b66 | 146 | |
bosko001 | 7:4aa3dac73b66 | 147 |