Beispiel #1
0
int main(){

    // allocate buffer size for input
    char buf[MAX_BUFFER_SIZE];
    CyGlobalIntEnable;      /* Enable global interrupts */
    
    // start UART
    UART_1_Start();
    
    // print line
    strcpy(buf, "Established Communication \n \r");
    UART_1_UartPutString(buf);
    
    uint v4 = 0x56; // hex representation of the integer
    uint vv4 = reverseBits(v4);
    
    // print result
    // integer to string to be printed
    sprintf(buf, "%X", vv4);
    strcat(buf, "\n \r");
    UART_1_UartPutString(buf);
    
    
    for(;;){}
}
Beispiel #2
0
int main()
{
    /*UART initiering*/
    UART_1_Start();
    UART_1_UartPutString("This is a unit test of accelerometer ADXL345\n\r\n");
    /*I2C initiering*/
    I2C_1_Start(); 
    I2C_1_I2CMasterClearStatus();
    
    /*Opsætter accellerometer til I2C*/
    if(I2C_1_I2CMasterSendStart(ACCEL_ADDRESS, I2C_1_I2C_WRITE_XFER_MODE) == I2C_1_I2C_MSTR_NO_ERROR
        && I2C_1_I2CMasterWriteByte(PWR_CTRL_REG) == I2C_1_I2C_MSTR_NO_ERROR
        && I2C_1_I2CMasterWriteByte(PWR_MODE) == I2C_1_I2C_MSTR_NO_ERROR) 
    UART_1_UartPutString("Accelerometer ADXL345 initialized.\n\r\n");
    UART_1_UartPutString("10000 reads, from reg DEVID, will now be performed.\n\rPlease wait.\n\r\n");
    
    I2C_1_I2CMasterSendStop();
    int errors = 0; //Variabel til at tælle fejl 
    int i;
    for(i = 0; i < 10000; i++) //Forløkke som løber igennem læsningen 10000 gange. (fra DEVID) 
    {
        if (I2C_1_I2CMasterSendStart(ACCEL_ADDRESS, I2C_1_I2C_WRITE_XFER_MODE) == I2C_1_I2C_MSTR_NO_ERROR) /* Tjekker om transfer er sket uden fejl */
        { 
            if(I2C_1_I2CMasterWriteByte(DEVID) == I2C_1_I2C_MSTR_NO_ERROR)
            {
                if(I2C_1_I2CMasterSendRestart(ACCEL_ADDRESS, I2C_1_I2C_READ_XFER_MODE) == I2C_1_I2C_MSTR_NO_ERROR)
                {
                    rawData = I2C_1_I2CMasterReadByte(I2C_1_I2C_NAK_DATA); //Læser og gemmer læsningen i rawData
                    I2C_1_I2CMasterSendStop();
                    
                    if(rawData != 0xE5)errors++; //Hvis der læses andet end device ID, inkrementeres fejl. 
                    
                }
                else
                {
                    I2C_1_I2CMasterSendStop(); /* Send Stop */
                    errors++;
                }
            } 
            else 
            {
                errors++;
            }
        }
        else
        {
            I2C_1_I2CMasterSendStop(); /* Send Stop */
            errors++;
        }
        
    }
    
    char errorString[32];
    sprintf(errorString,  "Finished reading.\n\rErrors: %d\n\r\n", errors); //Gemmer antal errors i en string
    UART_1_UartPutString(errorString); //Udskriver hvor mange fejl. 
    char readingString[32];
    sprintf(readingString,  "Data from register: %d\n\r\n", rawData); // Gemmer rawData i som en string
    UART_1_UartPutString(readingString); //Udskriver hvad der står på rawData i UART
    while(1);
}
int main()
{
    // Enable global interrupts
    CyGlobalIntEnable;
    
    // Enable bootloader button
    // (need to clear pending interrupt first)
    isr_1_ClearPending();
    isr_1_StartEx(isr_bootloader);
    
    // Enable analog multiplexer (chooses thermocouple input)
    AMux_1_Start();
    
    // Enable op-amp (amplifies thermocouple signal)
    Opamp_1_Start();
    
    // Enable ADC (reads amplified signal)
    ADC_SAR_Seq_1_Start();
    ADC_SAR_Seq_1_StartConvert();
    
    // Enable serial transmission
    UART_1_Start();
    
    // To avoid a flash on power-on, the relay pin is configured as a
    // high impedance input initially
    // Because some guy on the internet says so:
    // http://www.cypress.com/forum/psoc-4-architecture/low-initial-drive-state-pwm-components
    Pin_Relays_Write(1); // HIGH to turn PNP transistor OFF
    Pin_Relays_SetDriveMode(Pin_Relays_DM_STRONG);
    
    for(;;) {
        // Read thermocouples and send over serial
        // Note that externally (and over serial communication),
        // 0 is T1, 1 is T2, and 2 is T3
        SendTemperature(0, ADC_OFFSET_0, OPAMP_GAIN_FACTOR_0);
        SendTemperature(1, ADC_OFFSET_1, OPAMP_GAIN_FACTOR_1);
        SendTemperature(2, ADC_OFFSET_2, OPAMP_GAIN_FACTOR_2);
        
        // Newline for easier debugging
        UART_1_UartPutString("\r\n");
        
        // Wait a bit, processing serial command input in between delays
        uint8 i;
        for (i = 0; i < 5; i++) {
            ReadSerialInput();
            CyDelay(100);
        }
        
        // Safety feature: Ensure that the relays do not stay on for more than
        // ~30 seconds without communication from the serial control program
        if (relayState) {
            if (++relayOnCycles >= 60) {
                UART_1_UartPutString("R=0 (inactivity)\r\n");
                SetRelays(0);
            }
        } else {
            relayOnCycles = 0;
        }
    }
}
Beispiel #4
0
int main()
{
    CyGlobalIntDisable;
    isr_sw_StartEx(SW_Int);

    
    CyGlobalIntEnable;      /* Enable global interrupts */

    UART_1_Start();
    Timer_1_Start();
    Timer_2_Start();
    
    
    for(;;)
    {

      if(press == 2){
            
                        
            time_s = abs(seconds_new - seconds_old)/1000;
            time_ms = (ms_old + 24000 - ms_new);
            
            UART_1_UartPutString("\n \r Time Between Presses: ");
            PrintInt(time_s);
            UART_1_UartPutString(".");
            PrintInt(time_ms);
            UART_1_UartPutString(" s");
            press = 0; 
        }
}
}
Beispiel #5
0
int main()
{
    char uartBuffer[80];
    char lcdBuffer[16];
    
    UART_1_Start();    
    UART_1_UartPutString("Sequencer Board Test\r\n");
    
    // Sequence Boardをリセット
    Pin_I2C_Reset_Write(0u);
    CyDelay(1);
    Pin_I2C_Reset_Write(1u);
    
    /* Init I2C */
    I2CM_Start();
    CyDelay(1500);
    
    CyGlobalIntEnable;
    
    LCD_Init();
    LCD_Clear();
	LCD_Puts("Sequencer Board");
    
    CyDelay(1000);
        
    for(;;)
    {  
        if (readSequencerBoard() == I2C_TRANSFER_CMPLT) {
            sprintf(uartBuffer, "%d %d %d %d %d %d ",
                sequencerRdBuffer[0],
                sequencerRdBuffer[1],
                sequencerRdBuffer[2],
                sequencerRdBuffer[3],
                sequencerRdBuffer[4],
                sequencerRdBuffer[5]
            );
            UART_1_UartPutString(uartBuffer);
        }
        else {
            UART_1_UartPutString("I2C Master Sequencer Read Error.\r\n");
        }
        
        if (writeSequencerBoard() == I2C_TRANSFER_CMPLT) {
            sprintf(uartBuffer, "%d\r\n", sequencerWrBuffer[0]);
            UART_1_UartPutString(uartBuffer);
        }
        else {
            UART_1_UartPutString("I2C Master Sequencer Write Error.\r\n");
        }
        
        sprintf(lcdBuffer, "%d", sequencerWrBuffer[0]);
        LCD_Clear();
        LCD_Puts(lcdBuffer);
        
        sequencerWrBuffer[0] = inc_within_uint8(sequencerWrBuffer[0], 16, 0);
        
        CyDelay(125);
    }
}
Beispiel #6
0
void UART_printCheck(char* message, bool success)
{
    
    if(success)
        // Prints an [ OK ] message with green "OK"
        UART_1_UartPutString("\033[1m[\033[32m OK \033[39m]\033[0m ");
    else
        // Prints an [FAIL] message with red "FAIL"
        UART_1_UartPutString("\033[1m[\033[31mFAIL\033[39m]\033[0m ");
    
    
    UART_1_UartPutString(message);
}
int main(){
    uint32 rxData;
    UART_1_Start();
    
    CyGlobalIntDisable;
    
        UART_1_UartPutString("Established connection to terminal. \n \r");
        
        UART_1_UartPutString("\n\r Hours: ");
        hr = ReadInt();
        UART_1_UartPutString("\n\r Minutes: ");
        min = ReadInt();
        UART_1_UartPutString("\n\r Seconds: ");
        sec = ReadInt();
        
        Uart_Int_Start();
        Uart_Int_SetVector(uartISR);
        
        myTimer_Int_StartEx(timerISR); 
    CyGlobalIntEnable;

    TIMER_1_Start();
    
    for(;;){
        if(tc_count >= 1000)
        {
            tc_count = 0;
            sec++;
            
            if(sec > 59){
                sec = 0;
                min++;
            }
            if(min > 59){
                min = 0;
                hr++;
            }
            
            char buffer[64];
            sprintf(buffer, "%02d:%02d:%02d \n \r",hr,min,sec);
            UART_1_UartPutString(buffer);
        }
        if(resetFlag == 1){
            TIMER_1_Stop();
            UART_1_UartPutString("\n\r Hours: ");
            hr = ReadInt();
            UART_1_UartPutString("\n\r Minutes: ");
            min = ReadInt();
            UART_1_UartPutString("\n\r Seconds: ");
            sec = ReadInt();
        }
            TIMER_1_Start();  
    }
}
void ProcessSerialCommand(char * command) {
    if (strcmp(command, "ON\n") == 0) {
        UART_1_UartPutString("R=1 (command: ON)\r\n");
        SetRelays(1);
    } else if (strcmp(command, "OFF\n") == 0) {
        UART_1_UartPutString("R=0 (command: OFF)\r\n");
        SetRelays(0);
    } else {
        uint16 len = sprintf(serialBuf, "Received unknown command (");
        uint16 i = 0;
        char c;
        while ((c = command[i++]) > 0) {
            if (c >= 32 && c <= 126) {
                serialBuf[len++] = c;
            } else {
                len += sprintf(serialBuf + len, "\\x%02x", c);
            }
        }
        len += sprintf(serialBuf + len, ")\r\n");
        serialBuf[len] = 0;
        UART_1_UartPutString(serialBuf);
    }
}
void SendTemperature(uint8 channel, int16 adcOffset, int32 opampGainFactor) {
#define NUM_ADC_READINGS 16
    // Select the desired thermocouple input
    AMux_1_Select(channel);
    
    // Wait for op-amp to settle
    CyDelay(1);
    
    // Discard a result from ADC (probably unnecessary)
    ADC_SAR_Seq_1_IsEndConversion(ADC_SAR_Seq_1_WAIT_FOR_RESULT);
    
    // Average together a bunch of ADC readings
    // (note the hardware is already averaging 256 samples at a time)
    int32 adcReadingTotal = 0;
    uint8 i = 0;
    for (i = 0; i < NUM_ADC_READINGS; i++) {
        ADC_SAR_Seq_1_IsEndConversion(ADC_SAR_Seq_1_WAIT_FOR_RESULT);
        adcReadingTotal += ADC_SAR_Seq_1_GetResult16(0) - adcOffset;
    }
    int16 adcReading = adcReadingTotal / NUM_ADC_READINGS;
    
    // Convert to microvolts
    int32 hotJunctionVolts = ADC_SAR_Seq_1_CountsTo_uVolts(0, adcReading);
    
    // Reading was amplified by op-amp
    hotJunctionVolts = hotJunctionVolts * 100 / opampGainFactor;
    
    // Adjust for temperature at cold side of thermocouple
    int32 coldJunctionVolts = Thermocouple_1_GetVoltage(ROOM_TEMPERATURE);
    
    // Read temperature (100 * degrees C)
    int32 temperature = Thermocouple_1_GetTemperature(hotJunctionVolts + coldJunctionVolts);
    
    // Send over serial
    sprintf(
        serialBuf,
        "T%d=%ld (adc=%hd uvHot=%ld uvCold=%ld)\r\n",
        channel + 1,
        temperature,
        adcReading, hotJunctionVolts, coldJunctionVolts
    );
    UART_1_UartPutString(serialBuf);
}
Beispiel #10
0
void UART_printInt(uint16 number)
{
    char message[5];
    sprintf(message, "%d", number);
    UART_1_UartPutString(message);
}
Beispiel #11
0
void PrintInt(int b){
    char buf[10];
    sprintf(buf, "%d", b); 
    UART_1_UartPutString(buf);

}