Pages

eZ430-RF2500 Development Tool use ADC10 to perform a single temperature sample on channel

 Summary: Using the eZ430-RF2500 Development Tool use ADC10 to perform a single temperature sample on channel A10 (on-chip temperature sensor) each minute during 1 hour.

  SAR ADC10 conversion

Introduction

This laboratory gives examples of the uses of the ADC types available in the hardware development kits. A different laboratory is developed for each kit, taking into account that both the ADC10 and the SD16_A laboratories implement a temperature data logger. The ADC12 laboratory also uses operational amplifiers to perform the analogue signal conditioning.

Overview

This laboratory ( Lab1_ADC.c) implements a temperature data logger using the hardware kit’s integrated temperature sensor. The device is configured to perform an acquisition each minute for one hour. Each temperature’s (ºC) value is transferred to flash info memory segment B and C. When the microcontroller is not performing any task, it enters into low power mode.

Resources

The ADC10 module uses VREF+ = 1.5 V as the reference voltage.
It is necessary to configure the ADC10 to use the integrated temperature sensor (A10) as an input. Timer_A generates an interrupt once every second that starts conversion in the ADC10. At the end of a conversion, an interrupt is requested by the converter and the temperature value is written to flash memory.
The voltage value is converted into temperature following the equation provided in ADC10 section of the MSP430 User’s Guide <slau144e.pdf>. After transferring the value to the flash memory, the system returns to low power mode LPM3.
The resources used by the application are:
- ADC10;
- Timer_A;
- Ports I/O;
- Interrupts;
- Low power mode.

Software application organization

The application starts by stopping the Watchdog Timer.
The system checks for calibration constants on info memory segment A. The CPU execution will be trapped if it does not find this information.
Digitally controller oscillator (DCO) is set to 1 MHz, providing clock source for MCLK and SMCLK, while the Basic Clock System+ is configured to set ACLK to 1.5 kHz.
Controller’s flash timing is obtained from MCLK divided by three to comply with the device specifications.
Port P1.0 is configured as an output and will blink the once LED every second.
The ADC10 is configured to use the input channel corresponding to the on-chip temperature sensor (channel A10). The configuration includes the activation of the internal reference voltage VREF+ = 1.5 V and the selection of ADC10OSC as clock signal. The converter is configured to perform a single-channel single-conversion. At the end of conversion, an interrupt is requested.
The Timer_A is configured to generate an interrupt once every second. ACLK/8 is selected as the clock signal using the VLOCLK as clock source and will count until the TACCR0 value is reached (in up mode). The system then enters into low power mode and waits for an interrupt.
Flash memory pointers and interrupt counters are initialized. The Timer_A ISR increments the variable counter and when this variable reaches the value 60 (1 minute), the software start of conversion is requested. At the end of this ISR, the system returns to low power mode.
When the ADC10 ends the conversion, an interrupt is requested. While variable min is lower than 60, the temperature is written to flash memory. The memory pointer is increased by two (word). When min = 60, the system stops operation.

System configuration

DCO configuration

Adjust the DCO frequency to 1 MHz by software using the calibrated DCOCTL and BCSCTL1 register settings stored in information memory segment A.
if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)
    {
      while(1); // If calibration constants erased
      // do not load, trap CPU!!
    }
    
DCOCTL = CALDCO_1MHZ; // Set DCO to 1 MHz
    

Basic Clock module+ configuration

Set MCLK and SMCLK to 1 MHz. Use the internal very low power VLOCLK source clock to ACLK/8 clock signal as low frequency oscillator (12 kHz):
BCSCTL1 = DIVA_3; // ACLK = 1.5 kHz
BCSCTL3 = LFXT1S_2; // Set VLOCLK (12 kHz)
    

ADC10 configuration

The ADC10’s input channel is the integrated temperature sensor (A10) and it uses the signal VREF+ (1.5 V) as reference voltage. The ADC10 clock source is ADC10OSC, the clock signal being ADC10CLK/4. Configure the ADC10 sample-and-hold time: 64xADC10CLKs, to perform a single-channel single-conversion and enable its interrupts. What are the values to write to the configuration registers?
ADC10CTL1 = INCH_10 + ADC10DIV_3; // Temp Sensor (A10),
// ADC10CLK/4,
// clock source: ADC10OSC
ADC10CTL0=SREF_1 + ADC10SHT_3 + REFON + ADC10ON +ADC10IE;
// Internal reference voltage Vref+ = 1.5 V
// ADC10 sample-and-hold time: 64 x ADC10CLKs
// Reference-generator voltage = 1.5 V
// ADC10 on + ADC10 interrupt enable
    
//*********************************************************
// ADC10 Interrupt Service Routine
//*********************************************************
#pragma vector=ADC10_VECTOR
__interrupt void ADC10ISR(void)
{
  unsigned int temperature;
    
if (min <= 60)
    {
      temperature = ((ADC10MEM - 673) * 423) / 1024; 
      write_int_flash(memo_ptr,temperature);
      memo_ptr += 2;
    } 
    else
    {
      _NOP();
    } 
}
    

Timer_A configuration

Configure Timer_A register to enable an interrupt once every second. Use the ACLK clock signal as the clock source. This timer is configured in up counter mode in order to count until the TAR value reaches the TACCR0 value.
TACCTL0 = CCIE; // TACCR0 interrupt enabled
TACCR0 = 1500; // this count corresponds to 1 sec
TACTL = TASSEL_1 | MC_1 | ID_0;// ACLK, up mode to TACCR0
    
//**********************************************************
// Timer_A Interrupt Service Routine
//**********************************************************
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0_ISR (void)
{
    counter++;
    P1OUT ^= 0x01; // LED toogle
    
    if (counter == 60)
    {
      min++;
      counter = 0;
      ADC10CTL0 |= ENC + ADC10SC; // Sampling/Conversion start
    } 
}
    

Analysis of operation

After compiling the project, start the debug session and before running the application, put a breakpoint at the line of code with the _NOP() instruction. Go to breakpoint properties and set action to Write data to file. Name the file asTemp.dat and define the data format as integer. The data starts at address 0x01040, with a length of 3C. Run the application and let the temperature data logger acquire the values for 1 hour. Use a heater or a fan to force temperature variations during the measurement period. When execution reaches the breakpoint, the file will be available in your file system. Construct a graph in Excel or a similar tool, in order to plot the temperature variation obtained by the data logger.
This example and many others are available on the MSP430 Teaching ROM.
Request this ROM, and our other Teaching Materials here https://www-a.ti.com/apps/dspuniv/teaching_rom_request.asp

0 comments:

Post a Comment

Share your knowledge

Related Posts Plugin for WordPress, Blogger...

Popular Projects

program for Dual DAC 8051 Microcontroller Based DC Motor Control A Microcontroller Based Turbidity Meter A m -Controller Based Thermostat ASCII to BCD conversion in 8051 AT90LS8515 Digital Message Machine Audio Frequency Response Analyzer Audio Homing Robot Automated Juice Mixer Automated Pet Feeder Autonomous Car Autonomous Parallel Parking RC Car Autonomous Search Robot Autonomous Tank Autonomous Vehicle Contrast Following Rover Autonomous navigating robot BCD number to ASCII in 8051 Balance Bot Blind Bot Blood Pressure Monitor Bloodshed Dev-C++ 5 Compiler/IDE Breath Alcohol Tester Converters on TI MSP430 CrossStudio MSP430 IDE Design of a Real-Time Digital Guitar Tuner Digital Oscilloscope Digital Stethoscope Digital clock project using PIC16C54A microcontroller Digital thermometer ECG monitoring system GPS Data Logger with Wireless Trigger Handwriting Recognition Systm Home Security System Home energy managment IAR Embedded Workbench IDE INFRARED TRACKING SYSTEM IntelliBOT Laser Communications System Line following van MSP-EXP430FG4618 Development Tool and the eZ430 kits MSP430FG4618 device implement a Buzzer tone generator MSP430FG4618 device implement a Real Time Clock MSP430FG4618 device implement a voltage ramp generator MSP430FG4618 device present a message on the LCD Basic Microcontroller(8051) Lab Mivo- RFID based mobile payment system Multi-Zone Fire Alarm System PC based temperature control PIC 16f877 RPM Meter PIC16C54 dual dice electronic project circuit PIC16F84A digital thermometer microcontroller project PIC16F886 horn driver PWM motor contoller with MSP430 Program Block data transfer in 8051 Program to add two BCD numbers in 8051 Program to check whether a 4th bit of a byte is 1 Program to convert ASCII to hex in 8051 Program to count from 0-9 in 8051 Program to count number of 1's in a given data byte in 8051 Program to divide an 8 bit no by another 8 bit number in 8051 Program to find largest of n numbers in 8051 Program to find the LCM of two numbers in 8051 Program to find the square of an 8 bit number in 8051 Program to generate 50msec delay in 8051 Program to implement BCD counter to count from 0-99 in 8051 Program to implement BCD counter to count from 99-0 in 8051 Program to interchange two blocks of data in 8051 Program to multiply 16 bit number by 8 bit number in 8051 Program to search an element in an array in 8051 Program to sort an array of 10 elements in 8051 Programming the ez430 Proximity Security System RAMP wave in 8051 RC Car Controller RObo Dog Radio-controlled Truck Retina color tracker Robotic Arm Controller with GUI Robotic Car Traction Control Safety-sensor vehicle Security Entrance System Self-Powered Solar Data Logger Snake Arm Ultrasonic Positioning Control System Store FFh if 1 Super Train Controller TI MSP430 Microcontrollers Timers on the MSP430 TouchPad Drawing Board Ultra-Sonic Parking Assistant Ultrasonic Parking Controller Ultrasonic Range finder Voice Activated Alarm Clock Voice Recognition Robotic Car Voting Machine Weather Station Web-Monitored Thermostat Wireless Drawing Device Wireless Telemetry Wireless message Communicator Write a C program to display the code of the key pressed in 8051 Zigbee Wireless Relay Control and Power Monitoring System add two multibyte numbers in 8051 convert a decimal number to hex number in 8051 convert an 8bit Hex number to decimal number in 8051 convert hex number to ASCII number in 8051 eZ430-F2013 Development Tool use SD16_A ADC eZ430-RF2500 Development Tool use ADC10 else store 00 in the same location in 8051 find the GCF of two numbers in 8051 find the average of 10 numbers in 8051 generate Fibonacci series in 8051 metal detector project microcontroller using IAR Embedded Workbench program for Elevator Interface in 8051 program for Stepper motor interface in 8051 spectrum analyser square wave in 8051 triangle wave in 8051 voice recognition security system

Sites U missed

Hint

Open Pictures in new page by right click on it, if it is not shown full image.