initial commit
This commit is contained in:
Executable
+74
@@ -0,0 +1,74 @@
|
||||
File Name Description
|
||||
----------------------------------------------------------------------------------------
|
||||
msp430x20x1_ca_01.c Comp_A, Output Reference Voltages on P1.1
|
||||
msp430x20x1_ca_02.c Comp_A, Detect Threshold, Set P1.0 if P1.1 > 0.25*Vcc
|
||||
msp430x20x1_ca_03.c Comp_A, Simple 2.2V Low Battery Detect
|
||||
msp430x20x2_adc10_01.c ADC10, Sample A0, Set P1.0 if A0 > 0.5*AVcc
|
||||
msp430x20x2_adc10_02.c ADC10, Sample A1, 1.5V Ref, Set P1.0 if A1 > 0.2V
|
||||
msp430x20x2_adc10_03.c ADC10, ADC10, Sample A10 Temp, Set P1.0 if Temp ++ ~2C
|
||||
msp430x20x2_adc10_04.c ADC10, ADC10, Sample A1, Signed, Set P1.0 if A1 > 0.5*AVcc
|
||||
msp430x20x2_adc10_05.c ADC10, ADC10, Sample A11, Lo_Batt, Set P1.0 if AVcc < 2.3V
|
||||
msp430x20x2_adc10_06.c ADC10, ADC10, Output Internal Vref on P1.4 & ADCCLK on P1.3
|
||||
msp430x20x2_adc10_07.c ADC10, DTC Sample A1 32x, AVcc, Repeat Single, DCO
|
||||
msp430x20x2_adc10_08.c ADC10, ADC10, DTC Sample A1 32x, 1.5V, Repeat Single, DCO
|
||||
msp430x20x2_adc10_09.c ADC10, ADC10, DTC Sample A10 32x, 1.5V, Repeat Single, DCO
|
||||
msp430x20x2_adc10_10.c ADC10, ADC10, DTC Sample A3-01, AVcc, Single Sequence, DCO
|
||||
msp430x20x2_adc10_11.c ADC10, ADC10, Sample A1, 1.5V, TA1 Trig, Set P1.0 if > 0.5V
|
||||
msp430x20x2_adc10_12.c ADC10, Sample A7, 1.5V, TA1 Trig, Ultra-Low Pwr
|
||||
msp430x20x2_adc10_13.c ADC10, DTC Sample A1 32x, AVcc, TA0 Trig, DCO
|
||||
msp430x20x2_adc10_14.c ADC10, DTC Sample A1-0 16x, AVcc, Repeat Seq, DCO
|
||||
msp430x20x2_adc10_16.c ADC10, ADC10, DTC Sample A0 -> TA1, AVcc, DCO
|
||||
msp430x20x2_adc10_temp.c ADC10, Sample A10 Temp and Convert to oC and oF
|
||||
msp430x20x3_1.c Software Toggle P1.0
|
||||
msp430x20x3_1_vlo.c Software Toggle P1.0, MCLK = VLO/8
|
||||
msp430x20x3_clks.c Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10
|
||||
msp430x20x3_dco_calib.c Basic Clock with preloaded DCO calibration constants
|
||||
msp430x20x3_flashwrite_01.c Flash In-System Programming, Copy SegC to SegD
|
||||
msp430x20x3_LFxtal_nmi.c LFXT1 Oscillator Fault Detection
|
||||
msp430x20x3_lpm3.c Basic Clock, LPM3 Using WDT ISR, 32kHz ACLK
|
||||
msp430x20x3_lpm3_vlo.c Basic Clock, LPM3 Using WDT ISR, VLO ACLK
|
||||
msp430x20x3_nmi.c Basic Clock, Configure RST/NMI as NMI
|
||||
msp430x20x3_P1_01.c Software Poll P1.4, Set P1.0 if P1.4 = 1
|
||||
msp430x20x3_P1_02.c Software Port Interrupt Service on P1.4 from LPM4
|
||||
msp430x20x3_P1_03.c Poll P1 With Software with Internal Pull-up
|
||||
msp430x20x3_P1_04.c P1 Interrupt from LPM4 with Internal Pull-up
|
||||
msp430x20x3_sd16A_01.c SD16A, Sample A1+ Continuously, Set P1.0 if > 0.3V
|
||||
msp430x20x3_sd16A_02.c SD16, Using the Integrated Temperature Sensor
|
||||
msp430x20x3_sd16A_03.c The SD16A sample of a single sequence of channels
|
||||
msp430x20x3_ta_01.c Timer_A, Toggle P1.0, CCR0 Cont. Mode ISR, DCO SMCLK
|
||||
msp430x20x3_ta_02.c Timer_A, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK
|
||||
msp430x20x3_ta_03.c Timer_A, Toggle P1.0, Overflow ISR, DCO SMCLK
|
||||
msp430x20x3_ta_04.c Timer_A, Toggle P1.0, Overflow ISR, 32kHz ACLK
|
||||
msp430x20x3_ta_05.c Timer_A, Toggle P1.0, CCR0 Up Mode ISR, 32kHz ACLK
|
||||
msp430x20x3_ta_06.c Timer_A, Toggle P1.0, CCR1 Cont. Mode ISR, DCO SMCLK
|
||||
msp430x20x3_ta_07.c Timer_A, Toggle P1.0-2, Cont. Mode ISR, DCO SMCLK
|
||||
msp430x20x3_ta_08.c Timer_A, Toggle P1.0-2, Cont. Mode ISR, 32kHz ACLK
|
||||
msp430x20x3_ta_10.c Timer_A, Toggle P1.1/TA0, Up Mode, DCO SMCLK
|
||||
msp430x20x3_ta_11.c Timer_A, Toggle P1.1/TA0, Up Mode, 32kHz ACLK
|
||||
msp430x20x3_ta_13.c Timer_A, Toggle P1.1/TA0, Up/Down Mode, DCO SMCLK
|
||||
msp430x20x3_ta_14.c Timer_A, Toggle P1.1/TA0, Up/Down Mode, 32kHz ACLK
|
||||
msp430x20x3_ta_16.c Timer_A, PWM TA1-2, Up Mode, DCO SMCLK
|
||||
msp430x20x3_ta_17.c Timer_A, PWM TA1, Up Mode, 32kHz ACLK
|
||||
msp430x20x3_ta_19.c Timer_A, PWM TA1, Up/Down Mode, DCO SMCLK
|
||||
msp430x20x3_ta_20.c Timer_A, PWM TA1, Up/Down Mode, 32kHz ACLK
|
||||
msp430x20x3_ta_uart2400.c Timer_A, Ultra-Low Pwr UART 2400 Echo, 32kHz ACLK
|
||||
msp430x20x3_usi_01.c USICNT Used as a One-Shot Timer Function, DCO SMCLK
|
||||
msp430x20x3_usi_02.c SPI full-Duplex 3-wire Master
|
||||
msp430x20x3_usi_03.c SPI full-Duplex 3-wire Slave
|
||||
msp430x20x3_usi_04.c USI SPI Interface with HC165/164 Shift Registers
|
||||
msp430x20x3_usi_05.c USI SPI Interface to TLC549 8-bit ADC
|
||||
msp430x20x3_usi_06.c I2C Master Receiver, single byte
|
||||
msp430x20x3_usi_07.c I2C Master Transmitter, single byte
|
||||
msp430x20x3_usi_08.c I2C Slave Receiver, single byte
|
||||
msp430x20x3_usi_09.c I2C Slave Transmitter, single byte
|
||||
msp430x20x3_usi_12.c I2C Master Transmitter / Receiver, Multiple Bytes (no rpt st)
|
||||
msp430x20x3_usi_15.c I2C Slave Receiver Universal code (to be used with usi_12)
|
||||
msp430x20x3_usi_16.c I2C Master Transmitter / Reciever, Repeated Start (to be used with usi_15)
|
||||
msp430x20x3_wdt_01.c WDT, Toggle P1.0, Interval Overflow ISR, DCO SMCLK
|
||||
msp430x20x3_wdt_02.c WDT, Toggle P1.0, Interval Overflow ISR, 32kHz ACLK
|
||||
msp430x20x3_wdt_04.c WDT+ Failsafe Clock, DCO SMCLK
|
||||
msp430x20x3_wdt_05.c Reset on Invalid Address fetch, Toggle P1.0
|
||||
msp430x20x3_wdt_06.c WDT+ Failsafe Clock, 32kHz ACLK
|
||||
msp430x20x3_wdt_07.c WDT+ periodic reset
|
||||
msp430x20xx_dco_flashcal.c DCO Calibration Constants Programmer
|
||||
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x1 Demo - Comp_A, Output Reference Voltages on P1.1
|
||||
//
|
||||
// Description: Output Comparator_A reference levels on P1.1. Program will
|
||||
// cycle through the on-chip comparator_A reference voltages with output on
|
||||
// P1.1. Normal mode is LPM0, TA0_ISR will interrupt LPM0.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20x1
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.1/CA1|--> Vref
|
||||
// | |
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// December 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
void delay(void); // Software delay
|
||||
|
||||
int main (void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
CACTL2 = P2CA4; // CA1/P1.1 = +comp
|
||||
CCTL0 = CCIE; // CCR0 interrupt enabled
|
||||
TACTL = TASSEL_2 + ID_3 + MC_2; // SMCLK/8, cont-mode
|
||||
__enable_interrupt(); // enable interrupts
|
||||
|
||||
while (1) // Loop
|
||||
{
|
||||
CACTL1 = 0x00; // No reference voltage
|
||||
__bis_SR_register(LPM0_bits); // Enter LPM0
|
||||
CACTL1 = CAREF0 + CAON; // 0.25*Vcc, Comp. on
|
||||
__bis_SR_register(LPM0_bits); // Enter LPM0
|
||||
CACTL1 = CAREF1 + CAON; // 0.5*Vcc, Comp. on
|
||||
__bis_SR_register(LPM0_bits); // Enter LPM0
|
||||
CACTL1 = CAREF1 + CAREF0 + CAON; // 0.55V, Comp. on
|
||||
__bis_SR_register(LPM0_bits); // Enter LPM0
|
||||
}
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(LPM0_bits); // Clear LPM0 bits from 0(SR)
|
||||
}
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x1 Demo - Comp_A, Detect Threshold, Set P1.0 if P1.1 > 0.25*Vcc
|
||||
//
|
||||
// Description: Use Comparator_A to detect a voltage threshold.
|
||||
// Using an external potentiometer, an unknown voltage is applied to P1.1.
|
||||
// Comparator_A compares the unknown voltage to an internal reference
|
||||
// voltage, in this example 0.25*VCC. If the unknown voltage is higher
|
||||
// than 0.25*VCC, P1.0 is set, if not, P1.0 is reset.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20x1
|
||||
// -----------------
|
||||
// /|\ | XIN|-
|
||||
// | | |
|
||||
// ---|RST XOUT|-
|
||||
// | | |
|
||||
// R<-|P1.1/CA1 P1.0|-->LED
|
||||
// | | |
|
||||
// ---|VSS
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// December 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main (void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
CACTL1 = CARSEL + CAREF0 + CAON; // 0.25 Vcc = -comp, on
|
||||
CACTL2 = P2CA4; // P1.1/CA1 = +comp
|
||||
|
||||
while (1) // Test comparator_A output
|
||||
{
|
||||
if ((CAOUT & CACTL2))
|
||||
P1OUT |= 0x01; // if CAOUT set, set P1.0
|
||||
else P1OUT &= ~0x01; // else reset
|
||||
}
|
||||
}
|
||||
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x1 Demo - Comp_A, Simple 2.2V Low Battery Detect
|
||||
//
|
||||
// Description: Two comparator_A reference generators 0.25*Vcc and ~0.55V
|
||||
// are compared for a simple battery check of 2.2V. In the subroutine
|
||||
// Batt_Check, a small capacitor between P2.3 and Vss is first charged
|
||||
// to 0.25*Vcc and then compared to ~0.55V. If 0.25*Vcc,
|
||||
// is above ~0.55V, P1.0 is toggled, else set. Batt_Check is called
|
||||
// constantly in an endless loop - in an actual application, Batt_Check
|
||||
// should be called infrequently to save power.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// There is a tolerance of the Comp_A reference generator and in the
|
||||
// device specific datasheet. In most applications, the tolerence of the
|
||||
// reference generator is more than adequate to detect Low Battery.
|
||||
//
|
||||
// MSP430F20x1
|
||||
// -----------------
|
||||
// /|\ | XIN|-
|
||||
// | | |
|
||||
// ---|RST XOUT|-
|
||||
// | |
|
||||
// +-----|P1.1/CA1 P1.0|-->LED
|
||||
// | | |
|
||||
// ===.1uf| |
|
||||
// | | |
|
||||
// +-----|Vss
|
||||
//
|
||||
void Batt_Check(void);
|
||||
unsigned int i;
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// December 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main (void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
CACTL2 = P2CA4; // P1.1 = CA1
|
||||
while (1) // Mainloop
|
||||
{
|
||||
Batt_Check();
|
||||
}
|
||||
}
|
||||
|
||||
void Batt_Check(void) {
|
||||
CACTL1 = CAREF_1 + CAON; // 0.25*Vcc on P1.1, Comp. on
|
||||
i = 16384; // delay
|
||||
while(i>0) {
|
||||
i--;
|
||||
}
|
||||
CACTL1 = CARSEL + CAREF_2 + CAREF_1 + CAON; // 0.55V on -, Comp. on
|
||||
if (CACTL2 & CAOUT)
|
||||
P1OUT ^= 0x01; // P1.0 toggle
|
||||
else P1OUT |= 0x01; // P1.0 set
|
||||
CACTL1 = 0x00; // Disable Comp_A, save power
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A1, AVcc Ref, Set P1.0 if > 0.5*AVcc
|
||||
//
|
||||
// Description: A single sample is made on A1 with reference to AVcc.
|
||||
// Software sets ADC10SC to start sample and conversion - ADC10SC
|
||||
// automatically cleared at EOC. ADC10 internal oscillator times sample (16x)
|
||||
// and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC10
|
||||
// conversion complete, ADC10_ISR will force exit from LPM0 in Mainloop on
|
||||
// reti. If A1 > 0.5*AVcc, P1.0 set, else reset.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.1/A1 P1.0|-->LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
|
||||
ADC10CTL1 = INCH_1; // input A1
|
||||
ADC10AE0 |= 0x02; // PA.1 ADC option select
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
||||
if (ADC10MEM < 0x1FF)
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
else
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A1, 1.5V Ref, Set P1.0 if > 0.2V
|
||||
//
|
||||
// Description: A single sample is made on A1 with reference to internal
|
||||
// 1.5V Vref. Software sets ADC10SC to start sample and conversion - ADC10SC
|
||||
// automatically cleared at EOC. ADC10 internal oscillator times sample (16x)
|
||||
// and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC10
|
||||
// conversion complete, ADC10_ISR will force exit from any LPMx in Mainloop on
|
||||
// reti. If A1 > 0.2V, P1.0 set, else reset.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.1/A1 P1.0|-->LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
|
||||
__enable_interrupt(); // Enable interrupts.
|
||||
TACCR0 = 30; // Delay to allow Ref to settle
|
||||
TACCTL0 |= CCIE; // Compare-mode interrupt.
|
||||
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
|
||||
LPM0; // Wait for delay.
|
||||
TACCTL0 &= ~CCIE; // Disable timer Interrupt
|
||||
__disable_interrupt();
|
||||
ADC10CTL1 = INCH_1; // input A1
|
||||
ADC10AE0 |= 0x02; // PA.1 ADC option select
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exi
|
||||
if (ADC10MEM < 0x88) // ADC10MEM = A1 > 0.2V?
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
else
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void ta0_isr(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) ta0_isr (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
TACTL = 0;
|
||||
LPM0_EXIT; // Exit LPM0 on return
|
||||
}
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A10 Temp, Set P1.0 if Temp ++ ~2C
|
||||
//
|
||||
// Description: se ADC10 and the integrated temperature sensor to detect
|
||||
// temperature gradients. The temperature sensor output voltage is sampled
|
||||
// ~ every 120ms and compared with the defined delta values using an ISR.
|
||||
// (ADC10OSC/4)/64 determines sample time which needs to be greater than
|
||||
// 30us for temperature sensor.
|
||||
// ADC10 is operated in repeat-single channel mode with the sample and
|
||||
// convert trigger sourced from Timer_A CCR1. The ADC10IFG at the end
|
||||
// of each converstion will trigger an ISR.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO ~ 1.2MHz, ADC10CLK = ADC10OSC
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// |A10 P1.0|-->LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
static unsigned int FirstADCVal; // holds 1st ADC result
|
||||
|
||||
#define ADCDeltaOn 3 // ~ 2 Deg C delta for LED on
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
ADC10CTL1 = ADC10DIV_3 + INCH_10 + SHS_1 + CONSEQ_2; // TA trig., rpt, A10
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REF2_5V + ADC10IE + REFON + ADC10ON;
|
||||
__enable_interrupt(); // Enable interrupts.
|
||||
TACCR0 = 30; // Delay to allow Ref to settle
|
||||
TACCTL0 |= CCIE; // Compare-mode interrupt.
|
||||
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
|
||||
LPM0; // Wait for delay.
|
||||
TACCTL0 &= ~CCIE; // Disable timer Interrupt
|
||||
__disable_interrupt();
|
||||
ADC10CTL0 |= ENC;
|
||||
TACCTL1 = OUTMOD_4; // Toggle on EQU1 (TAR = 0)
|
||||
TACTL = TASSEL_2 + MC_2; // SMCLK, cont-mode
|
||||
while (!(ADC10IFG & ADC10CTL0)); // First conversion?
|
||||
FirstADCVal = ADC10MEM; // Read out 1st ADC value
|
||||
P1OUT = 0x00; // Clear P1
|
||||
P1DIR = 0x01; // P1.0 as output
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (ADC10MEM >= FirstADCVal + ADCDeltaOn)
|
||||
P1OUT |= 0x01; // LED on
|
||||
else
|
||||
P1OUT &= ~0x01; // LED off
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void ta0_isr(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) ta0_isr (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
TACTL = 0;
|
||||
LPM0_EXIT; // Exit LPM0 on return
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A1, Signed, Set P1.0 if > 0.5*AVcc
|
||||
//
|
||||
// Description: A single sample is made on A1 with SIGNED reference to AVcc.
|
||||
// Software sets ADC10SC to start sample and conversion - ADC10SC
|
||||
// automatically cleared at EOC. ADC10 internal oscillator times sample (16x)
|
||||
// and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC10
|
||||
// conversion complete, ADC10_ISR will force exit from any LPMx in Mainloop on
|
||||
// reti. If A1 > 0.5*AVcc, P1.0 set, else reset.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|A1/P.1 |
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = ADC10DF + INCH_1; // Conversion code singed format, input A1
|
||||
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
|
||||
ADC10AE0 |= 0x02; // P1.0 ADC option select
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
||||
if ((int)ADC10MEM < 0)
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
else
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A11, Lo_Batt, Set P1.0 if < 2.3V
|
||||
//
|
||||
// Description: A single sample is made on A11 (AVcc/2) with reference to
|
||||
// internal 1.5V Vref. Software sets ADC10SC to start sample and conversion
|
||||
// - ADC10SC automatically cleared at EOC. ADC10 internal oscillator times
|
||||
// sample (16x) and conversion. ADC10BUSY flag is polled for EOC. If A11
|
||||
// (AVcc/2) < 0311h (0.65V) indicating AVcc is less 2.3V, P1.0 set indicating
|
||||
// a lo_Batt condition, else reset.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// |A11 P1.0|-->LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = INCH_11; // AVcc/2
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON;
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
while (ADC10CTL1 & ADC10BUSY); // ADC10BUSY?
|
||||
if (ADC10MEM < 0x311) // ADC10MEM = A11 > 0.65?
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
else
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
}
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Output Internal Vref on P1.4 & ADCCLK on P1.3
|
||||
//
|
||||
// Description: Output ADC10 internal Vref on P1.4, toggling between two
|
||||
// avaialble options, 2.5v and 1.5v. ADC10OSC also output on P1.3.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// Vref<-|A4/P1.4 P1.3|--> ADC10OSC ~ 3.5MHz - 6.5MHz
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
void delay(void); // Software delay
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = CONSEQ_2; // Repeat single channel
|
||||
ADC10CTL0 = REFOUT + REFON + MSC + ADC10ON;
|
||||
__enable_interrupt(); // Enable interrupts.
|
||||
TACCR0 = 30; // Delay to allow Ref to settle
|
||||
TACCTL0 |= CCIE; // Compare-mode interrupt.
|
||||
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
|
||||
LPM0; // Wait for delay.
|
||||
TACCTL0 &= ~CCIE; // Disable timer Interrupt
|
||||
__disable_interrupt();
|
||||
ADC10AE0 |= 0x10; // P1.4 ADC option select
|
||||
P1DIR |= 0x08; // Set P1.3 output direction
|
||||
P1SEL |= 0x08; // Set P1.3 option select
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 &= ~ENC; // ADC10 disable
|
||||
ADC10CTL0 ^= REF2_5V; // Toggle Vref 1.5/2.5V
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
delay();
|
||||
}
|
||||
}
|
||||
|
||||
void delay(void)
|
||||
{
|
||||
volatile unsigned long i;
|
||||
for (i = 0x7FFFF; i > 0; i--);
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void ta0_isr(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) ta0_isr (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
TACTL = 0;
|
||||
LPM0_EXIT; // Exit LPM0 on return
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, DTC Sample A1 32x, AVcc, Repeat Single, DCO
|
||||
//
|
||||
// Description: Use DTC to sample A1 32 times with reference to AVcc. Software
|
||||
// writes to ADC10SC to trigger sample burst. In Mainloop MSP430 waits in LPM0
|
||||
// to save power until ADC10 conversion burst complete, ADC10_ISR(DTC) will
|
||||
// force exit from any LPMx in Mainloop on reti. ADC10 internal oscillator
|
||||
// times sample period (16x) and conversion (13x). DTC transfers conversion
|
||||
// code to RAM 200h - 240h. P1.0 set at start of conversion burst, reset on
|
||||
// completion.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.1/A1 P1.0|-->LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = CONSEQ_2 + INCH_1; // Repeat single channel, A1
|
||||
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE; // ADC10ON, interrupt enabl
|
||||
ADC10DTC1 = 0x20; // 32 conversions
|
||||
ADC10AE0 |= 0x02; // P1.1 ADC option select
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 &= ~ENC;
|
||||
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
|
||||
ADC10SA = 0x200; // Data buffer start
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, DTC Sample A1 32x, 1.5V, Repeat Single, DCO
|
||||
//
|
||||
// Description: Use DTC to sample A1 32 times with reference to internal 1.5v.
|
||||
// Vref Software writes to ADC10SC to trigger sample burst. In Mainloop MSP430
|
||||
// waits in LPM0 to save power until ADC10 conversion complete, ADC10_ISR(DTC)
|
||||
// will force exit from any LPMx in Mainloop on reti. ADC10 internal
|
||||
// oscillator times sample period (16x) and conversion (13x). DTC transfers
|
||||
// conversion code to RAM 200h - 240h. P1.0 set at start of conversion burst,
|
||||
// reset on completion.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.1/A1 P1.0|-->LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = CONSEQ_2+INCH_1; // Repeat single channel
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_2 + MSC + REFON + ADC10ON + ADC10IE;
|
||||
__enable_interrupt(); // Enable interrupts.
|
||||
TACCR0 = 30; // Delay to allow Ref to settle
|
||||
TACCTL0 |= CCIE; // Compare-mode interrupt.
|
||||
TACTL = TASSEL_2 + MC_1; // TACLK = SMCLK, Up mode.
|
||||
LPM0; // Wait for delay.
|
||||
TACCTL0 &= ~CCIE; // Disable timer Interrupt
|
||||
__disable_interrupt();
|
||||
ADC10DTC1 = 0x20; // 32 conversions
|
||||
ADC10AE0 |= 0x02; // P1.1 ADC option select
|
||||
P1DIR |= 0x01; // Set P1.0 output
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 &= ~ENC;
|
||||
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
|
||||
ADC10SA = 0x200; // Data buffer start
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void ta0_isr(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) ta0_isr (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
TACTL = 0;
|
||||
LPM0_EXIT; // Exit LPM0 on return
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, DTC Sample A10 32x, 1.5V, Repeat Single, DCO
|
||||
//
|
||||
// Description: Use DTC to sample A10 32 times with reference to internal 1.5v.
|
||||
// Vref Software writes to ADC10SC to trigger sample burst. In Mainloop MSP430
|
||||
// waits in LPM0 to save power until ADC10 conversion complete, ADC10_ISR(DTC)
|
||||
// will force exit from any LPMx in Mainloop on reti. (ADC10OSC/4)/64
|
||||
// determines sample time which needs to be greater than 30us for temperature
|
||||
// sensor. DTC transfers conversion code to RAM 200h - 240h. P1.0 set at start
|
||||
// of conversion burst, reset oncompletion. Temperature sensor offset and slope
|
||||
// will vary from device to device per datasheet tolerance.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// |A10 P1.0|-->LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = INCH_10 + ADC10DIV_3 + CONSEQ_2;
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_3 + MSC + REFON + ADC10ON + ADC10IE;
|
||||
__enable_interrupt(); // Enable interrupts.
|
||||
TACCR0 = 30; // Delay to allow Ref to settle
|
||||
TACCTL0 |= CCIE; // Compare-mode interrupt.
|
||||
TACTL = TASSEL_2 + MC_1; // TACLK = SMCLK, Up mode.
|
||||
LPM0; // Wait for delay.
|
||||
TACCTL0 &= ~CCIE; // Disable timer Interrupt
|
||||
__disable_interrupt();
|
||||
ADC10DTC1 = 0x20; // 32 conversions
|
||||
P1DIR |= 0x01; // Set P1.0 output
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 &= ~ENC; //
|
||||
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
|
||||
ADC10SA = 0x200; // Data buffer start
|
||||
P1OUT |= 0x01; // P1.0 = 1
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
||||
P1OUT &= ~0x01; // P1.0 = 0
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void ta0_isr(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) ta0_isr (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
TACTL = 0;
|
||||
LPM0_EXIT; // Exit LPM0 on return
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, DTC Sample A2-0, AVcc, Single Sequence, DCO
|
||||
//
|
||||
// Description: Sample A3/A2/A1 as single sequence with reference to AVcc.
|
||||
// Software sets ADC10SC to trigger sample sequence. In Mainloop MSP430 waits
|
||||
// in LPM0 to save power until ADC10 conversion complete, ADC10_ISR(DTC) will
|
||||
// force exit from any LPMx in Mainloop on reti. ADC10_ISR will force any LPMx
|
||||
// exit. ADC10 internal oscillator times sample period (16x) and conversion
|
||||
// (13x). DTC transfers conversion code to RAM 200h - 206h. P1.0 set at start
|
||||
// of conversion burst, reset on completion.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.3/A3 P1.0|-->LED
|
||||
// >---|P1.2/A2 |
|
||||
// >---|P1.1/A1 |
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = INCH_3 + CONSEQ_1; // A3/A2/A1, single sequence
|
||||
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
|
||||
ADC10DTC1 = 0x03; // 3 conversions
|
||||
ADC10AE0 |= 0x0E; // P1.3,2,1 ADC10 option select
|
||||
P1DIR |= 0x01; // Set P1.0 output
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 &= ~ENC;
|
||||
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
|
||||
ADC10SA = 0x200; // Data buffer start
|
||||
P1OUT |= 0x01; // P1.0 = 1
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
||||
P1OUT &= ~0x01; // P1.0 = 0
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A1, 1.5V, TA1 Trig, Set P1.0 if > 0.5V
|
||||
//
|
||||
// Description: A1 is sampled 16/second (ACLK/2048) with reference to 1.5V.
|
||||
// Timer_A is run in upmode and TA1 is used to automatically trigger
|
||||
// ADC10 conversion, TA0 defines the period. Internal oscillator times sample
|
||||
// (16x) and conversion (13x). Inside ADC10_ISR if A1 > 0.5Vcc, P1.0 is set,
|
||||
// else reset. Normal mode is LPM3.
|
||||
// //* An external watch crystal on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.1/A1 P1.0 |--> LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = SHS_1 + CONSEQ_2 + INCH_1; // TA1 trigger sample start
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
|
||||
__enable_interrupt(); // Enable interrupts.
|
||||
TACCR0 = 30; // Delay to allow Ref to settle
|
||||
TACCTL0 |= CCIE; // Compare-mode interrupt.
|
||||
TACTL = TASSEL_2 + MC_1; // TACLK = SMCLK, Up mode.
|
||||
LPM0; // Wait for delay.
|
||||
TACCTL0 &= ~CCIE; // Disable timer Interrupt
|
||||
__disable_interrupt();
|
||||
ADC10CTL0 |= ENC; // ADC10 Enable
|
||||
ADC10AE0 |= 0x02; // P1.1 ADC10 option select
|
||||
P1DIR |= 0x01; // Set P1.0 output
|
||||
TACCR0 = 2048-1; // PWM Period
|
||||
TACCTL1 = OUTMOD_3; // TACCR1 set/reset
|
||||
TACCR1 = 2047; // TACCR1 PWM Duty Cycle
|
||||
TACTL = TASSEL_1 + MC_1; // ACLK, up mode
|
||||
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupts
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (ADC10MEM < 0x155) // ADC10MEM = A1 > 0.5V?
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
else
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void ta0_isr(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) ta0_isr (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
TACTL = 0;
|
||||
LPM0_EXIT; // Exit LPM0 on return
|
||||
}
|
||||
+128
@@ -0,0 +1,128 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A7, 1.5V, TA1 Trig, Ultra-Low Pwr
|
||||
//
|
||||
// Description: A7 is sampled 1024/second (32xACLK)with reference to 1.5V. All
|
||||
// activity is interrupt driven with proper usage of MSP430 low-power modes,
|
||||
// ADC10 and Vref demonstrated. Timer_A with both TA1/TA0 used in upmode to
|
||||
// drive ADC10 conversion (continuous mode can also be used). Inside
|
||||
// of TA0_ISR software will enable ADC10 and internal reference and
|
||||
// allow > 30us delay for Vref to stabilize prior to sample start. Sample
|
||||
// start is automatically triggered by TA1 every 32 ACLK cycles. ADC10_ISR
|
||||
// will disable ADC10 and Vref and compare ADC10 conversion code. Internal
|
||||
// oscillator times sample (16x) and conversion (13x). If A7 > 0.2Vcc,
|
||||
// P1.0 is set, else reset. Normal Mode is LPM3.
|
||||
// //* An external watch crystal on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// +-----(0.9766us)---------\\------------------>+
|
||||
// TA0_ISR TA1 ADC10_ISR TA0_ISR TA1
|
||||
// -----+------------+------------+-----------\\------+------------+----->
|
||||
// Enable ADC Trigger ADC Disable ADC
|
||||
// and Vref Compare
|
||||
// +-( >30us--->+
|
||||
//
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.7/A7 P1.0 |--> LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
|
||||
ADC10CTL1 = INCH_7 + SHS_1; // P1.7, TA1 trigger sample start
|
||||
ADC10AE0 = 0x80; // P1.7 ADC10 option select
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
TACCTL0 = CCIE; // Enable interrupt
|
||||
TACCR0 = 32-1; // PWM Period
|
||||
TACCTL1 = OUTMOD_3; // TACCR1 set/reset
|
||||
TACCR1 = 2; // TACCR1 PWM Duty Cycle
|
||||
TACTL = TASSEL_1 + MC_1; // ACLK, up mode
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
ADC10CTL0 &= ~ENC; // ADC10 disabled
|
||||
ADC10CTL0 = 0; // ADC10, Vref disabled completely
|
||||
if (ADC10MEM < 0x88) // ADC10MEM = A7 > 0.2V?
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
else
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
|
||||
ADC10CTL0 |= ENC; // ADC10 enable set
|
||||
}
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, DTC Sample A1 32x, AVcc, TA0 Trig, DCO
|
||||
//
|
||||
// Description; A1 is sampled in 32x burst using DTC 16 times per second
|
||||
// (ACLK/2048) with reference to AVcc. Activity is interrupt driven.
|
||||
// Timer_A in upmode uses TA0 toggle to drive ADC10 conversion. Sample burst
|
||||
// is automatically triggered by TA0 rising edge every 2048 ACLK cycles.
|
||||
// ADC10_ISR will exit from LPM3 mode and return CPU active. Internal ADC10OSC
|
||||
// times sample (16x) and conversion (13x). DTC transfers conversion code to
|
||||
// RAM 200h - 240h. In the Mainloop P1.0 is toggled. Normal Mode is LPM3.
|
||||
// //* An external watch crystal on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.1/A1 P1.0 |--> LED
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = INCH_1 + SHS_2 + CONSEQ_2; // TA0 trigger
|
||||
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
|
||||
ADC10DTC1 = 0x20; // 32 conversions
|
||||
P1DIR |= 0x01; // Set P1.0 output
|
||||
ADC10AE0 |= 0x02; // P1.1 ADC10 option select
|
||||
TACCR0 = 1024-1; // PWM Period
|
||||
TACCTL0 = OUTMOD_4; // TACCR0 toggle
|
||||
TACTL = TASSEL_1 + MC_1; // ACLK, up mode
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 &= ~ENC;
|
||||
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
|
||||
ADC10SA = 0x200; // Data buffer start
|
||||
ADC10CTL0 |= ENC; // Sampling and conversion ready
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
|
||||
}
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, DTC Sample A1-0 16x, AVcc, Repeat Seq, DCO
|
||||
//
|
||||
// Description: Use DTC to sample A1/A0 repeat sequence 16x(32 total samples)
|
||||
// with reference to AVcc. Software sets ADC10SC to trigger sample burst.
|
||||
// In Mainloop MSP430 waits in LPM0 to save power until ADC10 conversion
|
||||
// complete, ADC10_ISR will force exit from any LPMx in Mainloop on reti.
|
||||
// ADC10 internal oscillator times sample period (16x) and conversion (13x).
|
||||
// DTC transfers conversion code to RAM 200h - 240h. ADC10(DTC) interrupt
|
||||
// will return system active. P1.0 set at start of conversion burst, reset
|
||||
// on completion.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.1/A1 |
|
||||
// >---|P1.0/A0 |
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = INCH_1 + CONSEQ_3; // A1/A0, repeat multi channel
|
||||
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
|
||||
ADC10AE0 = 0x03; // P1.0,1 ADC option select
|
||||
ADC10DTC1 = 0x20; // 16 conversions
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ADC10CTL0 &= ~ENC;
|
||||
while (ADC10CTL1 & BUSY); // Wait if ADC10 core is active
|
||||
ADC10SA = 0x200; // Data buffer start
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion ready
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
|
||||
__no_operation(); // space for debugger
|
||||
__no_operation(); // Set Breakpoint here to read ADC
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, DTC Sample A0 -> TA1, AVcc, DCO
|
||||
//
|
||||
// Description: Use DTC to sample A0 with reference to AVcc and directly
|
||||
// transfer code to TACCR1. Timer_A has been configured for 10-bit PWM mode.
|
||||
// TACCR1 duty cycle is automatically proportional to ADC10 A0. WDT_ISR used
|
||||
// as a period wakeup timer approximately 45ms based on default ~1.2MHz
|
||||
// DCO/SMCLK clock source used in this example for the WDT clock source.
|
||||
// Timer_A also uses default DCO.
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// >---|P1.0/A0 P1.2|--> TACCR1 - 0-1024 PWM
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDT_MDLY_32; // WDT ~45ms interval timer
|
||||
IE1 |= WDTIE; // Enable WDT interrupt
|
||||
ADC10CTL0 = ADC10SHT_2 + ADC10ON;
|
||||
ADC10AE0 |= 0x01; // P1.0 ADC option select
|
||||
ADC10DTC1 = 0x001; // 1 conversion
|
||||
P1DIR |= 0x04; // P1.2 = output
|
||||
P1SEL |= 0x04; // P1.2 = TA1 output
|
||||
TACCR0 = 1024 - 1; // PWM Period
|
||||
TACCTL1 = OUTMOD_7; // TACCR1 reset/set
|
||||
TACCR1 = 512; // TACCR1 PWM Duty Cycle
|
||||
TACTL = TASSEL_2 + MC_1; // SMCLK, upmode
|
||||
|
||||
while(1)
|
||||
{
|
||||
__bis_SR_register(LPM0_bits + GIE); // LPM0, WDT_ISR will force exit
|
||||
ADC10SA = (unsigned int)&TACCR1; // Data transfer location
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Start sampling
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = WDT_VECTOR
|
||||
__interrupt void WDT_ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(WDT_VECTOR))) WDT_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0
|
||||
}
|
||||
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2 Demo - ADC10, Sample A10 Temp and Convert to oC and oF
|
||||
//
|
||||
// Description: A single sample is made on A10 with reference to internal
|
||||
// 1.5V Vref. Software sets ADC10SC to start sample and conversion - ADC10SC
|
||||
// automatically cleared at EOC. ADC10 internal oscillator/4 times sample
|
||||
// (64x) and conversion. In Mainloop MSP430 waits in LPM0 to save power until
|
||||
// ADC10 conversion complete, ADC10_ISR will force exit from any LPMx in
|
||||
// Mainloop on reti. Temperaure in oC stored in IntDegC, oF in IntDegF.
|
||||
// Uncalibrated temperature measured from device to device will vary with
|
||||
// slope and offset - please see datasheet.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO ~1.2MHz, ADC10CLK = ADC10OSC/4
|
||||
//
|
||||
// MSP430F20x2
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// |A10 |
|
||||
//
|
||||
// L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
long temp;
|
||||
long IntDegF;
|
||||
long IntDegC;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
ADC10CTL1 = INCH_10 + ADC10DIV_3; // Temp Sensor ADC10CLK/4
|
||||
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
|
||||
__enable_interrupt(); // Enable interrupts.
|
||||
TACCR0 = 30; // Delay to allow Ref to settle
|
||||
TACCTL0 |= CCIE; // Compare-mode interrupt.
|
||||
TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode.
|
||||
LPM0; // Wait for delay.
|
||||
TACCTL0 &= ~CCIE; // Disable timer Interrupt
|
||||
__disable_interrupt();
|
||||
|
||||
while(1)
|
||||
{
|
||||
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
||||
__bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled
|
||||
|
||||
// oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468
|
||||
temp = ADC10MEM;
|
||||
IntDegF = ((temp - 630) * 761) / 1024;
|
||||
|
||||
// oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
|
||||
temp = ADC10MEM;
|
||||
IntDegC = ((temp - 673) * 423) / 1024;
|
||||
|
||||
__no_operation(); // SET BREAKPOINT HERE
|
||||
}
|
||||
}
|
||||
|
||||
// ADC10 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=ADC10_VECTOR
|
||||
__interrupt void ADC10_ISR (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void ta0_isr(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) ta0_isr (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
TACTL = 0;
|
||||
LPM0_EXIT; // Exit LPM0 on return
|
||||
}
|
||||
Executable
+82
@@ -0,0 +1,82 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Software Toggle P1.0
|
||||
//
|
||||
// Description; Toggle P1.0 by xor'ing P1.0 inside of a software loop.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
for (;;)
|
||||
{
|
||||
volatile unsigned int i;
|
||||
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
|
||||
i = 50000; // Delay
|
||||
do (i--);
|
||||
while (i != 0);
|
||||
}
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Software Toggle P1.0, MCLK = VLO/8
|
||||
//
|
||||
// Description; Pulse P1.0 with a 1/100 active duty cycle using software.
|
||||
// Ultra-low frequency ~ 1.5kHz, ultra-low power active mode demonstrated.
|
||||
// ACLK = VL0, MCLK = VLO/8 ~1.5kHz, SMCLK = n/a
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
volatile unsigned int i; // Volatile to prevent removal
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO
|
||||
IFG1 &= ~OFIFG; // Clear OSCFault flag
|
||||
__bis_SR_register(SCG1 + SCG0); // Stop DCO
|
||||
BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = LFXT1/8
|
||||
P1DIR = 0xFF; // All P1.x outputs
|
||||
P1OUT = 0; // All P1.x reset
|
||||
P2DIR = 0xFF; // All P2.x outputs
|
||||
P2OUT = 0; // All P2.x reset
|
||||
|
||||
for (;;)
|
||||
{
|
||||
P1OUT |= 0x01; // P1.0 set
|
||||
for (i = 10; i > 0; i--); // Delay 1x
|
||||
P1OUT &= ~0x01; // P1.0 reset
|
||||
for (i = 1000; i > 0; i--); // Delay 100x
|
||||
}
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - LFXT1 Oscillator Fault Detection
|
||||
//
|
||||
// Description: System runs normally in LPM3 with WDT timer clocked by
|
||||
// 32kHz ACLK with a 1x4 second interrupt. P1.0 is normally pulsed every
|
||||
// second inside WDT interrupt. If an LFXT1 oscillator fault occurs,
|
||||
// NMI is requested forcing exit from LPM3. P1.0 is toggled rapidly by software
|
||||
// as long as LFXT1 oscillator fault is present. Assumed only LFXT1 as NMI
|
||||
// source - code does not check for other NMI sources.
|
||||
// ACLK = LFXT1 = 32768, MCLK = SMCLK = Default DCO
|
||||
//
|
||||
// //*External watch crystal on XIN XOUT is required for ACLK*//
|
||||
//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
volatile unsigned int i;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDT_ADLY_1000; // WDT 1s interval timer
|
||||
IE1 |= WDTIE; // Enable WDT interrupt
|
||||
P1DIR = 0xFF; // All P1.x outputs
|
||||
P1OUT = 0; // All P1.x reset
|
||||
P2DIR = 0xFF; // All P2.x outputs
|
||||
P2OUT = 0; // All P2.x reset
|
||||
// An immedate Osc Fault will occur next
|
||||
IE1 |= OFIE; // Enable Osc Fault
|
||||
|
||||
while(1)
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/interrupt
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=WDT_VECTOR
|
||||
__interrupt void watchdog_timer (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=NMI_VECTOR
|
||||
__interrupt void nmi_ (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(NMI_VECTOR))) nmi_ (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
do
|
||||
{
|
||||
IFG1 &= ~OFIFG; // Clear OSCFault flag
|
||||
for (i = 0xFFF; i > 0; i--); // Time for flag to set
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
}
|
||||
while (IFG1 & OFIFG); // OSCFault flag still set?
|
||||
IE1 |= OFIE; // Enable Osc Fault
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Software Poll P1.4, Set P1.0 if P1.4 = 1
|
||||
//
|
||||
// Description: Poll P1.4 in a loop, if hi P1.0 is set, if low, P1.0 reset.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// /|\ | |
|
||||
// --o--|P1.4 P1.0|-->LED
|
||||
// \|/
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
while (1) // Test P1.4
|
||||
{
|
||||
if ((0x10 & P1IN)) P1OUT |= 0x01; // if P1.4 set, set P1.0
|
||||
else P1OUT &= ~0x01; // else reset
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Software Port Interrupt Service on P1.4 from LPM4
|
||||
//
|
||||
// Description: A hi/low transition on P1.4 will trigger P1_ISR which,
|
||||
// toggles P1.0. Normal mode is LPM4 ~ 0.1uA. LPM4 current can be measured
|
||||
// with the LED removed, all unused P1.x/P2.x configured as output or inputs
|
||||
// pulled high or low, and ensure the P1.4 interrupt input does not float.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// /|\ | |
|
||||
// --o--|P1.4 P1.0|-->LED
|
||||
// \|/
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
P1IE |= 0x10; // P1.4 interrupt enabled
|
||||
P1IES |= 0x10; // P1.4 Hi/lo edge
|
||||
P1IFG &= ~0x10; // P1.4 IFG cleared
|
||||
|
||||
__bis_SR_register(LPM4_bits + GIE); // Enter LPM4 w/interrupt
|
||||
}
|
||||
|
||||
// Port 1 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=PORT1_VECTOR
|
||||
__interrupt void Port_1(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(PORT1_VECTOR))) Port_1 (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // P1.0 = toggle
|
||||
P1IFG &= ~0x10; // P1.4 IFG cleared
|
||||
}
|
||||
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Poll P1 With Software with Internal Pull-up
|
||||
//
|
||||
// Description: Poll P1.4 in a loop, if hi P1.0 is set, if low, P1.0 reset.
|
||||
// Internal pullup enabled on P1.4.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// /|\ | R |
|
||||
// --o--| P1.4-o P1.0|-->LED
|
||||
// \|/
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1DIR = 0x01; // P1.0 output, else input
|
||||
P1OUT = 0x10; // P1.4 set, else reset
|
||||
P1REN |= 0x10; // P1.4 pullup
|
||||
|
||||
while (1) // Test P1.4
|
||||
{
|
||||
if (0x10 & P1IN) P1OUT |= 0x01; // if P1.4 set, set P1.0
|
||||
else P1OUT &= ~0x01; // else reset
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - P1 Interrupt from LPM4 with Internal Pull-up
|
||||
//
|
||||
// Description: A hi/low transition on P1.4 will trigger P1_ISR which,
|
||||
// toggles P1.0. Normal mode is LPM4 ~ 0.1uA.
|
||||
// Internal pullup enabled on P1.4.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// /|\ | R |
|
||||
// --o--| P1.4-o P1.0|-->LED
|
||||
// \|/
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// November 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1DIR = 0x01; // P1.0 output, else input
|
||||
P1OUT = 0x10; // P1.4 set, else reset
|
||||
P1REN |= 0x10; // P1.4 pullup
|
||||
P1IE |= 0x10; // P1.4 interrupt enabled
|
||||
P1IES |= 0x10; // P1.4 Hi/lo edge
|
||||
P1IFG &= ~0x10; // P1.4 IFG cleared
|
||||
|
||||
__bis_SR_register(LPM4_bits + GIE); // Enter LPM4 w/interrupt
|
||||
}
|
||||
|
||||
// Port 1 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=PORT1_VECTOR
|
||||
__interrupt void Port_1(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(PORT1_VECTOR))) Port_1 (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // P1.0 = toggle
|
||||
P1IFG &= ~0x10; // P1.4 IFG cleared
|
||||
}
|
||||
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10
|
||||
//
|
||||
// Description: Buffer ACLK on P2.0, default SMCLK(DCO) on P1.4 and MCLK/10 on
|
||||
// P1.1.
|
||||
// ACLK = LFXT1 = 32768, MCLK = SMCLK = default DCO
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.4/SMCLK|-->SMCLK = Default DCO
|
||||
// | P1.1|-->MCLK/10 = DCO/10
|
||||
// | P1.0/ACLK|-->ACLK = 32kHz
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
|
||||
P1DIR |= 0x13; // P1.0,1 and P1.4 outputs
|
||||
P1SEL |= 0x11; // P1.0,4 ACLK, SMCLK output
|
||||
|
||||
while(1)
|
||||
{
|
||||
P1OUT |= 0x02; // P1.1 = 1
|
||||
P1OUT &= ~0x02; // P1.1 = 0
|
||||
}
|
||||
}
|
||||
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Basic Clock, Output Buffered clocks with preloaded DCO
|
||||
// calibration constants for BCSCTL1 and DCOCTL.
|
||||
//
|
||||
// Description: Buffer ACLK on P1.0, default SMCLK(DCO) on P1.4 and MCLK/10 on
|
||||
// P1.1. DCO is software selectable to 1, 8, 12, or 16Mhz using calibration
|
||||
// contstants in INFOA.
|
||||
//
|
||||
// ACLK = LFXT1 = 32768, MCLK = SMCLK = Selectable at 1, 8, 12 or 16Mhz
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
// //* By default, the MSP430 uses XT1 to source ACLK; P2.6/7 configured
|
||||
// //* automatically.
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| P2.6/XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST P2.7/XOUT|-
|
||||
// | |
|
||||
// | P1.4/SMCLK|-->SMCLK = Default DCO
|
||||
// | P1.1|-->MCLK/10 = DCO/10
|
||||
// | P1.0/ACLK|-->ACLK = 32kHz
|
||||
// R. B. Elliott / H. Grewal
|
||||
// Texas Instruments Inc.
|
||||
// September 2007
|
||||
// Built with IAR Embedded Workbench Version: 3.42A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
|
||||
|
||||
//1Mhz
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set range
|
||||
DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */
|
||||
|
||||
/* //8Mhz
|
||||
if (CALBC1_8MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_8MHZ; // Set range
|
||||
DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation */
|
||||
|
||||
/* //12Mhz
|
||||
if (CALBC1_12MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_12MHZ; // Set range
|
||||
DCOCTL = CALDCO_12MHZ; // Set DCO step + modulation*/
|
||||
|
||||
/* //16Mhz
|
||||
if (CALBC1_16MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_16MHZ; // Set range
|
||||
DCOCTL = CALDCO_16MHZ; // Set DCO step + modulation*/
|
||||
|
||||
P1DIR |= 0x13; // P1.0,1 and P1.4 outputs
|
||||
P1SEL |= 0x11; // P1.0,4 ACLK, SMCLK output
|
||||
|
||||
while(1)
|
||||
{
|
||||
P1OUT |= 0x02; // P1.1 = 1
|
||||
P1OUT &= ~0x02; // P1.1 = 0
|
||||
}
|
||||
}
|
||||
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Flash In-System Programming, Copy SegC to SegD
|
||||
//
|
||||
// Description: This program first erases flash seg C, then it increments all
|
||||
// values in seg C, then it erases seg D, then copies seg C to seg D.
|
||||
// Assumed MCLK 771kHz - 1428kHz.
|
||||
// //* Set Breakpoint on NOP in the Mainloop to avoid Stressing Flash *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
//
|
||||
// M. Mitchell / M.Buccini
|
||||
// Texas Instruments Inc.
|
||||
// December 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
char value; // 8-bit value to write to segment A
|
||||
|
||||
// Function prototypes
|
||||
void write_SegC (char value);
|
||||
void copy_C2D (void);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO to 1MHz
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
FCTL2 = FWKEY + FSSEL0 + FN1; // MCLK/3 for Flash Timing Generator
|
||||
value = 0; // initialize value
|
||||
|
||||
while(1) // Repeat forever
|
||||
{
|
||||
write_SegC(value++); // Write segment C, increment value
|
||||
copy_C2D(); // Copy segment C to D
|
||||
__no_operation(); // SET BREAKPOINT HERE
|
||||
}
|
||||
}
|
||||
|
||||
void write_SegC (char value)
|
||||
{
|
||||
char *Flash_ptr; // Flash pointer
|
||||
unsigned int i;
|
||||
|
||||
Flash_ptr = (char *) 0x1040; // Initialize Flash pointer
|
||||
FCTL1 = FWKEY + ERASE; // Set Erase bit
|
||||
FCTL3 = FWKEY; // Clear Lock bit
|
||||
*Flash_ptr = 0; // Dummy write to erase Flash segment
|
||||
|
||||
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
|
||||
|
||||
for (i=0; i<64; i++)
|
||||
{
|
||||
*Flash_ptr++ = value; // Write value to flash
|
||||
}
|
||||
|
||||
FCTL1 = FWKEY; // Clear WRT bit
|
||||
FCTL3 = FWKEY + LOCK; // Set LOCK bit
|
||||
}
|
||||
|
||||
void copy_C2D (void)
|
||||
{
|
||||
char *Flash_ptrC; // Segment C pointer
|
||||
char *Flash_ptrD; // Segment D pointer
|
||||
unsigned int i;
|
||||
|
||||
Flash_ptrC = (char *) 0x1040; // Initialize Flash segment C pointer
|
||||
Flash_ptrD = (char *) 0x1000; // Initialize Flash segment D pointer
|
||||
FCTL1 = FWKEY + ERASE; // Set Erase bit
|
||||
FCTL3 = FWKEY; // Clear Lock bit
|
||||
*Flash_ptrD = 0; // Dummy write to erase Flash segment D
|
||||
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
|
||||
|
||||
for (i=0; i<64; i++)
|
||||
{
|
||||
*Flash_ptrD++ = *Flash_ptrC++; // copy value segment C to segment D
|
||||
}
|
||||
|
||||
FCTL1 = FWKEY; // Clear WRT bit
|
||||
FCTL3 = FWKEY + LOCK; // Set LOCK bit
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Basic Clock, LPM3 Using WDT ISR, 32kHz ACLK
|
||||
//
|
||||
// Description: This program operates MSP430 normally in LPM3, pulsing P1.0
|
||||
// at 4 second intervals. WDT ISR used to wake-up system. All I/O configured
|
||||
// as low outputs to eliminate floating inputs. Current consumption does
|
||||
// increase when LED is powered on P1.0. Demo for measuring LPM3 current.
|
||||
// ACLK = LFXT1/4 = 32768/4, MCLK = SMCLK = default DCO ~ 800kHz
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
BCSCTL1 |= DIVA_2; // ACLK/4
|
||||
WDTCTL = WDT_ADLY_1000; // WDT 1s/4 interval timer
|
||||
IE1 |= WDTIE; // Enable WDT interrupt
|
||||
P1DIR = 0xFF; // All P1.x outputs
|
||||
P1OUT = 0; // All P1.x reset
|
||||
P2DIR = 0xFF; // All P2.x outputs
|
||||
P2OUT = 0; // All P2.x reset
|
||||
|
||||
while(1)
|
||||
{
|
||||
int i;
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
for (i = 5000; i>0; i--); // Delay
|
||||
P1OUT &= ~0x01; // Reset P1.0 LED off
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=WDT_VECTOR
|
||||
__interrupt void watchdog_timer (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Basic Clock, LPM3 Using WDT ISR, VLO ACLK
|
||||
//
|
||||
// Description: This program operates MSP430 normally in LPM3, pulsing P1.0
|
||||
// ~ 6 second intervals. WDT ISR used to wake-up system. All I/O configured
|
||||
// as low outputs to eliminate floating inputs. Current consumption does
|
||||
// increase when LED is powered on P1.0. Demo for measuring LPM3 current.
|
||||
// ACLK = VLO/2, MCLK = SMCLK = default DCO
|
||||
//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// November 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
BCSCTL1 |= DIVA_1; // ACLK/2
|
||||
BCSCTL3 |= LFXT1S_2; // ACLK = VLO
|
||||
WDTCTL = WDT_ADLY_1000; // Interval timer
|
||||
IE1 |= WDTIE; // Enable WDT interrupt
|
||||
P1DIR = 0xFF; // All P1.x outputs
|
||||
P1OUT = 0; // All P1.x reset
|
||||
P2DIR = 0xFF; // All P2.x outputs
|
||||
P2OUT = 0; // All P2.x reset
|
||||
|
||||
while(1)
|
||||
{
|
||||
int i;
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
for (i = 10000; i>0; i--); // Delay
|
||||
P1OUT &= ~0x01; // Reset P1.0 LED off
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=WDT_VECTOR
|
||||
__interrupt void watchdog_timer (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Basic Clock, Configure RST/NMI as NMI
|
||||
//
|
||||
// Description: Configure RST/NMI as NMI, hi/lo edge. Flash P1.0 inside of
|
||||
// NMI_ISR if NMI occurs. General enable interrupt in status register does
|
||||
// not need to be set for NMI. NMIIE does need to be reset, as NMI_ISR
|
||||
// automatically clears NMI enable to prevent unintentional stack overflow
|
||||
// that could result from, bounce or uncontrolled NMI's.
|
||||
// ACLK = n/a, MCLK = SMCLK = DCO ~ 800k
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD + WDTNMI + WDTNMIES; // WDT off NMI hi/lo
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
IE1 |= NMIIE; // Enable NMI
|
||||
|
||||
__bis_SR_register(LPM0_bits); // Enter LPM0
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=NMI_VECTOR
|
||||
__interrupt void nmi_ (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(NMI_VECTOR))) nmi_ (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
volatile unsigned int i;
|
||||
P1OUT |= 0x01; // Set P1.0 LED on
|
||||
for (i = 20000; i > 0; i--); // Delay
|
||||
P1OUT &= ~0x01; // Clear P1.0 LED off
|
||||
IFG1 &= ~NMIIFG; // Reclear NMI flag in case bounce
|
||||
IE1 |= NMIIE; // Enable NMI
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x3 Demo - SD16A, Sample A1+ Continuously, Set P1.0 if > 0.3V
|
||||
//
|
||||
// Description: A continuous single-ended sample is made on A1+ using internal
|
||||
// VRef Unipolar output format used.
|
||||
// Inside of SD16 ISR, if A1 > 1/2VRef (0.3V), P1.0 set, else reset.
|
||||
// ACLK = n/a, MCLK = SMCLK = SD16CLK = default DCO
|
||||
//
|
||||
// MSP430F20x3
|
||||
// ------------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// Vin+ -->|A1+ P1.2 |
|
||||
// |A1- = VSS P1.0|-->LED
|
||||
// | |
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
SD16CTL = SD16REFON + SD16SSEL_1; // 1.2V ref, SMCLK
|
||||
SD16INCTL0 = SD16INCH_1; // A1+/-
|
||||
SD16CCTL0 = SD16UNI + SD16IE; // 256OSR, unipolar, interrupt enable
|
||||
SD16AE = SD16AE2; // P1.1 A1+, A1- = VSS
|
||||
SD16CCTL0 |= SD16SC; // Set bit to start conversion
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE);
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = SD16_VECTOR
|
||||
__interrupt void SD16ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(SD16_VECTOR))) SD16ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (SD16MEM0 < 0x7FFF) // SD16MEM0 > 0.3V?, clears IFG
|
||||
P1OUT &= ~0x01;
|
||||
else
|
||||
P1OUT |= 0x01;
|
||||
}
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x3 Demo - SD16, Using the Integrated Temperature Sensor
|
||||
//
|
||||
// Description: Use SD16 and it's integrated temperature sensor to detect
|
||||
// temperature delta. The temperature sensor output voltage is sampled
|
||||
// ~ every 240ms and compared with the last value and if more than ~0.5C
|
||||
// delta, P1.0 is set, else reset.
|
||||
// SD16 Internal VRef, Bipolar offset binary output format used.
|
||||
// Watchdog used as interval time and ISR used to start next SD16 conversion.
|
||||
// ACLK = n/a, MCLK = default DCO, SMCLK = SD16CLK = default DCO/8
|
||||
//
|
||||
// MSP430F20x3
|
||||
// ------------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// |A6+ |
|
||||
// |A6- P1.0|-->LED
|
||||
// | |
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
#define ADCDeltaOn 31 // ~0.5 Deg C delta
|
||||
static unsigned int LastADCVal; // holds ADC temperature result
|
||||
|
||||
int main(void)
|
||||
{
|
||||
BCSCTL2 |= DIVS_3; // SMCLK/8
|
||||
WDTCTL = WDT_MDLY_32; // WDT Timer interval
|
||||
IE1 |= WDTIE; // Enable WDT interrupt
|
||||
P1DIR |= 0x01; // P1.0 to output direction
|
||||
SD16CTL = SD16REFON +SD16SSEL_1; // 1.2V ref, SMCLK
|
||||
SD16INCTL0 = SD16INCH_6; // A6+/-
|
||||
SD16CCTL0 = SD16SNGL + SD16IE ; // Single conv, interrupt
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 with interrupt
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=SD16_VECTOR
|
||||
__interrupt void SD16ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(SD16_VECTOR))) SD16ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (SD16MEM0 <= LastADCVal + ADCDeltaOn)
|
||||
P1OUT &= ~0x01; // LED off
|
||||
else
|
||||
P1OUT |= 0x01; // LED on
|
||||
LastADCVal = SD16MEM0; // Store value
|
||||
}
|
||||
|
||||
// Watchdog Timer interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=WDT_VECTOR
|
||||
__interrupt void watchdog_timer(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
SD16CCTL0 |= SD16SC; // Start SD16 conversion
|
||||
}
|
||||
|
||||
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x3 Demo - SD16A Sequence of conversions
|
||||
//
|
||||
// The SD16A takes a sample of a single sequence of channels: A0, A1, then A2.
|
||||
// Sampling begins with ch A0. The 4th conversion result of each channel is
|
||||
// stored in memory.
|
||||
//
|
||||
//
|
||||
// MSP430F20x3
|
||||
// ------------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// Vin+ -->|A0+ P1.0 |
|
||||
// |A01- = VSS |
|
||||
// | |
|
||||
// Vin+ -->|A1+ P1.2 |
|
||||
// |A1- = VSS |
|
||||
// | |
|
||||
// Vin+ -->|A2+ P1.4 |
|
||||
// |A2- = VSS |
|
||||
// | |
|
||||
// | VREF |---+
|
||||
// | | |
|
||||
// | | -+- 100nF
|
||||
// | | -+-
|
||||
// | | |
|
||||
// | AVss |---+
|
||||
// | |
|
||||
//
|
||||
//
|
||||
// R. B. Elliott / H. Grewal
|
||||
// Texas Instruments
|
||||
// April 2007
|
||||
// Built with IAR Embedded Workbench Version 3.42A and CCE V3.0
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
/* Arrays to store SD16 conversion results */
|
||||
/* NOTE: arrays need to be global to */
|
||||
/* prevent removal by compiler */
|
||||
static unsigned int ChA0results = 0x00;
|
||||
static unsigned int ChA1results = 0x00;
|
||||
static unsigned int ChA2results = 0x00;
|
||||
static unsigned int ch_counter=0;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
volatile unsigned int i; // Use volatile to prevent removal
|
||||
// by compiler optimization
|
||||
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
BCSCTL2 |= DIVS_3; // SMCLK/8
|
||||
|
||||
SD16CTL = SD16REFON + SD16SSEL_1; // 1.2V ref, SMCLK
|
||||
SD16INCTL0 = SD16INCH0; // Set channel A0+/-
|
||||
SD16CCTL0 |= SD16SNGL + SD16UNI + SD16IE;
|
||||
// Single conv, 256OSR, unipolar,
|
||||
// enable interrupt
|
||||
SD16INCTL0 |= SD16INTDLY_0; // Interrupt on 4th sample
|
||||
SD16AE = SD16AE0; // P1.0 A0+, A0- = VSS
|
||||
|
||||
for (i = 0; i < 0x3600; i++); // Delay for 1.2V ref startup
|
||||
|
||||
while(1)
|
||||
{
|
||||
SD16CCTL0 |= SD16SC; // Set bit to start conversion
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = SD16_VECTOR
|
||||
__interrupt void SD16ISR(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(SD16_VECTOR))) SD16ISR (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch (SD16IV)
|
||||
{ case 2: // SD16MEM Overflow
|
||||
break;
|
||||
|
||||
case 4: // SD16MEM0 IFG
|
||||
|
||||
switch(ch_counter)
|
||||
{
|
||||
case 0:
|
||||
ChA0results = SD16MEM0; // Save CH0 results (clears IFG)
|
||||
SD16AE &= ~SD16AE0; // Disable external input A0+, A0
|
||||
SD16INCTL0 &= ~SD16INCH_0; // Disable channel A0+/-
|
||||
ch_counter++;
|
||||
|
||||
SD16INCTL0 |= SD16INCH_1; // Enable channel A1+/-
|
||||
SD16AE |= SD16AE2; // Enable external input on A1+
|
||||
break;
|
||||
|
||||
case 1:
|
||||
ChA1results = SD16MEM0; // Save CH1 results (clears IFG)
|
||||
SD16AE &= ~SD16AE2; // Disable external input A1+, A1
|
||||
SD16INCTL0 &= ~SD16INCH_1; // Disable channel A1+/-
|
||||
ch_counter++;
|
||||
|
||||
SD16INCTL0 |= SD16INCH_2; // Enable channel A2+/-
|
||||
SD16AE |= SD16AE4; // Enable external input on A2+
|
||||
break;
|
||||
|
||||
case 2:
|
||||
ChA2results = SD16MEM0; // Save CH2 results (clears IFG)
|
||||
ch_counter = 0; // Reset channel count (end of seq)
|
||||
SD16AE = SD16AE0; // Reset external input to A0+/-
|
||||
SD16INCTL0 = SD16INCH_0; // Reset channel observed
|
||||
break;
|
||||
}
|
||||
|
||||
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0
|
||||
|
||||
}
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0, CCR0 Cont. Mode ISR, DCO SMCLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software and TA_0 ISR. Toggles every
|
||||
// 50000 SMCLK cycles. SMCLK provides clock source for TACLK.
|
||||
// During the TA_0 ISR, P1.0 is toggled and 50000 clock cycles are added to
|
||||
// CCR0. TA_0 ISR is triggered every 50000 cycles. CPU is normally off and
|
||||
// used only during TA_ISR.
|
||||
// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
CCTL0 = CCIE; // CCR0 interrupt enabled
|
||||
CCR0 = 50000;
|
||||
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0
|
||||
CCR0 += 50000; // Add Offset to CCR0
|
||||
}
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software and TA_0 ISR. Timer_A is
|
||||
// configured for up mode, thus the timer overflows when TAR counts to CCR0.
|
||||
// In this example CCR0 is loaded with 50000.
|
||||
// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO
|
||||
//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
CCTL0 = CCIE; // CCR0 interrupt enabled
|
||||
CCR0 = 50000;
|
||||
TACTL = TASSEL_2 + MC_1; // SMCLK, upmode
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0
|
||||
}
|
||||
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0, Overflow ISR, DCO SMCLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software and Timer_A overflow ISR.
|
||||
// In this example an ISR triggers when TA overflows. Inside the TA
|
||||
// overflow ISR P1.0 is toggled. Toggle rate is approximatlely 12Hz.
|
||||
// Proper use of TAIV interrupt vector generator is demonstrated.
|
||||
// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, contmode, interrupt
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// Timer_A3 Interrupt Vector (TAIV) handler
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA1_VECTOR
|
||||
__interrupt void Timer_A(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA1_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch( TAIV )
|
||||
{
|
||||
case 2: break; // CCR1 not used
|
||||
case 4: break; // CCR2 not used
|
||||
case 10: P1OUT ^= 0x01; // overflow
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0, Overflow ISR, 32kHz ACLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software and the Timer_A overflow ISR.
|
||||
// In this example an ISR triggers when TA overflows. Inside the ISR P1.0
|
||||
// is toggled. Toggle rate is exactly 0.5Hz. Proper use of the TAIV interrupt
|
||||
// vector generator is demonstrated.
|
||||
// ACLK = TACLK = 32768Hz, MCLK = SMCLK = default DCO
|
||||
// //* An external watch crystal on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, contmode, interrupt
|
||||
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
|
||||
}
|
||||
|
||||
// Timer_A3 Interrupt Vector (TAIV) handler
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA1_VECTOR
|
||||
__interrupt void Timer_A(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA1_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch( TAIV )
|
||||
{
|
||||
case 2: break; // CCR1 not used
|
||||
case 4: break; // CCR2 not used
|
||||
case 10: P1OUT ^= 0x01; // overflow
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0, CCR0 Up Mode ISR, 32kHz ACLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software and the TA_0 ISR. Timer_A is
|
||||
// configured for up mode, thus the the timer overflows when TAR counts
|
||||
// to CCR0. In this example, CCR0 is loaded with 1000-1.
|
||||
// Toggle rate = 32768/(2*1000) = 16.384Hz
|
||||
// ACLK = TACLK = 32768Hz, MCLK = SMCLK = DCO
|
||||
// //* An external watch crystal on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
CCTL0 = CCIE; // CCR0 interrupt enabled
|
||||
CCR0 = 1000-1;
|
||||
TACTL = TASSEL_1 + MC_1; // ACLK, upmode
|
||||
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0
|
||||
}
|
||||
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0, CCR1 Cont. Mode ISR, DCO SMCLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software and TA_1 ISR. Toggles every
|
||||
// 50000 SMCLK cycles. SMCLK provides clock source for TACLK.
|
||||
// During the TA_1 ISR, P1.0 is toggled and 50000 clock cycles are added to
|
||||
// CCR0. TA_1 ISR is triggered every 50000 cycles. CPU is normally off and
|
||||
// used only during TA_ISR. Proper use of the TAIV interrupt vector generator
|
||||
// is demonstrated.
|
||||
// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x01; // P1.0 output
|
||||
CCTL1 = CCIE; // CCR1 interrupt enabled
|
||||
CCR1 = 50000;
|
||||
TACTL = TASSEL_2 + MC_2; // SMCLK, Contmode
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// Timer_A3 Interrupt Vector (TAIV) handler
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA1_VECTOR
|
||||
__interrupt void Timer_A(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA1_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch( TAIV )
|
||||
{
|
||||
case 2: // CCR1
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0
|
||||
CCR1 += 50000; // Add Offset to CCR1
|
||||
}
|
||||
break;
|
||||
case 4: break; // CCR2 not used
|
||||
case 10: break; // overflow not used
|
||||
}
|
||||
}
|
||||
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0-2, Cont. Mode ISR, DCO SMCLK
|
||||
//
|
||||
// Description: Use Timer_A CCRx units and overflow to generate four
|
||||
// independent timing intervals. For demonstration, CCR0 and CCR1 output
|
||||
// units are optionally selected with port pins P1.1 and P1.2 in toggle
|
||||
// mode. As such, these pins will toggle when respective CCRx registers match
|
||||
// the TAR counter. Interrupts are also enabled with all CCRx units,
|
||||
// software loads offset to next interval only - as long as the interval offset
|
||||
// is aded to CCRx, toggle rate is generated in hardware. Timer_A overflow ISR
|
||||
// is used to toggle P1.0 with software. Proper use of the TAIV interrupt
|
||||
// vector generator is demonstrated.
|
||||
// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~1MHz
|
||||
// As coded and assuming ~1MHz DCO, toggle rates are:
|
||||
// P1.1 = CCR0 ~ 1MHz/(2*200) ~2500Hz
|
||||
// P1.2 = CCR1 ~ 1MHz/(2*1000) ~500Hz
|
||||
// P1.0 = overflow ~ 1MHz/(2*65536) ~8Hz
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.1/TA0|--> CCR0
|
||||
// | P1.2/TA1|--> CCR1
|
||||
// | P1.0|--> Overflow/software
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1SEL |= 0x06; // P1.1 - P1.2 option select
|
||||
P1DIR |= 0x07; // P1.0 - P1.2 outputs
|
||||
CCTL0 = OUTMOD_4 + CCIE; // CCR0 toggle, interrupt enabled
|
||||
CCTL1 = OUTMOD_4 + CCIE; // CCR1 toggle, interrupt enabled
|
||||
TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, Contmode, int enabled
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A0 (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A0 (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
CCR0 += 200; // Add Offset to CCR0
|
||||
}
|
||||
|
||||
// Timer_A2 Interrupt Vector (TAIV) handler
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA1_VECTOR
|
||||
__interrupt void Timer_A1(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA1_VECTOR))) Timer_A1 (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch( TAIV )
|
||||
{
|
||||
case 2: CCR1 += 1000; // Add Offset to CCR1
|
||||
break;
|
||||
case 10: P1OUT ^= 0x01; // Timer_A3 overflow
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.0-2, Cont. Mode ISR, 32kHz ACLK
|
||||
//
|
||||
// Description: Use Timer_A CCRx units and overflow to generate four
|
||||
// independent timing intervals. For demonstration, CCR0 and CCR1 output
|
||||
// units are optionally selected with port pins P1.1 and P1.2 in toggle
|
||||
// mode. As such, these pins will toggle when respective CCRx registers match
|
||||
// the TAR counter. Interrupts are also enabled with all CCRx units,
|
||||
// software loads offset to next interval only - as long as the interval offset
|
||||
// is aded to CCRx, toggle rate is generated in hardware. Timer_A overflow ISR
|
||||
// is used to toggle P1.0 with software. Proper use of TAIV interrupt vector
|
||||
// generator is demonstrated.
|
||||
// ACLK = TACLK = 32kHz, MCLK = SMCLK = Default DCO
|
||||
// As coded and with TACLK = 32768Hz, toggle rates are:
|
||||
// P1.1 = CCR0 = 32768/(2*4) = 4096Hz
|
||||
// P1.2 = CCR1 = 32768/(2*16) = 1024Hz
|
||||
// P1.0 = overflow = 32768/(2*65536) = 0.25Hz
|
||||
// //* External watch crystal on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.1/TA0|--> CCR0
|
||||
// | P1.2/TA1|--> CCR1
|
||||
// | P1.0|--> Overflow/software
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1SEL |= 0x06; // P1.1 - P1.2 option select
|
||||
P1DIR |= 0x07; // P1.0 - P1.2 outputs
|
||||
CCTL0 = OUTMOD_4 + CCIE; // CCR0 toggle, interrupt enabled
|
||||
CCTL1 = OUTMOD_4 + CCIE; // CCR1 toggle, interrupt enabled
|
||||
TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, contmode, interrupt enabled
|
||||
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/interrupt
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A0 (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A0 (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
CCR0 += 4; // Add Offset to CCR0
|
||||
}
|
||||
|
||||
// Timer_A2 Interrupt Vector (TAIV) handler
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA1_VECTOR
|
||||
__interrupt void Timer_A1(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA1_VECTOR))) Timer_A1 (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch( TAIV )
|
||||
{
|
||||
case 2: CCR1 += 16; // Add Offset to CCR1
|
||||
break;
|
||||
case 10: P1OUT ^= 0x01; // Timer_A3 overflow
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.1/TA0, Up Mode, DCO SMCLK
|
||||
//
|
||||
// Description: Toggle P1.1 using hardware TA0 output. Timer_A is configured
|
||||
// for up mode with CCR0 defining period, TA0 also output on P1.1. In this
|
||||
// example, CCR0 is loaded with 500-1 and TA0 will toggle P1.1 at TACLK/500.
|
||||
// Thus the output frequency on P1.1 will be the TACLK/1000. No CPU or
|
||||
// software resources required.
|
||||
// ACLK = n/a, SMCLK = MCLK = TACLK = default DCO
|
||||
// As coded with TACLK = SMCLK, P1.1 output frequency is ~1000000/1000
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.1/TA0|--> SMCLK/1000
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x02; // P1.1 output
|
||||
P1SEL |= 0x02; // P1.1 option select
|
||||
CCTL0 = OUTMOD_4; // CCR0 toggle mode
|
||||
CCR0 = 500-1;
|
||||
TACTL = TASSEL_2 + MC_1; // SMCLK, upmode
|
||||
|
||||
__bis_SR_register(CPUOFF); // CPU off
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.1/TA0, Up Mode, 32kHz ACLK
|
||||
//
|
||||
// Description: Toggle P1.1 using hardware TA0 output. Timer_A is configured
|
||||
// for up mode with CCR0 defining period, TA0 also output on P1.1. In this
|
||||
// example, CCR0 is loaded with 10-1 and TA0 will toggle P1.1 at TACLK/10.
|
||||
// Thus the output frequency on P1.1 will be the TACLK/20. No CPU or software
|
||||
// resources required. Normal operating mode is LPM3.
|
||||
// ACLK= TACLK = 32kHz, MCLK = default DCO
|
||||
// As coded with TACLK = ACLK, P1.1 output frequency = 32768/20 = 1.6384kHz
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.1/TA0|--> ACLK/20
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x02; // P1.1 output
|
||||
P1SEL |= 0x02; // P1.1 option select
|
||||
CCTL0 = OUTMOD_4; // CCR0 toggle mode
|
||||
CCR0 = 10-1;
|
||||
TACTL = TASSEL_1 + MC_1; // ACLK, upmode
|
||||
|
||||
__bis_SR_register(LPM3_bits); // Enter LPM3 w/interrupt
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.1/TA0, Up/Down Mode, DCO SMCLK
|
||||
//
|
||||
// Description: Toggle P1.1 using hardware TA0 output. Timer_A is configured
|
||||
// for up/down mode with CCR0 defining period, TA0 also output on P1.1. In
|
||||
// this example, CCR0 is loaded with 250 and TA0 will toggle P1.1 at
|
||||
// TACLK/2*250. Thus the output frequency on P1.1 will be the TACLK/1000.
|
||||
// No CPU or software resources required.
|
||||
// ACLK = n/a, SMCLK = MCLK = TACLK = default DCO
|
||||
// As coded with TACLK = SMCLK, P1.1 output frequency is ~1000000/1000
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.1/TA0|--> SMCLK/1000
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x02; // P1.1 output
|
||||
P1SEL |= 0x02; // P1.1 option select
|
||||
CCTL0 = OUTMOD_4; // CCR0 toggle mode
|
||||
CCR0 = 250;
|
||||
TACTL = TASSEL_2 + MC_3; // SMCLK, up-downmode
|
||||
|
||||
__bis_SR_register(CPUOFF); // CPU off
|
||||
}
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Toggle P1.1/TA0, Up/Down Mode, 32kHz ACLK
|
||||
//
|
||||
// Description: Toggle P1.1 using hardware TA0 output. Timer_A is configured
|
||||
// for up/down mode with CCR0 defining period, TA0 also output on P1.1. In
|
||||
// this example, CCR0 is loaded with 5 and TA0 will toggle P1.1 at TACLK/2*5.
|
||||
// Thus the output frequency on P1.1 will be the TACLK/20. No CPU or software
|
||||
// resources required. Normal operating mode is LPM3.
|
||||
// ACLK = TACLK = 32kHz, MCLK = default DCO
|
||||
// As coded with TACLK = ACLK, P1.1 output frequency = 32768/20 = 1.6384kHz
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32 kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.1/TA0|--> ACLK/20
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x02; // P1.1 output
|
||||
P1SEL |= 0x02; // P1.1 option select
|
||||
CCTL0 = OUTMOD_4; // CCR0 toggle mode
|
||||
CCR0 = 5;
|
||||
TACTL = TASSEL_1 + MC_3; // ACLK, up-downmode
|
||||
|
||||
__bis_SR_register(LPM3_bits); // Enter LPM3
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, PWM TA1-2, Up Mode, DCO SMCLK
|
||||
//
|
||||
// Description: This program generates one PWM output on P1.2 using
|
||||
// Timer_A configured for up mode. The value in CCR0, 512-1, defines the PWM
|
||||
// period and the value in CCR1 the PWM duty cycles.
|
||||
// A 75% duty cycle on P1.2.
|
||||
// ACLK = na, SMCLK = MCLK = TACLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.2/TA1|--> CCR1 - 75% PWM
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x0C; // P1.2 and P1.3 output
|
||||
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options
|
||||
CCR0 = 512-1; // PWM Period
|
||||
CCTL1 = OUTMOD_7; // CCR1 reset/set
|
||||
CCR1 = 384; // CCR1 PWM duty cycle
|
||||
TACTL = TASSEL_2 + MC_1; // SMCLK, up mode
|
||||
|
||||
__bis_SR_register(CPUOFF); // Enter LPM0
|
||||
}
|
||||
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, PWM TA1, Up Mode, 32kHz ACLK
|
||||
//
|
||||
// Description: This program generates one PWM output on P1.2 using
|
||||
// Timer_A configured for up mode. The value in CCR0, 512-1, defines the PWM
|
||||
// period and the value in CCR1 the PWM duty cycles. Using 32kHz ACLK
|
||||
// as TACLK, the timer period is 15.6ms with a 75% duty cycle on P1.2.
|
||||
// Normal operating mode is LPM3.
|
||||
// ACLK = TACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO.
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.2/TA1|--> CCR1 - 75% PWM
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x0C; // P1.2 and P1.3 output
|
||||
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options
|
||||
CCR0 = 512-1; // PWM Period
|
||||
CCTL1 = OUTMOD_7; // CCR1 reset/set
|
||||
CCR1 = 384; // CCR1 PWM duty cycle
|
||||
TACTL = TASSEL_1 + MC_1; // ACLK, up mode
|
||||
|
||||
__bis_SR_register(LPM3_bits); // Enter LPM3
|
||||
}
|
||||
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, PWM TA1, Up/Down Mode, DCO SMCLK
|
||||
//
|
||||
// Description: This program generates one PWM output on P1.2 using
|
||||
// Timer_A configured for up/down mode. The value in CCR0, 128, defines the PWM
|
||||
// period/2 and the value in CCR1 the PWM duty cycles.
|
||||
// A 75% duty cycle is on P1.2.
|
||||
// SMCLK = MCLK = TACLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.2/TA1|--> CCR1 - 75% PWM
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x0C; // P1.2 and P1.3 output
|
||||
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options
|
||||
CCR0 = 128; // PWM Period/2
|
||||
CCTL1 = OUTMOD_6; // CCR1 toggle/set
|
||||
CCR1 = 32; // CCR1 PWM duty cycle
|
||||
TACTL = TASSEL_2 + MC_3; // SMCLK, up-down mode
|
||||
|
||||
__bis_SR_register(LPM0_bits); // Enter LPM0
|
||||
}
|
||||
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, PWM TA1, Up/Down Mode, 32kHz ACLK
|
||||
//
|
||||
// Description: This program generates one PWM output on P1.2 using
|
||||
// Timer_A configured for up/down mode. The value in CCR0, 128, defines the
|
||||
// PWM period/2 and the value in CCR1 the PWM duty cycle. Using
|
||||
// 32kHz ACLK as TACLK, the timer period is 7.8ms with a 75% duty cycle on
|
||||
// P1.2. Normal operating mode is LPM3.
|
||||
// ACLK = TACLK = LFXT1 = 32768Hz, MCLK = default DCO
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.2/TA1|--> CCR1 - 75% PWM
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
P1DIR |= 0x0C; // P1.2 and P1.3 output
|
||||
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 otions
|
||||
CCR0 = 128; // PWM Period/2
|
||||
CCTL1 = OUTMOD_6; // CCR1 toggle/set
|
||||
CCR1 = 32; // CCR1 PWM duty cycle
|
||||
TACTL = TASSEL_1 + MC_3; // ACLK, up-down mode
|
||||
|
||||
__bis_SR_register(LPM3_bits); // Enter LPM3
|
||||
}
|
||||
|
||||
+182
@@ -0,0 +1,182 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Timer_A, Ultra-Low Pwr UART 2400 Echo, 32kHz ACLK
|
||||
//
|
||||
// Description: Use Timer_A CCR0 hardware output modes and SCCI data latch
|
||||
// to implement UART function @ 2400 baud. Software does not directly read and
|
||||
// write to RX and TX pins, instead proper use of output modes and SCCI data
|
||||
// latch are demonstrated. Use of these hardware features eliminates ISR
|
||||
// latency effects as hardware insures that output and input bit latching and
|
||||
// timing are perfectly synchronised with Timer_A regardless of other
|
||||
// software activity. In the Mainloop the UART function readies the UART to
|
||||
// receive one character and waits in LPM3 with all activity interrupt driven.
|
||||
// After a character has been received, the UART receive function forces exit
|
||||
// from LPM3 in the Mainloop which echo's back the received character.
|
||||
// ACLK = TACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO
|
||||
// //* An external watch crystal is required on XIN XOUT for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | CCI0B/TXD/P1.5|-------->
|
||||
// | | 2400 8N1
|
||||
// | CCI0A/RXD/P1.1|<--------
|
||||
//
|
||||
#define RXD 0x02 // RXD on P1.1
|
||||
#define TXD 0x20 // TXD on P1.5
|
||||
|
||||
// Conditions for 2400 Baud SW UART, ACLK = 32768
|
||||
|
||||
#define Bitime_5 0x06 // ~ 0.5 bit length + small adjustment
|
||||
#define Bitime 0x0E // 427us bit length ~ 2341 baud
|
||||
|
||||
unsigned int RXTXData;
|
||||
unsigned char BitCnt;
|
||||
|
||||
void TX_Byte (void);
|
||||
void RX_Ready (void);
|
||||
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
|
||||
int main (void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
CCTL0 = OUT; // TXD Idle as Mark
|
||||
TACTL = TASSEL_1 + MC_2; // ACLK, continuous mode
|
||||
P1SEL = TXD + RXD; //
|
||||
P1DIR = TXD; //
|
||||
|
||||
// Mainloop
|
||||
for (;;)
|
||||
{
|
||||
RX_Ready(); // UART ready to RX one Byte
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interr until char RXed
|
||||
TX_Byte(); // TX Back RXed Byte Received
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Function Transmits Character from RXTXData Buffer
|
||||
void TX_Byte (void)
|
||||
{
|
||||
BitCnt = 0xA; // Load Bit counter, 8data + ST/SP
|
||||
while (CCR0 != TAR) // Prevent async capture
|
||||
CCR0 = TAR; // Current state of TA counter
|
||||
CCR0 += Bitime; // Some time till first bit
|
||||
RXTXData |= 0x100; // Add mark stop bit to RXTXData
|
||||
RXTXData = RXTXData << 1; // Add space start bit
|
||||
CCTL0 = CCIS0 + OUTMOD0 + CCIE; // TXD = mark = idle
|
||||
while ( CCTL0 & CCIE ); // Wait for TX completion
|
||||
}
|
||||
|
||||
|
||||
// Function Readies UART to Receive Character into RXTXData Buffer
|
||||
void RX_Ready (void)
|
||||
{
|
||||
BitCnt = 0x8; // Load Bit counter
|
||||
CCTL0 = SCS + OUTMOD0 + CM1 + CAP + CCIE; // Sync, Neg Edge, Cap
|
||||
}
|
||||
|
||||
// Timer A0 interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=TIMERA0_VECTOR
|
||||
__interrupt void Timer_A (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
CCR0 += Bitime; // Add Offset to CCR0
|
||||
|
||||
// TX
|
||||
if (CCTL0 & CCIS0) // TX on CCI0B?
|
||||
{
|
||||
if ( BitCnt == 0)
|
||||
CCTL0 &= ~ CCIE; // All bits TXed, disable interrupt
|
||||
else
|
||||
{
|
||||
CCTL0 |= OUTMOD2; // TX Space
|
||||
if (RXTXData & 0x01)
|
||||
CCTL0 &= ~ OUTMOD2; // TX Mark
|
||||
RXTXData = RXTXData >> 1;
|
||||
BitCnt --;
|
||||
}
|
||||
}
|
||||
// RX
|
||||
else
|
||||
{
|
||||
if( CCTL0 & CAP ) // Capture mode = start bit edge
|
||||
{
|
||||
CCTL0 &= ~ CAP; // Switch from capture to compare mode
|
||||
CCR0 += Bitime_5;
|
||||
}
|
||||
else
|
||||
{
|
||||
RXTXData = RXTXData >> 1;
|
||||
if (CCTL0 & SCCI) // Get bit waiting in receive latch
|
||||
RXTXData |= 0x80;
|
||||
BitCnt --; // All bits RXed?
|
||||
if ( BitCnt == 0)
|
||||
//>>>>>>>>>> Decode of Received Byte Here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
{
|
||||
CCTL0 &= ~ CCIE; // All bits RXed, disable interrupt
|
||||
__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
|
||||
}
|
||||
//>>>>>>>>>> Decode of Received Byte Here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
}
|
||||
}
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - USICNT Used as a One-Shot Timer Function, DCO SMCLK
|
||||
//
|
||||
// Description: USI conunter is used as a one-shot timer. The USI
|
||||
// conunter ISR toggles P1.0 using software. As coded ACLK is pre-divided by
|
||||
// 128 and the USICNT loaded with 32, for a total divided of 4096 or
|
||||
// 12-bits. USICNT must be reloaded after each interrupt which also clears
|
||||
// interrupt flag.
|
||||
// ACLK = VLO, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
BCSCTL3 |= LFXT1S_2; // ACLK = VLO
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
USICTL0 |= USIMST; // Master mode
|
||||
USICTL1 |= USIIE; // Counter interrupt, flag remains set
|
||||
USICKCTL = USIDIV_7 + USISSEL_1; // /128 ACLK
|
||||
USICTL0 &= ~USISWRST; // USI released for operation
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupt
|
||||
}
|
||||
|
||||
// USI interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=USI_VECTOR
|
||||
__interrupt void universal_serial_interface(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
USICNT = 0x1F; // re-load counter
|
||||
}
|
||||
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2/3 Demo - SPI full-Duplex 3-wire Master
|
||||
//
|
||||
// Description: SPI Master communicates full-duplex with SPI Slave using
|
||||
// 3-wire mode. The level on P1.4 is TX'ed and RX'ed to P1.0.
|
||||
// Master will pulse slave reset for synch start.
|
||||
// ACLK = n/a, MCLK = SMCLK = Default DCO
|
||||
//
|
||||
// Slave Master
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// | XIN|- /|\| XIN|-
|
||||
// | | | | |
|
||||
// | XOUT|- --|RST XOUT|-
|
||||
// | | /|\ | |
|
||||
// | RST/NMI|--+<----|P1.2 |
|
||||
// LED <-|P1.0 | | P1.4|<-
|
||||
// ->|P1.4 | | P1.0|-> LED
|
||||
// | SDI/P1.7|<-------|P1.6/SDO |
|
||||
// | SDO/P1.6|------->|P1.7/SDI |
|
||||
// | SCLK/P1.5|<-------|P1.5/SCLK |
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
volatile unsigned int i;
|
||||
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1OUT = 0x10; // P1.4 set, else reset
|
||||
P1REN |= 0x10; // P1.4 pullup
|
||||
P1DIR = 0x01; // P1.0 output, else input
|
||||
USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI master
|
||||
USICTL1 |= USIIE; // Counter interrupt, flag remains set
|
||||
USICKCTL = USIDIV_4 + USISSEL_2; // /16 SMCLK
|
||||
USICTL0 &= ~USISWRST; // USI released for operation
|
||||
USISRL = P1IN; // init-load data
|
||||
|
||||
P1DIR |= 0x04; // Reset Slave
|
||||
P1DIR &= ~0x04;
|
||||
for (i = 0xFFF; i > 0; i--); // Time for slave to ready
|
||||
USICNT = 8; // init-load counter
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// USI interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=USI_VECTOR
|
||||
__interrupt void universal_serial_interface(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (0x10 & USISRL)
|
||||
P1OUT |= 0x01;
|
||||
else
|
||||
P1OUT &= ~0x01;
|
||||
USISRL = P1IN;
|
||||
USICNT = 8; // re-load counter
|
||||
}
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2/3 Demo - SPI full-Duplex 3-wire Slave
|
||||
//
|
||||
// Description: SPI Master communicates full-duplex with SPI Slave using
|
||||
// 3-wire mode. The level on P1.4 is TX'ed and RX'ed to P1.0.
|
||||
// Master will pulse slave reset for synch start.
|
||||
// ACLK = n/a, MCLK = SMCLK = Default DCO
|
||||
//
|
||||
// Slave Master
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// | XIN|- /|\| XIN|-
|
||||
// | | | | |
|
||||
// | XOUT|- --|RST XOUT|-
|
||||
// | | /|\ | |
|
||||
// | RST/NMI|--+<----|P1.2 |
|
||||
// LED <-|P1.0 | | P1.4|<-
|
||||
// ->|P1.4 | | P1.0|-> LED
|
||||
// | SDI/P1.7|<-------|P1.6/SDO |
|
||||
// | SDO/P1.6|------->|P1.7/SDI |
|
||||
// | SCLK/P1.5|<-------|P1.5/SCLK |
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1OUT = 0x10; // P1.4 set, else reset
|
||||
P1REN |= 0x10; // P1.4 pullup
|
||||
P1DIR = 0x01; // P1.0 output, else input
|
||||
USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIOE; // Port, SPI slave
|
||||
USICTL1 |= USIIE; // Counter interrupt, flag remains set
|
||||
USICTL0 &= ~USISWRST; // USI released for operation
|
||||
USISRL = P1IN; // init-load data
|
||||
USICNT = 8; // init-load counter
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// USI interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=USI_VECTOR
|
||||
__interrupt void universal_serial_interface(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (0x10 & USISRL)
|
||||
P1OUT |= 0x01;
|
||||
else
|
||||
P1OUT &= ~0x01;
|
||||
USISRL = P1IN;
|
||||
USICNT = 8; // re-load counter
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2/3 Demo - USI SPI Interface with HC165/164 Shift Registers
|
||||
//
|
||||
// Description: Demonstrate USI in two-way SPI mode. Data are read from
|
||||
// an HC165, and same data written back to the HC164.
|
||||
// ACLK = n/a MCLK = SMCLK = default DCO, USICLK = SMCLK/2
|
||||
// //*USART0 control bits are in different SFR's from other MSP430's//
|
||||
//
|
||||
// MSP430F20x2/3
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | ^ HC164
|
||||
// HC165 --|RST XOUT|- | -------------
|
||||
// ---------- | | |-|/CLR,B | 8
|
||||
// 8 | /LD|<---|P1.1 SIMO0/P1.6|------>|A Qx|--\->
|
||||
// -\->|A-H CLK|<---|P1.5/SCLK0 - P1.5|------>|CLK |
|
||||
// |-|INH QH|--->|P1.7/SOMI0 | | |
|
||||
// |-|SER | | | | |
|
||||
// - | | | | | |
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
|
||||
P1OUT = 0;
|
||||
P1OUT |= 0x02;
|
||||
P1DIR |= 0x02;
|
||||
USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI Master
|
||||
USICTL1 |= USICKPH + USIIE; // Counter interrupt, flag remains set
|
||||
USICKCTL = USIDIV_1 + USISSEL_2; // /2 SMCLK
|
||||
USICTL0 &= ~USISWRST; // USI released for operation
|
||||
USICNT = 8; // init-load counter
|
||||
|
||||
while (1) // Loop
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0xFFFF; i > 0; i--); // Delay
|
||||
while (!(USIIFG & USICTL1)); // Counter clear?
|
||||
P1OUT &= ~0x02; // Latch data into 'HC165
|
||||
P1OUT |= 0x02;
|
||||
// ******************** // Read data are ready to be written
|
||||
USICNT = 8; // re-load counter
|
||||
}
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20x2/3 Demo - USI SPI Interface to TLC549 8-bit ADC
|
||||
//
|
||||
// Description: This program demonstrates the USI in SPI mode interface to a
|
||||
// TLC549 8-bit ADC. If AIN > 0.5(REF+ - REF-), P1.0 set, else reset.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO, UCICLK = SMCLK/4
|
||||
// //** VCC must be at least 3v for TLC549 **//
|
||||
//
|
||||
// MSP430F20x2/3
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// TLC549 | | |
|
||||
// ------------- --|RST XOUT|-
|
||||
// | CS|<---|P1.1 |
|
||||
// | DATAOUT|--->|P1.7/SOMI P1.0|-->LED
|
||||
// ~>|AIN I/O CLK|<---|P1.5/SCLK |
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1OUT = 0;
|
||||
P1DIR |= 0x03;
|
||||
USICTL0 |= USIPE7 + USIPE5 + USIMST + USIOE; // Port, SPI master
|
||||
USICTL1 |= USIIE; // Counter interrupt, flag remains set
|
||||
USICKCTL = USIDIV_2 + USISSEL_2; // /4 SMCLK
|
||||
USICTL0 &= ~USISWRST; // USI released for operation
|
||||
USICNT = 8; // init-load counter
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// USI interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=USI_VECTOR
|
||||
__interrupt void universal_serial_interface(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT |= 0x02; // Disable TLC549
|
||||
if (USISRL > 0x7F)
|
||||
P1OUT |= 0x01;
|
||||
else
|
||||
P1OUT &= ~0x01;
|
||||
P1OUT &= ~0x02; // Enable TLC549
|
||||
USICNT = 8; // re-load counter
|
||||
}
|
||||
+199
@@ -0,0 +1,199 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - I2C Master Receiver, single byte
|
||||
//
|
||||
// Description: I2C Master communicates with I2C Slave using
|
||||
// the USI. Slave data should increment from 0x00 with each transmitted byte
|
||||
// which is verified by the Master.
|
||||
// LED off for address or data Ack; LED on for address or data NAck.
|
||||
// ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
|
||||
//
|
||||
// ***THIS IS THE MASTER CODE***
|
||||
//
|
||||
// Slave Master
|
||||
// (msp430x20x3_usi_09.c)
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// /|\| XIN|- /|\| XIN|-
|
||||
// | | | | | |
|
||||
// --|RST XOUT|- --|RST XOUT|-
|
||||
// | | | |
|
||||
// LED <-|P1.0 | | |
|
||||
// | | | P1.0|-> LED
|
||||
// | SDA/P1.7|------->|P1.7/SDA |
|
||||
// | SCL/P1.6|<-------|P1.6/SCL |
|
||||
//
|
||||
// Note: internal pull-ups are used in this example for SDA & SCL
|
||||
//
|
||||
// Z. Albus
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
char SLV_data = 0x00; // Variable for received data
|
||||
char SLV_Addr = 0x91; // Address is 0x48 << 1 bit + 1 for Read
|
||||
int I2C_State = 0; // State variable
|
||||
|
||||
int main(void)
|
||||
{
|
||||
volatile unsigned int i; // Use volatile to prevent removal
|
||||
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
|
||||
P1OUT = 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1DIR = 0xFF; // Unused pins as outputs
|
||||
P2OUT = 0;
|
||||
P2DIR = 0xFF;
|
||||
|
||||
USICTL0 = USIPE6+USIPE7+USIMST+USISWRST;// Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE; // Enable I2C mode & USI interrupt
|
||||
USICKCTL = USIDIV_3+USISSEL_2+USICKPL;// Setup USI clocks: SCL = SMCLK/8 (~120kHz)
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
|
||||
while(1)
|
||||
{
|
||||
USICTL1 |= USIIFG; // Set flag and start communication
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
__no_operation(); // Used for IAR
|
||||
for (i = 0; i < 5000; i++); // Dummy delay between communication cycles
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
// USI interrupt service routine
|
||||
******************************************************/
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = USI_VECTOR
|
||||
__interrupt void USI_TXRX (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) USI_TXRX (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch(I2C_State)
|
||||
{
|
||||
case 0: // Generate Start Condition & send address to slave
|
||||
P1OUT |= 0x01; // LED on: sequence start
|
||||
USISRL = 0x00; // Generate Start Condition...
|
||||
USICTL0 |= USIGE+USIOE;
|
||||
USICTL0 &= ~USIGE;
|
||||
USISRL = SLV_Addr; // ... and transmit address, R/W = 1
|
||||
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
|
||||
I2C_State = 2; // Go to next state: receive address (N)Ack
|
||||
break;
|
||||
|
||||
case 2: // Receive Address Ack/Nack bit
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack bit
|
||||
I2C_State = 4; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 4: // Process Address Ack/Nack & handle data RX
|
||||
if (USISRL & 0x01) // If Nack received...
|
||||
{ // Prep Stop Condition
|
||||
USICTL0 |= USIOE;
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter = 1, SCL high, SDA low
|
||||
I2C_State = 10; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01; // Turn on LED: error
|
||||
}
|
||||
else // Ack received
|
||||
{ // Receive Data from slave
|
||||
USICNT |= 0x08; // Bit counter = 8, RX data
|
||||
I2C_State = 6; // Go to next state: Test data and (N)Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
}
|
||||
break;
|
||||
|
||||
case 6: // Send Data Ack/Nack bit
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL == SLV_data) // If data valid...
|
||||
{
|
||||
USISRL = 0x00; // Send Ack
|
||||
SLV_data++; // Increment Slave data
|
||||
P1OUT &= ~0x01; // LED off
|
||||
}
|
||||
else
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
P1OUT |= 0x01; // LED on: error
|
||||
}
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
I2C_State = 8; // Go to next state: prep stop
|
||||
break;
|
||||
|
||||
case 8: // Prep Stop Condition
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter = 1, SCL high, SDA low
|
||||
I2C_State = 10; // Go to next state: generate Stop
|
||||
break;
|
||||
|
||||
case 10: // Generate Stop Condition
|
||||
USISRL = 0x0FF; // USISRL = 1 to release SDA
|
||||
USICTL0 |= USIGE; // Transparent latch enabled
|
||||
USICTL0 &= ~(USIGE+USIOE);// Latch/SDA output disabled
|
||||
I2C_State = 0; // Reset state machine for next transmission
|
||||
LPM0_EXIT; // Exit active for next transfer
|
||||
break;
|
||||
}
|
||||
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
}
|
||||
+197
@@ -0,0 +1,197 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - I2C Master Transmitter, single byte
|
||||
//
|
||||
// Description: I2C Master communicates with I2C Slave using
|
||||
// the USI. Master data is sent and increments from 0x00 with each transmitted
|
||||
// byte which is verified by the slave.
|
||||
// LED off for address or data Ack; LED on for address or data NAck.
|
||||
// ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
|
||||
//
|
||||
// ***THIS IS THE MASTER CODE***
|
||||
//
|
||||
// Slave Master
|
||||
// (msp430x20x3_usi_08.c)
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// /|\| XIN|- /|\| XIN|-
|
||||
// | | | | | |
|
||||
// --|RST XOUT|- --|RST XOUT|-
|
||||
// | | | |
|
||||
// LED <-|P1.0 | | |
|
||||
// | | | P1.0|-> LED
|
||||
// | SDA/P1.7|<-------|P1.7/SDA |
|
||||
// | SCL/P1.6|<-------|P1.6/SCL |
|
||||
//
|
||||
// Note: internal pull-ups are used in this example for SDA & SCL
|
||||
//
|
||||
// Z. Albus
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
char MST_Data = 0; // Variable for transmitted data
|
||||
char SLV_Addr = 0x90; // Address is 0x48 << 1 bit + 0 for Write
|
||||
int I2C_State = 0; // State variable
|
||||
|
||||
int main(void)
|
||||
{
|
||||
volatile unsigned int i; // Use volatile to prevent removal
|
||||
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
|
||||
P1OUT = 0xC0; // P1.6 & P1.7 Pullups, others to 0
|
||||
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1DIR = 0xFF; // Unused pins as outputs
|
||||
P2OUT = 0;
|
||||
P2DIR = 0xFF;
|
||||
|
||||
USICTL0 = USIPE6+USIPE7+USIMST+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE; // Enable I2C mode & USI interrupt
|
||||
USICKCTL = USIDIV_3+USISSEL_2+USICKPL; // Setup USI clocks: SCL = SMCLK/8 (~125kHz)
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
|
||||
while(1)
|
||||
{
|
||||
USICTL1 |= USIIFG; // Set flag and start communication
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
__no_operation(); // Used for IAR
|
||||
for (i = 0; i < 5000; i++); // Dummy delay between communication cycles
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
// USI interrupt service routine
|
||||
******************************************************/
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = USI_VECTOR
|
||||
__interrupt void USI_TXRX (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) USI_TXRX (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch(I2C_State)
|
||||
{
|
||||
case 0: // Generate Start Condition & send address to slave
|
||||
P1OUT |= 0x01; // LED on: sequence start
|
||||
USISRL = 0x00; // Generate Start Condition...
|
||||
USICTL0 |= USIGE+USIOE;
|
||||
USICTL0 &= ~USIGE;
|
||||
USISRL = SLV_Addr; // ... and transmit address, R/W = 0
|
||||
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
|
||||
I2C_State = 2; // Go to next state: receive address (N)Ack
|
||||
break;
|
||||
|
||||
case 2: // Receive Address Ack/Nack bit
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack bit
|
||||
I2C_State = 4; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 4: // Process Address Ack/Nack & handle data TX
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL & 0x01) // If Nack received...
|
||||
{ // Send stop...
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter = 1, SCL high, SDA low
|
||||
I2C_State = 10; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01; // Turn on LED: error
|
||||
}
|
||||
else
|
||||
{ // Ack received, TX data to slave...
|
||||
USISRL = MST_Data; // Load data byte
|
||||
USICNT |= 0x08; // Bit counter = 8, start TX
|
||||
I2C_State = 6; // Go to next state: receive data (N)Ack
|
||||
P1OUT &= ~0x01; // Turn off LED
|
||||
}
|
||||
break;
|
||||
|
||||
case 6: // Receive Data Ack/Nack bit
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack bit
|
||||
I2C_State = 8; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 8: // Process Data Ack/Nack & send Stop
|
||||
USICTL0 |= USIOE;
|
||||
if (USISRL & 0x01) // If Nack received...
|
||||
P1OUT |= 0x01; // Turn on LED: error
|
||||
else // Ack received
|
||||
{
|
||||
MST_Data++; // Increment Master data
|
||||
P1OUT &= ~0x01; // Turn off LED
|
||||
}
|
||||
// Send stop...
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter = 1, SCL high, SDA low
|
||||
I2C_State = 10; // Go to next state: generate Stop
|
||||
break;
|
||||
|
||||
case 10:// Generate Stop Condition
|
||||
USISRL = 0x0FF; // USISRL = 1 to release SDA
|
||||
USICTL0 |= USIGE; // Transparent latch enabled
|
||||
USICTL0 &= ~(USIGE+USIOE);// Latch/SDA output disabled
|
||||
I2C_State = 0; // Reset state machine for next transmission
|
||||
LPM0_EXIT; // Exit active for next transfer
|
||||
break;
|
||||
}
|
||||
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
}
|
||||
+193
@@ -0,0 +1,193 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - I2C Slave Receiver, single byte
|
||||
//
|
||||
// Description: I2C Slave communicates with I2C Master using
|
||||
// the USI. Master data should increment from 0x00 with each transmitted byte
|
||||
// which is verified by the slave.
|
||||
// LED off for address or data Ack; LED on for address or data NAck.d by the slave.
|
||||
// ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
|
||||
//
|
||||
// ***THIS IS THE SLAVE CODE***
|
||||
//
|
||||
// Slave Master
|
||||
// (msp430x20x3_usi_07.c)
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// /|\| XIN|- /|\| XIN|-
|
||||
// | | | | | |
|
||||
// --|RST XOUT|- --|RST XOUT|-
|
||||
// | | | |
|
||||
// LED <-|P1.0 | | |
|
||||
// | | | P1.0|-> LED
|
||||
// | SDA/P1.7|<-------|P1.7/SDA |
|
||||
// | SCL/P1.6|<-------|P1.6/SCL |
|
||||
//
|
||||
// Note: internal pull-ups are used in this example for SDA & SCL
|
||||
//
|
||||
// Z. Albus
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
char MST_Data = 0; // Variable for received data
|
||||
char SLV_Addr = 0x90; // Address is 0x48<<1 for R/W
|
||||
int I2C_State = 0; // State variable
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
|
||||
P1OUT = 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1DIR = 0xFF; // Unused pins as outputs
|
||||
P2OUT = 0;
|
||||
P2DIR = 0xFF;
|
||||
|
||||
USICTL0 = USIPE6+USIPE7+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE+USISTTIE; // Enable I2C mode & USI interrupts
|
||||
USICKCTL = USICKPL; // Setup clock polarity
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
|
||||
while(1)
|
||||
{
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
__no_operation(); // Used for IAR
|
||||
}
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
// USI interrupt service routine
|
||||
//******************************************************************************
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = USI_VECTOR
|
||||
__interrupt void USI_TXRX (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) USI_TXRX (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (USICTL1 & USISTTIFG) // Start entry?
|
||||
{
|
||||
P1OUT |= 0x01; // LED on: sequence start
|
||||
I2C_State = 2; // Enter 1st state on start
|
||||
}
|
||||
|
||||
switch(I2C_State)
|
||||
{
|
||||
case 0: // Idle, should not get here
|
||||
break;
|
||||
|
||||
case 2: // RX Address
|
||||
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, RX address
|
||||
USICTL1 &= ~USISTTIFG; // Clear start flag
|
||||
I2C_State = 4; // Go to next state: check address
|
||||
break;
|
||||
|
||||
case 4: // Process Address and send (N)Ack
|
||||
if (USISRL & 0x01) // If read...
|
||||
SLV_Addr++; // Save R/W bit
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL == SLV_Addr) // Address match?
|
||||
{
|
||||
USISRL = 0x00; // Send Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
I2C_State = 8; // Go to next state: RX data
|
||||
}
|
||||
else
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
P1OUT |= 0x01; // LED on: error
|
||||
I2C_State = 6; // Go to next state: prep for next Start
|
||||
}
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
break;
|
||||
|
||||
case 6: // Prep for Start condition
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
SLV_Addr = 0x90; // Reset slave address
|
||||
I2C_State = 0; // Reset state machine
|
||||
break;
|
||||
|
||||
case 8: // Receive data byte
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x08; // Bit counter = 8, RX data
|
||||
I2C_State = 10; // Go to next state: Test data and (N)Ack
|
||||
break;
|
||||
|
||||
case 10:// Check Data & TX (N)Ack
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL == MST_Data) // If data valid...
|
||||
{
|
||||
USISRL = 0x00; // Send Ack
|
||||
MST_Data++; // Increment Master data
|
||||
P1OUT &= ~0x01; // LED off
|
||||
}
|
||||
else
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
P1OUT |= 0x01; // LED on: error
|
||||
}
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
I2C_State = 6; // Go to next state: prep for next Start
|
||||
break;
|
||||
}
|
||||
|
||||
USICTL1 &= ~USIIFG; // Clear pending flags
|
||||
}
|
||||
+199
@@ -0,0 +1,199 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - I2C Slave Transmitter, single byte
|
||||
//
|
||||
// Description: I2C Slave communicates with I2C Master using
|
||||
// the USI. Slave data is sent and increments from 0x00 with each transmitted
|
||||
// byte which is verified by the Master.
|
||||
// LED off for address or data Ack; LED on for address or data NAck.
|
||||
// ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
|
||||
//
|
||||
// ***THIS IS THE SLAVE CODE***
|
||||
//
|
||||
// Slave Master
|
||||
// (msp430x20x3_usi_06.c)
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// /|\| XIN|- /|\| XIN|-
|
||||
// | | | | | |
|
||||
// --|RST XOUT|- --|RST XOUT|-
|
||||
// | | | |
|
||||
// LED <-|P1.0 | | |
|
||||
// | | | P1.0|-> LED
|
||||
// | SDA/P1.7|------->|P1.7/SDA |
|
||||
// | SCL/P1.6|<-------|P1.6/SCL |
|
||||
//
|
||||
// Note: internal pull-ups are used in this example for SDA & SCL
|
||||
//
|
||||
// Z. Albus
|
||||
// Texas Instruments Inc.
|
||||
// May 2006
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
char SLV_Data = 0; // Variable for transmitted data
|
||||
char SLV_Addr = 0x90; // Address is 0x48<<1 for R/W
|
||||
int I2C_State = 0; // State variable
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
|
||||
P1OUT = 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1DIR = 0xFF; // Unused pins as outputs
|
||||
P2OUT = 0;
|
||||
P2DIR = 0xFF;
|
||||
|
||||
USICTL0 = USIPE6+USIPE7+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE+USISTTIE; // Enable I2C mode & USI interrupts
|
||||
USICKCTL = USICKPL; // Setup clock polarity
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
|
||||
while(1)
|
||||
{
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
__no_operation(); // Used for IAR
|
||||
}
|
||||
}
|
||||
|
||||
//******************************************************
|
||||
// USI interrupt service routine
|
||||
//******************************************************
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = USI_VECTOR
|
||||
__interrupt void USI_TXRX (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) USI_TXRX (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (USICTL1 & USISTTIFG) // Start entry?
|
||||
{
|
||||
P1OUT |= 0x01; // LED on: Sequence start
|
||||
I2C_State = 2; // Enter 1st state on start
|
||||
}
|
||||
|
||||
switch(I2C_State)
|
||||
{
|
||||
case 0: //Idle, should not get here
|
||||
break;
|
||||
|
||||
case 2: //RX Address
|
||||
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, RX Address
|
||||
USICTL1 &= ~USISTTIFG; // Clear start flag
|
||||
I2C_State = 4; // Go to next state: check address
|
||||
break;
|
||||
|
||||
case 4: // Process Address and send (N)Ack
|
||||
if (USISRL & 0x01) // If read...
|
||||
SLV_Addr++; // Save R/W bit
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL == SLV_Addr) // Address match?
|
||||
{
|
||||
USISRL = 0x00; // Send Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
I2C_State = 8; // Go to next state: TX data
|
||||
}
|
||||
else
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
P1OUT |= 0x01; // LED on: error
|
||||
I2C_State = 6; // Go to next state: prep for next Start
|
||||
}
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
break;
|
||||
|
||||
case 6: // Prep for Start condition
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
SLV_Addr = 0x90; // Reset slave address
|
||||
I2C_State = 0; // Reset state machine
|
||||
break;
|
||||
|
||||
case 8: // Send Data byte
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
USISRL = SLV_Data; // Send data byte
|
||||
USICNT |= 0x08; // Bit counter = 8, TX data
|
||||
I2C_State = 10; // Go to next state: receive (N)Ack
|
||||
break;
|
||||
|
||||
case 10:// Receive Data (N)Ack
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack
|
||||
I2C_State = 12; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 12:// Process Data Ack/NAck
|
||||
if (USISRL & 0x01) // If Nack received...
|
||||
{
|
||||
P1OUT |= 0x01; // LED on: error
|
||||
}
|
||||
else // Ack received
|
||||
{
|
||||
P1OUT &= ~0x01; // LED off
|
||||
SLV_Data++; // Increment Slave data
|
||||
}
|
||||
// Prep for Start condition
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
SLV_Addr = 0x90; // Reset slave address
|
||||
I2C_State = 0; // Reset state machine
|
||||
break;
|
||||
}
|
||||
|
||||
USICTL1 &= ~USIIFG; // Clear pending flags
|
||||
}
|
||||
+318
@@ -0,0 +1,318 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - I2C Master Transmitter / Reciever, multiple bytes
|
||||
//
|
||||
// Description: I2C Master communicates with I2C Slave using
|
||||
// the USI. Master data should increment from 0x55 with each transmitted byte
|
||||
// and Master determines the number of bytes recieved, set by
|
||||
// the Number_of_Bytes value. LED off for address or data Ack;
|
||||
// LED on for address or data NAck.
|
||||
// ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
|
||||
//
|
||||
//
|
||||
// ***THIS IS THE MASTER CODE***
|
||||
//
|
||||
// Slave Master
|
||||
// (msp430x20x3_usi_15.c)
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// /|\| XIN|- /|\| XIN|-
|
||||
// | | | | | |
|
||||
// --|RST XOUT|- --|RST XOUT|-
|
||||
// | | | |
|
||||
// LED <-|P1.0 | | |
|
||||
// | | | P1.0|-> LED
|
||||
// | SDA/P1.7|------->|P1.6/SDA |
|
||||
// | SCL/P1.6|<-------|P1.7/SCL |
|
||||
//
|
||||
// Note: internal pull-ups are used in this example for SDA & SCL
|
||||
//
|
||||
// R. B. Elliott / H. Grewal
|
||||
// Texas Instruments Inc.
|
||||
// February 2008
|
||||
// Built with IAR Embedded Workbench Version: 3.42A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
#define number_of_bytes 5 // How many bytes?
|
||||
|
||||
void Master_Transmit(void);
|
||||
void Master_Recieve(void);
|
||||
|
||||
void Setup_USI_Master_TX(void);
|
||||
void Setup_USI_Master_RX(void);
|
||||
|
||||
char MST_Data = 0x55; // Variable for transmitted data
|
||||
char SLV_Addr = 0x90;
|
||||
int I2C_State, Bytecount, Transmit = 0; // State variable
|
||||
void Data_TX (void);
|
||||
void Data_RX (void);
|
||||
int main(void)
|
||||
{
|
||||
volatile unsigned int i; // Use volatile to prevent removal
|
||||
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
|
||||
P1OUT = 0xC0; // P1.6 & P1.7 Pullups, others to 0
|
||||
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1DIR = 0xFF; // Unused pins as outputs
|
||||
P2OUT = 0;
|
||||
P2DIR = 0xFF;
|
||||
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
Master_Transmit();
|
||||
__no_operation(); // Used for IAR
|
||||
|
||||
Master_Recieve();
|
||||
__no_operation();
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
// USI interrupt service routine
|
||||
// Data Transmit : state 0 -> 2 -> 4 -> 10 -> 12 -> 14
|
||||
// Data Recieve : state 0 -> 2 -> 4 -> 6 -> 8 -> 14
|
||||
******************************************************/
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = USI_VECTOR
|
||||
__interrupt void USI_TXRX (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) USI_TXRX (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch(__even_in_range(I2C_State,14))
|
||||
{
|
||||
case 0: // Generate Start Condition & send address to slave
|
||||
P1OUT |= 0x01; // LED on: sequence start
|
||||
Bytecount = 0;
|
||||
USISRL = 0x00; // Generate Start Condition...
|
||||
USICTL0 |= USIGE+USIOE;
|
||||
USICTL0 &= ~USIGE;
|
||||
if (Transmit == 1){
|
||||
USISRL = 0x90; // Address is 0x48 << 1 bit + 0 (rw)
|
||||
}
|
||||
if (Transmit == 0){
|
||||
USISRL = 0x91; // 0x91 Address is 0x48 << 1 bit
|
||||
// + 1 for Read
|
||||
}
|
||||
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
|
||||
I2C_State = 2; // next state: rcv address (N)Ack
|
||||
break;
|
||||
|
||||
case 2: // Receive Address Ack/Nack bit
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter=1, receive (N)Ack bit
|
||||
I2C_State = 4; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 4: // Process Address Ack/Nack & handle data TX
|
||||
|
||||
if(Transmit == 1){
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL & 0x01) // If Nack received...
|
||||
{ // Send stop...
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter=1, SCL high, SDA low
|
||||
I2C_State = 14; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01; // Turn on LED: error
|
||||
}
|
||||
else
|
||||
{ // Ack received, TX data to slave...
|
||||
USISRL = MST_Data++; // Load data byte
|
||||
USICNT |= 0x08; // Bit counter = 8, start TX
|
||||
I2C_State = 10; // next state: receive data (N)Ack
|
||||
Bytecount++;
|
||||
P1OUT &= ~0x01; // Turn off LED
|
||||
break;
|
||||
}
|
||||
} if(Transmit == 0){
|
||||
|
||||
if (USISRL & 0x01) // If Nack received
|
||||
{ // Prep Stop Condition
|
||||
USICTL0 |= USIOE;
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter= 1, SCL high, SDA low
|
||||
I2C_State = 8; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01; // Turn on LED: error
|
||||
}
|
||||
else{ Data_RX();} // Ack received
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case 6: // Send Data Ack/Nack bit
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (Bytecount <= number_of_bytes-2)
|
||||
{ // If this is not the last byte
|
||||
USISRL = 0x00; // Send Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
I2C_State = 4; // Go to next state: data/rcv again
|
||||
Bytecount++;
|
||||
}
|
||||
|
||||
else //last byte: send NACK
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
P1OUT |= 0x01; // LED on: end of comm
|
||||
I2C_State = 8; // stop condition
|
||||
}
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
break;
|
||||
|
||||
case 8: // Prep Stop Condition
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter= 1, SCL high, SDA low
|
||||
I2C_State = 14; // Go to next state: generate Stop
|
||||
break;
|
||||
|
||||
case 10: // Receive Data Ack/Nack bit
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack bit
|
||||
I2C_State = 12; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 12: // Process Data Ack/Nack & send Stop
|
||||
USICTL0 |= USIOE;
|
||||
if (Bytecount == number_of_bytes){// If last byte
|
||||
USISRL = 0x00;
|
||||
|
||||
I2C_State = 14; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01;
|
||||
USICNT |= 0x01; } // set count=1 to trigger next state
|
||||
else{
|
||||
P1OUT &= ~0x01; // Turn off LED
|
||||
Data_TX(); // TX byte
|
||||
}
|
||||
break;
|
||||
|
||||
case 14:// Generate Stop Condition
|
||||
USISRL = 0x0FF; // USISRL = 1 to release SDA
|
||||
USICTL0 |= USIGE; // Transparent latch enabled
|
||||
USICTL0 &= ~(USIGE+USIOE); // Latch/SDA output disabled
|
||||
I2C_State = 0; // Reset state machine for next xmt
|
||||
LPM0_EXIT; // Exit active for next transfer
|
||||
break;
|
||||
}
|
||||
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
}
|
||||
|
||||
|
||||
void Data_TX (void){
|
||||
|
||||
USISRL = MST_Data++; // Load data byte
|
||||
USICNT |= 0x08; // Bit counter = 8, start TX
|
||||
I2C_State = 10; // next state: receive data (N)Ack
|
||||
Bytecount++;
|
||||
}
|
||||
|
||||
void Data_RX (void){
|
||||
USICTL0 &= ~USIOE; // SDA = input --> redundant
|
||||
USICNT |= 0x08; // Bit counter = 8, RX data
|
||||
I2C_State = 6; // Next state: Test data and (N)Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
}
|
||||
|
||||
|
||||
void Setup_USI_Master_TX (void)
|
||||
{
|
||||
__disable_interrupt();
|
||||
Bytecount = 0;
|
||||
Transmit = 1;
|
||||
USICTL0 = USIPE6+USIPE7+USIMST+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE; // Enable I2C mode & USI interrupt
|
||||
USICKCTL = USIDIV_7+USISSEL_2+USICKPL; // USI clk: SCL = SMCLK/128
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
}
|
||||
|
||||
|
||||
void Setup_USI_Master_RX (void)
|
||||
{
|
||||
__disable_interrupt();
|
||||
Bytecount = 0;
|
||||
Transmit = 0;
|
||||
USICTL0 = USIPE6+USIPE7+USIMST+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE; // Enable I2C mode & USI interrupt
|
||||
USICKCTL = USIDIV_7+USISSEL_2+USICKPL; // USI clks: SCL = SMCLK/128
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
|
||||
}
|
||||
|
||||
void Master_Transmit(void){
|
||||
volatile unsigned int i;
|
||||
Setup_USI_Master_TX();
|
||||
USICTL1 |= USIIFG; // Set flag and start communication
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
for (i = 0; i < 5000; i++); // Delay between comm cycles
|
||||
}
|
||||
void Master_Recieve(void){
|
||||
volatile unsigned int i;
|
||||
Setup_USI_Master_RX();
|
||||
USICTL1 |= USIIFG; // Set flag and start communication
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
for (i = 0; i < 5000; i++); // Delay between comm cycles
|
||||
}
|
||||
+248
@@ -0,0 +1,248 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - I2C Slave Receiver / Slave Transmitter, multiple bytes
|
||||
//
|
||||
// Description: I2C Master communicates with I2C Slave using
|
||||
// the USI. Master data should increment from 0x55 with each transmitted byte.
|
||||
// ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
|
||||
//
|
||||
// ***THIS IS THE SLAVE CODE***
|
||||
//
|
||||
// Slave Master
|
||||
// (msp430x20x3_usi_12.c)
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// /|\| XIN|- /|\| XIN|-
|
||||
// | | | | | |
|
||||
// --|RST XOUT|- --|RST XOUT|-
|
||||
// | | | |
|
||||
// LED <-|P1.0 | | |
|
||||
// | | | P1.0|-> LED
|
||||
// | SDA/P1.7|------->|P1.6/SDA |
|
||||
// | SCL/P1.6|<-------|P1.7/SCL |
|
||||
//
|
||||
// Note: internal pull-ups are used in this example for SDA & SCL
|
||||
//
|
||||
// R. B. Elliott / H. Grewal
|
||||
// Texas Instruments Inc.
|
||||
// February 2008
|
||||
// Built with IAR Embedded Workbench Version: 3.42A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
#define Number_of_Bytes 5 // **** How many bytes?? ****
|
||||
|
||||
void Setup_USI_Slave(void);
|
||||
|
||||
char MST_Data = 0; // Variable for received data
|
||||
char SLV_Data = 0x55;
|
||||
char SLV_Addr = 0x90; // Address is 0x48<<1 for R/W
|
||||
int I2C_State, Bytecount, transmit = 0; // State variables
|
||||
|
||||
void Data_RX(void);
|
||||
void TX_Data(void);
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
Setup_USI_Slave();
|
||||
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
__no_operation();
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
// USI interrupt service routine
|
||||
// Rx bytes from master: State 2->4->6->8
|
||||
// Tx bytes to Master: State 2->4->10->12->14
|
||||
//******************************************************************************
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = USI_VECTOR
|
||||
__interrupt void USI_TXRX (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) USI_TXRX (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
if (USICTL1 & USISTTIFG) // Start entry?
|
||||
{
|
||||
P1OUT |= 0x01; // LED on: sequence start
|
||||
I2C_State = 2; // Enter 1st state on start
|
||||
}
|
||||
|
||||
switch(__even_in_range(I2C_State,14))
|
||||
{
|
||||
case 0: // Idle, should not get here
|
||||
break;
|
||||
|
||||
case 2: // RX Address
|
||||
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, RX address
|
||||
USICTL1 &= ~USISTTIFG; // Clear start flag
|
||||
I2C_State = 4; // Go to next state: check address
|
||||
break;
|
||||
|
||||
case 4: // Process Address and send (N)Ack
|
||||
if (USISRL & 0x01){ // If master read...
|
||||
SLV_Addr = 0x91; // Save R/W bit
|
||||
transmit = 1;}
|
||||
else{transmit = 0;
|
||||
SLV_Addr = 0x90;}
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL == SLV_Addr) // Address match?
|
||||
{
|
||||
USISRL = 0x00; // Send Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
if (transmit == 0){
|
||||
I2C_State = 6;} // Go to next state: RX data
|
||||
if (transmit == 1){
|
||||
I2C_State = 10;} // Else go to next state: TX data
|
||||
}
|
||||
else
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
P1OUT |= 0x01; // LED on: error
|
||||
I2C_State = 8; // next state: prep for next Start
|
||||
}
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
break;
|
||||
|
||||
case 6: // Receive data byte
|
||||
Data_RX();
|
||||
break;
|
||||
|
||||
case 8:// Check Data & TX (N)Ack
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (Bytecount <= (Number_of_Bytes-2))
|
||||
// If not last byte
|
||||
{
|
||||
USISRL = 0x00; // Send Ack
|
||||
I2C_State = 6; // Rcv another byte
|
||||
Bytecount++;
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
}
|
||||
else // Last Byte
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
SLV_Addr = 0x90; // Reset slave address
|
||||
I2C_State = 0; // Reset state machine
|
||||
Bytecount =0; // Reset counter for next TX/RX
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case 10: // Send Data byte
|
||||
TX_Data();
|
||||
break;
|
||||
|
||||
case 12:// Receive Data (N)Ack
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack
|
||||
I2C_State = 14; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 14:// Process Data Ack/NAck
|
||||
if (USISRL & 0x01) // If Nack received...
|
||||
{
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
SLV_Addr = 0x90; // Reset slave address
|
||||
I2C_State = 0; // Reset state machine
|
||||
Bytecount = 0;
|
||||
// LPM0_EXIT; // Exit active for next transfer
|
||||
}
|
||||
else // Ack received
|
||||
{
|
||||
P1OUT &= ~0x01; // LED off
|
||||
TX_Data(); // TX next byte
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
USICTL1 &= ~USIIFG; // Clear pending flags
|
||||
}
|
||||
|
||||
void Data_RX(void){
|
||||
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x08; // Bit counter = 8, RX data
|
||||
I2C_State = 8; // next state: Test data and (N)Ack
|
||||
}
|
||||
|
||||
void TX_Data(void){
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
USISRL = SLV_Data++;
|
||||
USICNT |= 0x08; // Bit counter = 8, TX data
|
||||
I2C_State = 12; // Go to next state: receive (N)Ack
|
||||
}
|
||||
|
||||
void Setup_USI_Slave(void){
|
||||
P1OUT = 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1DIR = 0xFF; // Unused pins as outputs
|
||||
P2OUT = 0;
|
||||
P2DIR = 0xFF;
|
||||
|
||||
USICTL0 = USIPE6+USIPE7+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE+USISTTIE; // Enable I2C mode & USI interrupts
|
||||
USICKCTL = USICKPL; // Setup clock polarity
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
|
||||
transmit = 0;
|
||||
__enable_interrupt();
|
||||
|
||||
}
|
||||
|
||||
|
||||
+340
@@ -0,0 +1,340 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - I2C Master Transmitter / Reciever, Repeated Start
|
||||
//
|
||||
// Description: I2C Master communicates with I2C Slave using
|
||||
// the USI. Master data should increment from 0x55 with each transmitted byte
|
||||
// and Master determines the number of bytes transmitted and recieved, set by
|
||||
// the Number_of_TX_Bytes and Number_of_RX_bytes values. These values will
|
||||
// determine how many bytes are Txed then RXed with repeated starts in-between.
|
||||
// LED off for address or data Ack; LED on for address or data NAck.
|
||||
// ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
|
||||
//
|
||||
//
|
||||
// ***THIS IS THE MASTER CODE***
|
||||
//
|
||||
// Slave Master
|
||||
// (msp430x20x3_usi_15.c)
|
||||
// MSP430F20x2/3 MSP430F20x2/3
|
||||
// ----------------- -----------------
|
||||
// /|\| XIN|- /|\| XIN|-
|
||||
// | | | | | |
|
||||
// --|RST XOUT|- --|RST XOUT|-
|
||||
// | | | |
|
||||
// LED <-|P1.0 | | |
|
||||
// | | | P1.0|-> LED
|
||||
// | SDA/P1.7|------->|P1.6/SDA |
|
||||
// | SCL/P1.6|<-------|P1.7/SCL |
|
||||
//
|
||||
// Note: internal pull-ups are used in this example for SDA & SCL
|
||||
//
|
||||
// R. B. Elliott / H. Grewal
|
||||
// Texas Instruments Inc.
|
||||
// March 2008
|
||||
// Built with IAR Embedded Workbench Version: 3.42A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
#define number_of_TX_bytes 2 // How many bytes do you want to TX?
|
||||
#define number_of_RX_bytes 3 // How many bytes do you want to RX?
|
||||
|
||||
void Master_RPT(void);
|
||||
|
||||
void Master_Transmit(void);
|
||||
void Master_Recieve(void);
|
||||
|
||||
void Setup_USI_Master_TX(void);
|
||||
void Setup_USI_Master_RX(void);
|
||||
|
||||
char MST_Data = 0x55; // Variable for transmitted data
|
||||
char SLV_Addr = 0x90;
|
||||
int I2C_State, Bytecount, Transmit, number_of_bytes, repeated_start = 0;
|
||||
void Data_TX (void);
|
||||
void Data_RX (void);
|
||||
int main(void)
|
||||
{
|
||||
volatile unsigned int i; // Use volatile to prevent removal
|
||||
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog
|
||||
if (CALBC1_1MHZ==0xFF) // If calibration constants erased
|
||||
{
|
||||
while(1); // do not load, trap CPU!!
|
||||
}
|
||||
DCOCTL = 0; // Select lowest DCOx and MODx settings
|
||||
BCSCTL1 = CALBC1_1MHZ; // Set DCO
|
||||
DCOCTL = CALDCO_1MHZ;
|
||||
|
||||
P1OUT = 0xC0; // P1.6 & P1.7 Pullups, others to 0
|
||||
P1REN |= 0xC0; // P1.6 & P1.7 Pullups
|
||||
P1DIR = 0xFF; // Unused pins as outputs
|
||||
P2OUT = 0;
|
||||
P2DIR = 0xFF;
|
||||
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
||||
Bytecount = 0;
|
||||
Master_RPT();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************
|
||||
// USI interrupt service routine
|
||||
// Data Transmit : state 0 -> 2 -> 4 -> 10 -> 12 -> 14
|
||||
// Data Recieve : state 0 -> 2 -> 4 -> 6 -> 8 -> 14
|
||||
******************************************************/
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector = USI_VECTOR
|
||||
__interrupt void USI_TXRX (void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(USI_VECTOR))) USI_TXRX (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
switch(__even_in_range(I2C_State,14))
|
||||
{
|
||||
case 0: // Generate Start Condition & send address to slave
|
||||
P1OUT |= 0x01; // LED on: sequence start
|
||||
Bytecount = 0;
|
||||
USISRL = 0x00; // Generate Start Condition...
|
||||
USICTL0 |= USIGE+USIOE;
|
||||
USICTL0 &= ~USIGE;
|
||||
if (Transmit == 1){
|
||||
USISRL = 0x90; // Address is 0x48 << 1 bit + 0 (rw)
|
||||
}
|
||||
if (Transmit == 0){
|
||||
USISRL = 0x91; // 0x91 Address is 0x48 << 1 bit
|
||||
// + 1 for Read
|
||||
}
|
||||
USICNT = (USICNT & 0xE0) + 0x08; // Bit counter = 8, TX Address
|
||||
I2C_State = 2; // next state: rcv address (N)Ack
|
||||
break;
|
||||
|
||||
case 2: // Receive Address Ack/Nack bit
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter=1, receive (N)Ack bit
|
||||
I2C_State = 4; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 4: // Process Address Ack/Nack & handle data TX
|
||||
|
||||
if(Transmit == 1){
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (USISRL & 0x01) // If Nack received...
|
||||
{ // Send stop...
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter=1, SCL high, SDA low
|
||||
I2C_State = 14; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01; // Turn on LED: error
|
||||
}
|
||||
else
|
||||
{ // Ack received, TX data to slave...
|
||||
USISRL = MST_Data++; // Load data byte
|
||||
USICNT |= 0x08; // Bit counter = 8, start TX
|
||||
I2C_State = 10; // next state: receive data (N)Ack
|
||||
Bytecount++;
|
||||
P1OUT &= ~0x01; // Turn off LED
|
||||
break;
|
||||
}
|
||||
} if(Transmit == 0){
|
||||
|
||||
if (USISRL & 0x01) // If Nack received
|
||||
{ // Prep Stop Condition
|
||||
USICTL0 |= USIOE;
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter= 1, SCL high, SDA low
|
||||
I2C_State = 8; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01; // Turn on LED: error
|
||||
}
|
||||
else{ Data_RX();} // Ack received
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case 6: // Send Data Ack/Nack bit
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
if (Bytecount <= number_of_bytes-2)
|
||||
{ // If this is not the last byte
|
||||
USISRL = 0x00; // Send Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
I2C_State = 4; // Go to next state: data/rcv again
|
||||
Bytecount++;
|
||||
}
|
||||
|
||||
else //last byte: send NACK
|
||||
{
|
||||
USISRL = 0xFF; // Send NAck
|
||||
P1OUT |= 0x01; // LED on: end of comm
|
||||
I2C_State = 8; // stop condition
|
||||
}
|
||||
USICNT |= 0x01; // Bit counter = 1, send (N)Ack bit
|
||||
break;
|
||||
|
||||
case 8: // Prep Stop Condition
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
USISRL = 0x00;
|
||||
USICNT |= 0x01; // Bit counter= 1, SCL high, SDA low
|
||||
I2C_State = 14; // Go to next state: generate Stop
|
||||
break;
|
||||
|
||||
case 10: // Receive Data Ack/Nack bit
|
||||
USICTL0 &= ~USIOE; // SDA = input
|
||||
USICNT |= 0x01; // Bit counter = 1, receive (N)Ack bit
|
||||
I2C_State = 12; // Go to next state: check (N)Ack
|
||||
break;
|
||||
|
||||
case 12: // Process Data Ack/Nack & send Stop
|
||||
|
||||
USICTL0 |= USIOE;
|
||||
if (Bytecount == number_of_bytes){// If last byte
|
||||
|
||||
if(repeated_start == 1){
|
||||
|
||||
USISRL = 0xFF; // this will prevent a stop cond
|
||||
USICTL0 |= USIOE; // SDA = output
|
||||
I2C_State = 14; // Go to next state: generate Stop
|
||||
USICNT |= 0x01; } // set count=1 to trigger next state
|
||||
|
||||
else{
|
||||
USISRL = 0x00;
|
||||
|
||||
I2C_State = 14; // Go to next state: generate Stop
|
||||
P1OUT |= 0x01;
|
||||
USICNT |= 0x01; } // set count=1 to trigger next state
|
||||
}else{
|
||||
P1OUT &= ~0x01; // Turn off LED
|
||||
Data_TX(); // TX byte
|
||||
}
|
||||
break;
|
||||
|
||||
case 14:// Generate Stop Condition
|
||||
USISRL = 0x0FF; // USISRL = 1 to release SDA
|
||||
USICTL0 |= USIGE; // Transparent latch enabled
|
||||
USICTL0 &= ~(USIGE+USIOE); // Latch/SDA output disabled
|
||||
I2C_State = 0; // Reset state machine for next xmt
|
||||
LPM0_EXIT; // Exit active for next transfer
|
||||
break;
|
||||
}
|
||||
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
}
|
||||
|
||||
|
||||
void Data_TX (void){
|
||||
|
||||
USISRL = MST_Data++; // Load data byte
|
||||
USICNT |= 0x08; // Bit counter = 8, start TX
|
||||
I2C_State = 10; // next state: receive data (N)Ack
|
||||
Bytecount++;
|
||||
}
|
||||
|
||||
void Data_RX (void){
|
||||
USICTL0 &= ~USIOE; // SDA = input --> redundant
|
||||
USICNT |= 0x08; // Bit counter = 8, RX data
|
||||
I2C_State = 6; // Next state: Test data and (N)Ack
|
||||
P1OUT &= ~0x01; // LED off
|
||||
}
|
||||
|
||||
|
||||
void Setup_USI_Master_TX (void)
|
||||
{
|
||||
__disable_interrupt();
|
||||
Transmit = 1;
|
||||
USICTL0 = USIPE6+USIPE7+USIMST+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE; // Enable I2C mode & USI interrupt
|
||||
USICKCTL = USIDIV_7+USISSEL_2+USICKPL; // USI clk: SCL = SMCLK/128
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
}
|
||||
|
||||
|
||||
void Setup_USI_Master_RX (void)
|
||||
{
|
||||
__disable_interrupt();
|
||||
Transmit = 0;
|
||||
USICTL0 = USIPE6+USIPE7+USIMST+USISWRST; // Port & USI mode setup
|
||||
USICTL1 = USII2C+USIIE; // Enable I2C mode & USI interrupt
|
||||
USICKCTL = USIDIV_7+USISSEL_2+USICKPL; // USI clks: SCL = SMCLK/128
|
||||
USICNT |= USIIFGCC; // Disable automatic clear control
|
||||
USICTL0 &= ~USISWRST; // Enable USI
|
||||
USICTL1 &= ~USIIFG; // Clear pending flag
|
||||
__enable_interrupt();
|
||||
|
||||
}
|
||||
|
||||
void Master_Transmit(void){
|
||||
number_of_bytes = number_of_TX_bytes;
|
||||
Setup_USI_Master_TX();
|
||||
USICTL1 |= USIIFG; // Set flag and start communication
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
}
|
||||
void Master_Recieve(void){
|
||||
number_of_bytes = number_of_RX_bytes;
|
||||
Setup_USI_Master_RX();
|
||||
USICTL1 |= USIIFG; // Set flag and start communication
|
||||
LPM0; // CPU off, await USI interrupt
|
||||
}
|
||||
|
||||
void Master_RPT(void){
|
||||
repeated_start =1;
|
||||
|
||||
Master_Transmit();
|
||||
__no_operation();
|
||||
|
||||
Master_Recieve();
|
||||
__no_operation();
|
||||
|
||||
repeated_start =0;
|
||||
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - WDT, Toggle P1.0, Interval Overflow ISR, DCO SMCLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software timed by the WDT ISR. Toggle rate
|
||||
// is approximately 30ms based on default DCO/SMCLK clock source
|
||||
// used in this example for the WDT.
|
||||
// ACLK = n/a, MCLK = SMCLK = default
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDT_MDLY_32; // Set Watchdog Timer interval to ~30ms
|
||||
IE1 |= WDTIE; // Enable WDT interrupt
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
||||
}
|
||||
|
||||
// Watchdog Timer interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=WDT_VECTOR
|
||||
__interrupt void watchdog_timer(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
}
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - WDT, Toggle P1.0, Interval Overflow ISR, 32kHz ACLK
|
||||
//
|
||||
// Description: Toggle P1.0 using software timed by WDT ISR. Toggle rate is
|
||||
// exactly 250ms based on 32kHz ACLK WDT clock source. In this example the
|
||||
// WDT is configured to divide 32768 watch-crystal(2^15) by 2^13 with an ISR
|
||||
// triggered @ 4Hz.
|
||||
// ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// September 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDT_ADLY_250; // WDT 250ms, ACLK, interval timer
|
||||
IE1 |= WDTIE; // Enable WDT interrupt
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
|
||||
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/interrupt
|
||||
}
|
||||
|
||||
// Watchdog Timer interrupt service routine
|
||||
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
|
||||
#pragma vector=WDT_VECTOR
|
||||
__interrupt void watchdog_timer(void)
|
||||
#elif defined(__GNUC__)
|
||||
void __attribute__ ((interrupt(WDT_VECTOR))) watchdog_timer (void)
|
||||
#else
|
||||
#error Compiler not supported!
|
||||
#endif
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
}
|
||||
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - WDT+ Failsafe Clock, DCO SMCLK
|
||||
//
|
||||
// Description; Allow WDT+ in watchdog to timeout. Toggle P1.0 in main
|
||||
// funnction. LPM4 is entered, this example will demonstrate WDT+ feature
|
||||
// of preventing WDT+ clock to be disabled.
|
||||
// The WDT+ will not allow active WDT+ clock to be disabled by software, the
|
||||
// LED continues to Flash because the WDT times out normally even though
|
||||
// software has attempted to disable WDT+ clock source.
|
||||
// The MSP430F1xx will stop code execution when software disables WDT+ clock
|
||||
// source.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M. Buccini / L. Westlund
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
P1DIR |= 0x01; // Set P1.0 to output
|
||||
P1OUT ^= 0x01; // Toggle P1.0
|
||||
__bis_SR_register(LPM4_bits); // Stop all clocks
|
||||
}
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - Reset on Invalid Address fetch, Toggle P1.0
|
||||
//
|
||||
// Description: Toggle P1.0 by xor'ing P1.0 inside of a software loop that
|
||||
// ends with TAR loaded with 3FFFh - op-code for "jmp $" This simulates a code
|
||||
// error. The MSP430F21x1 will force a reset because it will not allow a fetch
|
||||
// from within the address range of the peripheral memory, as is seen by
|
||||
// return to the mainloop and LED flash.
|
||||
// In contrast, an MSP430F1xx device will "jmp $" stopping code execution with
|
||||
// no LED flash.
|
||||
// ACLK = n/a, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// H. Grewal / M. Buccini
|
||||
// Texas Instruments Inc.
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
|
||||
P1DIR |= 0x01; // Set P1.0 to output direction
|
||||
TAR = 0x3FFF; // Opcode for "jmp $"
|
||||
|
||||
for (;;)
|
||||
{
|
||||
volatile unsigned int i;
|
||||
|
||||
P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR
|
||||
|
||||
i = 50000; // Delay
|
||||
do (i--);
|
||||
while (i != 0);
|
||||
((void (*)())0x170)(); // Invalid fetch ("call #0170h")
|
||||
}
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - WDT+ Failsafe Clock, 32kHz ACLK
|
||||
//
|
||||
// Description; Allow WDT+ in watchdog to timeout sourced by ACLK. LPM3 is
|
||||
// entered, this example will demonstrate WDT+ feature by automatically
|
||||
// re-enabling WDT+ clock source as DCO if external XTAL fails. This can be
|
||||
// seen as a continued, though faster as clocked by DCO, watchdog timeout
|
||||
// which will toggle on P1.0 in main function.
|
||||
// ACLK = 32kHz, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// M.Buccini / L. Westlund
|
||||
// Texas Instruments, Inc
|
||||
// October 2005
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDT_ARST_1000; // Set Watchdog Timer timeout 1s
|
||||
P1DIR |= 0x01; // Set P1.0 to output
|
||||
P1OUT ^= 0x01; // Toggle P1.0
|
||||
__bis_SR_register(LPM3_bits);
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - WDT+ periodic reset
|
||||
//
|
||||
// Description; Various reset intervals are configured in watchdog mode.
|
||||
// To illustrate the speed of the reset time the LED flashes in accordance
|
||||
// of the selected interval.
|
||||
//
|
||||
// ACLK = 32khz, MCLK = SMCLK = default DCO
|
||||
//
|
||||
// MSP430F20xx
|
||||
// -----------------
|
||||
// /|\| XIN|-
|
||||
// | | |
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|-->LED
|
||||
//
|
||||
// R. B. Elliott / H. Grewal
|
||||
// Texas Instruments Inc.
|
||||
// April 2007
|
||||
// Built with IAR Embedded Workbench Version: 3.42A
|
||||
//******************************************************************************
|
||||
|
||||
#include <msp430.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
// WDT is clocked by fSMCLK (1MHz)
|
||||
WDTCTL = WDT_MRST_32; // ~32ms interval (default)
|
||||
//WDTCTL = WDT_MRST_8; // ~8ms
|
||||
//WDTCTL = WDT_MRST_0_5; // ~0.5ms
|
||||
//WDTCTL = WDT_MRST_0_064; // ~0.064ms
|
||||
// WDT is clocked by fACLK (32KHz)
|
||||
//WDTCTL = WDT_ARST_1000; // 1000ms
|
||||
//WDTCTL = WDT_ARST_250; // 250ms
|
||||
//WDTCTL = WDT_ARST_16; // 16ms
|
||||
//WDTCTL = WDT_ARST_1_9; // 1.9ms
|
||||
P1DIR |= 0x01;
|
||||
P1OUT ^=0x01;
|
||||
|
||||
__bis_SR_register(LPM0_bits + GIE); // Enter LPM3 w/interrupt
|
||||
}
|
||||
|
||||
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
/* --COPYRIGHT--,BSD_EX
|
||||
* Copyright (c) 2012, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*******************************************************************************
|
||||
*
|
||||
* MSP430 CODE EXAMPLE DISCLAIMER
|
||||
*
|
||||
* MSP430 code examples are self-contained low-level programs that typically
|
||||
* demonstrate a single peripheral function or device feature in a highly
|
||||
* concise manner. For this the code may rely on the device's power-on default
|
||||
* register values and settings such as the clock configuration and care must
|
||||
* be taken when combining code from several examples to avoid potential side
|
||||
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
|
||||
* for an API functional library-approach to peripheral configuration.
|
||||
*
|
||||
* --/COPYRIGHT--*/
|
||||
//******************************************************************************
|
||||
// MSP430F20xx Demo - DCO Calibration Constants Programmer
|
||||
//
|
||||
// NOTE: THIS CODE REPLACES THE TI FACTORY-PROGRAMMED DCO CALIBRATION
|
||||
// CONSTANTS LOCATED IN INFOA WITH NEW VALUES. USE ONLY IF THE ORIGINAL
|
||||
// CONSTANTS ACCIDENTALLY GOT CORRUPTED OR ERASED.
|
||||
//
|
||||
// Description: This code re-programs the F2xx DCO calibration constants.
|
||||
// A software FLL mechanism is used to set the DCO based on an external
|
||||
// 32kHz reference clock. After each calibration, the values from the
|
||||
// clock system are read out and stored in a temporary variable. The final
|
||||
// frequency the DCO is set to is 1MHz, and this frequency is also used
|
||||
// during Flash programming of the constants. The program end is indicated
|
||||
// by the blinking LED.
|
||||
// ACLK = LFXT1/8 = 32768/8, MCLK = SMCLK = target DCO
|
||||
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
|
||||
//
|
||||
// MSP430F20xx
|
||||
// ---------------
|
||||
// /|\| XIN|-
|
||||
// | | | 32kHz
|
||||
// --|RST XOUT|-
|
||||
// | |
|
||||
// | P1.0|--> LED
|
||||
// | P1.4|--> SMLCK = target DCO
|
||||
//
|
||||
// A. Dannenberg
|
||||
// Texas Instruments Inc.
|
||||
// May 2007
|
||||
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A
|
||||
//******************************************************************************
|
||||
#include <msp430.h>
|
||||
|
||||
#define DELTA_1MHZ 244 // 244 x 4096Hz = 999.4Hz
|
||||
#define DELTA_8MHZ 1953 // 1953 x 4096Hz = 7.99MHz
|
||||
#define DELTA_12MHZ 2930 // 2930 x 4096Hz = 12.00MHz
|
||||
#define DELTA_16MHZ 3906 // 3906 x 4096Hz = 15.99MHz
|
||||
|
||||
unsigned char CAL_DATA[8]; // Temp. storage for constants
|
||||
volatile unsigned int i;
|
||||
int j;
|
||||
char *Flash_ptrA; // Segment A pointer
|
||||
void Set_DCO(unsigned int Delta);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
||||
for (i = 0; i < 0xfffe; i++); // Delay for XTAL stabilization
|
||||
P1OUT = 0x00; // Clear P1 output latches
|
||||
P1SEL = 0x10; // P1.4 SMCLK output
|
||||
P1DIR = 0x11; // P1.0,4 output
|
||||
|
||||
j = 0; // Reset pointer
|
||||
|
||||
Set_DCO(DELTA_16MHZ); // Set DCO and obtain constants
|
||||
CAL_DATA[j++] = DCOCTL;
|
||||
CAL_DATA[j++] = BCSCTL1;
|
||||
|
||||
Set_DCO(DELTA_12MHZ); // Set DCO and obtain constants
|
||||
CAL_DATA[j++] = DCOCTL;
|
||||
CAL_DATA[j++] = BCSCTL1;
|
||||
|
||||
Set_DCO(DELTA_8MHZ); // Set DCO and obtain constants
|
||||
CAL_DATA[j++] = DCOCTL;
|
||||
CAL_DATA[j++] = BCSCTL1;
|
||||
|
||||
Set_DCO(DELTA_1MHZ); // Set DCO and obtain constants
|
||||
CAL_DATA[j++] = DCOCTL;
|
||||
CAL_DATA[j++] = BCSCTL1;
|
||||
|
||||
Flash_ptrA = (char *)0x10C0; // Point to beginning of seg A
|
||||
FCTL2 = FWKEY + FSSEL0 + FN1; // MCLK/3 for Flash Timing Generator
|
||||
FCTL1 = FWKEY + ERASE; // Set Erase bit
|
||||
FCTL3 = FWKEY + LOCKA; // Clear LOCK & LOCKA bits
|
||||
*Flash_ptrA = 0x00; // Dummy write to erase Flash seg A
|
||||
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
|
||||
Flash_ptrA = (char *)0x10F8; // Point to beginning of cal consts
|
||||
for (j = 0; j < 8; j++)
|
||||
*Flash_ptrA++ = CAL_DATA[j]; // re-flash DCO calibration data
|
||||
FCTL1 = FWKEY; // Clear WRT bit
|
||||
FCTL3 = FWKEY + LOCKA + LOCK; // Set LOCK & LOCKA bit
|
||||
|
||||
while (1)
|
||||
{
|
||||
P1OUT ^= 0x01; // Toggle LED
|
||||
for (i = 0; i < 0x4000; i++); // SW Delay
|
||||
}
|
||||
}
|
||||
|
||||
void Set_DCO(unsigned int Delta) // Set DCO to selected frequency
|
||||
{
|
||||
unsigned int Compare, Oldcapture = 0;
|
||||
|
||||
BCSCTL1 |= DIVA_3; // ACLK = LFXT1CLK/8
|
||||
TACCTL0 = CM_1 + CCIS_1 + CAP; // CAP, ACLK
|
||||
TACTL = TASSEL_2 + MC_2 + TACLR; // SMCLK, cont-mode, clear
|
||||
|
||||
while (1)
|
||||
{
|
||||
while (!(CCIFG & TACCTL0)); // Wait until capture occured
|
||||
TACCTL0 &= ~CCIFG; // Capture occured, clear flag
|
||||
Compare = TACCR0; // Get current captured SMCLK
|
||||
Compare = Compare - Oldcapture; // SMCLK difference
|
||||
Oldcapture = TACCR0; // Save current captured SMCLK
|
||||
|
||||
if (Delta == Compare)
|
||||
break; // If equal, leave "while(1)"
|
||||
else if (Delta < Compare)
|
||||
{
|
||||
DCOCTL--; // DCO is too fast, slow it down
|
||||
if (DCOCTL == 0xFF) // Did DCO roll under?
|
||||
if (BCSCTL1 & 0x0f)
|
||||
BCSCTL1--; // Select lower RSEL
|
||||
}
|
||||
else
|
||||
{
|
||||
DCOCTL++; // DCO is too slow, speed it up
|
||||
if (DCOCTL == 0x00) // Did DCO roll over?
|
||||
if ((BCSCTL1 & 0x0f) != 0x0f)
|
||||
BCSCTL1++; // Sel higher RSEL
|
||||
}
|
||||
}
|
||||
TACCTL0 = 0; // Stop TACCR0
|
||||
TACTL = 0; // Stop Timer_A
|
||||
BCSCTL1 &= ~DIVA_3; // ACLK = LFXT1CLK
|
||||
}
|
||||
Reference in New Issue
Block a user