bosko lekovic
/
IO_spi
IO spi
SPIledovi/LedLight.cpp
- Committer:
- bosko001
- Date:
- 2021-03-21
- Revision:
- 9:a4360a7713f5
- Parent:
- 7:4aa3dac73b66
File content as of revision 9:a4360a7713f5:
#include "LedLight.h" #include "ClassThreadAbstract.h" #include "mbed.h" // DigitalOut led(LED1,3); /************************************** class C_spi ******************************************* */ C_spi::C_spi( PinName mosi, PinName miso, PinName sclk, PinName pin_csdata ): SPI( mosi, miso, sclk) //SPI( PTD2, PTD3, PTD1 ) { p_csdata = new DigitalOut( pin_csdata,1); format( 16, 0); frequency(10000000); } unsigned short C_spi::transfer( unsigned short tx ) { // led = 0; *p_csdata = 0; *p_csdata = 1; unsigned short rx = write( tx ); *p_csdata = 0; *p_csdata = 1; // led = 1; return rx; } /********************************************************************************** */ /********************************************************************************** */ C_spiled::C_spiled():C_spi( PTD2, PTD3, PTD1, PTC4)//, C_thread() { } void C_spiled::do_Sifter( void ) { sifter = u_ledovi.ledovi<<2; received = transfer(sifter); } void C_spiled::set_led( char no, E_ledColor ct ) { switch( no ) { case 1: u_ledovi.ledpar1 = ct; break; case 2: u_ledovi.ledpar2 = ct; break; case 3: u_ledovi.ledpar3 = ct; break; case 4: u_ledovi.ledpar4 = ct; break; case 5: u_ledovi.ledpar5 = ct; break; case 6: u_ledovi.ledpar6 = ct; break; } } E_ledColor C_spiled::get_led( char no ) { E_ledColor ct; switch( no ) { case 1: ct = (E_ledColor)u_ledovi.ledpar1; break; case 2: ct = (E_ledColor)u_ledovi.ledpar2; break; case 3: ct = (E_ledColor)u_ledovi.ledpar3; break; case 4: ct = (E_ledColor)u_ledovi.ledpar4; break; case 5: ct = (E_ledColor)u_ledovi.ledpar5; break; case 6: ct = (E_ledColor)u_ledovi.ledpar6; break; } return ct; } /********************************************************************************** */ // refresh beskonacna funkcija se poziva u C_threadu C_ledLight::C_ledLight( ) { } C_ledLight::C_ledLight( int stack ):C_thread( stack) { } void C_ledLight::set_ledLight( char no, E_ledColor c, char t) { if( no && no<=NO_LED ) {s_ledLight[no-1].ct = c; s_ledLight[no-1].tickPatern= t; } } void C_ledLight::set_ledLight( char no, E_ledColor c ) { if( no && no<=NO_LED ) {s_ledLight[no-1].ct = c;} } void C_ledLight::set_ledLightTickPatern( char no, char t ) { if( no && no<=NO_LED ) {s_ledLight[no-1].tickPatern = t;} } // void set_ledLight( char no, bool on ) { if( no && no<=NO_LED ) {s_ledLight[no-1].tickPatern = ((on==true) ? 0xff : 0);} } void C_ledLight::set_ledLightByte( char Port ) { for( char i=0, j=1; i<NO_LED; i++, j<<=1 ) { s_ledLight[ i ].tickPatern = ((Port & j) ? 0xff : 0); } } S_ledLight C_ledLight::get_ledLight( char no ) { return s_ledLight[no-1];} char C_ledLight::get_ledLightTickPatern( char no ) { return s_ledLight[no-1].tickPatern;} E_ledColor C_ledLight::get_ledLightColor( char no ) { return s_ledLight[no-1].ct;} void C_ledLight::apply_ledColorTemplate( const E_ledColor *e_ct ) { for( int i = 0; i<NO_LED; i++) s_ledLight[i].ct = e_ct[i]; } void C_ledLight::_refresh( void) { static char j=1; set_led( 1, (E_ledColor)( (get_ledLightTickPatern(1) & j) ? ((get_ledLightColor(1))) : 0 ) ); set_led( 2, (E_ledColor)( (get_ledLightTickPatern(2) & j) ? ((get_ledLightColor(2))) : 0 ) ); set_led( 3, (E_ledColor)( (get_ledLightTickPatern(3) & j) ? ((get_ledLightColor(3))) : 0 ) ); set_led( 4, (E_ledColor)( (get_ledLightTickPatern(4) & j) ? ((get_ledLightColor(4))) : 0 ) ); set_led( 5, (E_ledColor)( (get_ledLightTickPatern(5) & j) ? ((get_ledLightColor(5))) : 0 ) ); set_led( 6, (E_ledColor)( (get_ledLightTickPatern(6) & j) ? ((get_ledLightColor(6))) : 0 ) ); do_Sifter(); if( !(j<<=1) ) j = 1; ThisThread::sleep_for(125ms); } // void C_ledLight::refresh( void) // { // // set_ledLight(0, ledRed, 0xff); // // set_ledLight(2, ledGreen, 0b01110010); // // apply_ledColorTemplate(e_colorTemplate); // // set_ledLightTickPatern(3, 0xf); // // set_ledLight(3, ledOff); // //set_ledLightByte(0x1f); // while(true) // { // _refresh(); // //printf(" max_stack %d ratio %d\n\r", get_max_stack(), get_stack_ratio()); // } // }