Esempio n. 1
0
void process_command(void)
{
    if ( ! TWI_Transceiver_Busy() )
    {
        if ( TWI_statusReg.RxDataInBuf )
        {
            TWI_Get_Data_From_Transceiver(messageBuf, 1);
            switch (messageBuf[0])
            { 
            case M_BLUE_TOGGLE:
                m_blue(TOGGLE);
                unsigned char twi_data_1[7];
                twi_data_1[0]=M_BLUE_TOGGLE;
                twi_data_1[1]=5;
                twi_data_1[2]=1;
                twi_data_1[3]=2;
                twi_data_1[4]=3;
                twi_data_1[5]=4;
                twi_data_1[6]=5;
                TWI_Start_Transceiver_With_Data(twi_data_1, 7);
                break;
            
            case SEND_ADC_DATA:
                m_green(TOGGLE);
                unsigned char twi_data_2[7];
                twi_data_2[0]=SEND_ADC_DATA;
                twi_data_2[1]=5;
                twi_data_2[2]=(adc_value & 0x00FF);
                twi_data_2[3]=((adc_value & 0xFF00)>>8);
                twi_data_2[4]=(adc_value & 0x00FF);
                twi_data_2[5]=((adc_value & 0xFF00)>>8);
                twi_data_2[6]=0xAA;
                TWI_Start_Transceiver_With_Data(twi_data_2, 7);
                break;
            
            case M_GREEN_ON:
                m_green(ON);
                break;
				
            case M_BLUE_ON:
                m_blue(ON);
                break;
            }
        }
    }
Esempio n. 2
0
 virtual void
 convert( norm_double val, NormRgb & nrgb ) override
 {
     if ( ! std::isfinite( val ) ) {
         nrgb.fill(0.0);
     }
     nrgb[0] = m_red(val);
     nrgb[1] = m_green(val);
     nrgb[2] = m_blue(val);
 }
Esempio n. 3
0
void process_command(void)
{
    if (twi_data.data_length > 255) // in the m_twi.h, the buffer size is defined as 255, you can change this value
    {
        twi_data.command = I2C_ERROR;
        twi_data.data_length = 0;
        return;
    }
    
    switch (twi_data.command)
    {
            
        case M_BLUE_TOGGLE:
            m_blue(TOGGLE);
            twi_data.command=M_BLUE_TOGGLE;
            twi_data.data_length=5;
            twi_data.data[0]=1;
            twi_data.data[1]=2;
            twi_data.data[2]=3;
            twi_data.data[3]=4;
            twi_data.data[4]=5;
            break;
            
        case M_GREEN_TOGGLE:
            m_green(TOGGLE);
            twi_data.command=M_GREEN_TOGGLE;
            twi_data.data_length=4;
            twi_data.data[0]=5;
            twi_data.data[1]=6;
            twi_data.data[2]=7;
            twi_data.data[3]=8;
            break;
            
        case M_GREEN_ON:
            m_green(ON);
            break;
            
        case M_BLUE_ON:
            m_blue(ON);
            break;
    }
}
Esempio n. 4
0
int main(void)
{
    /* insert your hardware initialization here */
    InitPeripherals();
    
#ifdef MASTER
    USART USART_CHANNEL;
    USART_CHANNEL.USART_BAUDRATE = 9600;
    USART_CHANNEL.USART_RECEIVER_STATUS = RECEIVER_ENABLE;
    USART_CHANNEL.USART_TRANSMITTER_STATUS = TRANSMITTER_ENABLE;
    USART_CHANNEL.USART_STOP_BIT = 1;
    USART_CHANNEL.USART_PARITY = PARITY_EVEN;
    
    USART_Init(USART_CHANNEL);
    
    clear(TCCR1B, CS12);
    clear(TCCR1B, CS11);
    set(TCCR1B, CS10);  // prescalar is 1
    
    set(TCCR1B, WGM13);
    set(TCCR1B, WGM12);
    set(TCCR1A, WGM11);
    clear(TCCR1A, WGM10);
    
    set(TCCR1A, COM1A1);
    set(TCCR1A, COM1A0);
    
    set(DDRB, 1);
    
    ICR1 = (int)(8000000/500000) - 1;
    
    OCR1A = (int)((float)ICR1 * 0.5);   // common minus output 500KHz signals
    
    set(DDRD, 5);
    set(PORTD, 5);    // COIL3 PLUS on
    
//    unsigned long frequency = 500000;
//    float duty_cycle = 0.5;
//    unsigned int pulse_number = 3;
//    init_coil(frequency, duty_cycle, pulse_number);
//    
//    COIL3_PLUS_ON;
//    
//    drive_coil_communication();

    sei();
    
#endif
    
#ifdef SLAVE
//    unsigned long frequency = 500000;
//    float duty_cycle = 0.5;
//    unsigned int pulse_number = 3;
//    init_coil(frequency, duty_cycle, pulse_number);
//    COIL1_MINUS_ON;
    set(DDRD, 4);
    set(PORTD, 4);  // COIL2_MINUS on

    set(DDRD, 1);
    set(PORTD, 1);  // USART TX is high


    set(DDRB, 3);
    set(PORTB, 3);    // turn on receiver
#endif
    
    m_green(ON);m_yellow(ON);m_blue(ON);
    m_wait(1000);
    m_green(OFF);m_yellow(OFF);m_blue(OFF);
    m_wait(2000);
    for(;;){
        /* insert your main loop code here */
#ifdef MASTER
        set(PORTD, 5);
        USART_Transmit_string("MODLAB!\n\r");
        clear(PORTD, 5);
        m_wait(1000);
#endif
#ifdef SLAVE
        m_blue(TOGGLE);
#endif
    }
    return 0;   /* never reached */
}