⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irda.c

📁 MSP acquires data and sends through USB to PC. Check the link for PC capture software and project d
💻 C
字号:
/*
 * File:        irda.c
 * Purpose:     IRDA handling functions
 * Author:      Peter Ivanov, Olimex Ltd.
 * Modified by:
 * Created:     2007-05-19 11:29:32
 * Last modify: 2007-06-10 12:24:59 ivanovp {Time-stamp}
 * Copyright:   (C) Peter Ivanov, Olimex Ltd., 2007
 * Licence:     GPL
 */
/**
 * \file irda.c
 * \brief IRDA handling functions
 * \author Peter Ivanov, Olimex Ltd.
 */
#include <msp430xG461x.h>
#include "irda.h"

void InitUCA_UART(void) 
{

    // msb first, no parity, one stop, 8 bit
    UCA0CTL0 = 0x0;

    // clock -> SMCLK
    UCA0CTL1 = UCSSEL1;

    // Set 9600 baud rate
    // UCBRx  = 833
    // UCBRSx = 2
    // UCBRFx = 0
    // SMCLK  = 8 MHz
    UCA0BR0   = 0x41;
    UCA0BR1   = 0x03;
    UCA0MCTL  = 0x04;
    
    // Baud rate 115200
    //UCA0BR0   = 0x45;
    //UCA0BR1   = 0x00;
    //UCA0MCTL  = 0x04;

    // Set 9600 baud rate
    // UCBRx  = 833
    // UCBRSx = 2
    // UCBRFx = 0
    // SMCLK  = 2 MHz
    // UCA0BR0   = /*must to calculate*/0x00;		
    // UCA0BR1   = /*must to calculate*/0x00;	
    // UCA0MCTL  = /*must to calculate*/0x00;



    // IrDA encoder/decoder enabled - pulse length 5
    UCA0IRTCTL = UCIREN + UCIRTXPL5;

    // second functionality of pin
    P4SEL |= 0xc0;		// P4.6,47 UART option select
    P4DIR |= 0x40;		// P4.6 output direction

    // P7.7 - as otuput
    P7SEL &= ~0x80; // gpio
    P7DIR |= 0x80;  // output
    P7OUT |= 0x80;  // high/disable
}

void IRDAEnable(void) 
{
    // P7.7 to low
    P7OUT &= ~0x80;
}

void IRDADisable(void) 
{
    // P7.7 to high
    P7OUT |= 0x80;
}

void WriteByteUCA_UART(unsigned char data) 
{

    //while ((IFG2&UCA0TXIFG)==0);	// wait while not ready
    while(UCA0STAT&UCBUSY);
    UCA0TXBUF = data;		// write
}

unsigned char ReadByteUCA_UART(void) 
{
    //while ((IFG2&UCA0RXIFG)==0);	// wait for RX buffer (full)
    while(UCA0STAT&UCBUSY);
    return (UCA0RXBUF);
}


void InitIRDA(void)
{
    // init uart interface
    InitUCA_UART();

    // enable module
    IRDAEnable();
}

unsigned char TestIRDA(void)
{
    // This test is make with other board, which return echo via IRDA interface

    unsigned char i;
    unsigned char sample;
    unsigned char success;

    sample = 32;
    success = 0;

    InitIRDA();


    for(i=0; i<sample; i++) 
    {

        WriteByteUCA_UART(0x55);

        if(ReadByteUCA_UART() == 0x55) 
        {
            success++;
            break;
        }
    }


    for(i=0; i<sample; i++) 
    {

        WriteByteUCA_UART(0x11);

        if(ReadByteUCA_UART() == 0x11) 
        {
            success++;
            break;
        }
    }

    for(i=0; i<sample; i++) 
    {
        WriteByteUCA_UART(0xA0);

        if(ReadByteUCA_UART() == 0xA0) 
        {
            success++;
            break;
        }
    }

    for(i=0; i<sample; i++) 
    {

        WriteByteUCA_UART(0x66);

        if(ReadByteUCA_UART() == 0x66) 
        {
            success++;
            break;
        }
    }

    if(success == 4)
        return 0;
    else
        return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -