Siguiendo con algunos ejemplos con el MSP430F5529 y usando CCS, toca el turno de usar el ADC12_A con el que cuenta este MCU, el cual tiene una resolución de 12 bits, en esta ocasión usaremos el ejemplo llamado "MSP430F55xx_adc_01" incluido en la carpeta MSP430F552x Code Examples.
¿Que hace este ejemplo? Básicamente configura para leer el voltaje por el puerto A0 y atenderlo mediante una interrupción (el sistema se encuentra en LowPowerMode hasta que la interrupción lo saca de ahí), cuando el voltaje en A0 es mayor a 0.5*AVcc (considerando que AVcc esta conectado a VCC, el valor debería de ser de unos 3.3V aproximadamente, yo lo he medido con mi multimetro y andaba en los 3.5V) encenderá LED1, caso contrario permanecerá apagado.
Circuito:
Ahora considerando que se esta usando la Experemental Board de TI, y revisando el esquematico, notaremos que el pin A0 esta conectado a DB0 (un Touch Pad de los 5 que trae la tarjeta) lo cual no servirá para demostrar este ejemplo, por lo tanto he decidido usar el potenciometro que trae la tarjeta, este esta conectado a A5 (como se muestra en la siguiente imagen) pero para que funcione correctamente debemos activar P1.8 y dejar puesto el jumper JP2.
Código:
Considerando estas modificaciones el código queda de la siguiente forma:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************************* | |
* | |
* MSP-EXP430F5529_002: Ejemplo básico del ADC_12 | |
* | |
******************************************************************************* | |
* FileName: main.c | |
* Processor: MSP430F5529 | |
* Complier: CCS 7.2.0.00013 | |
* Author: Pedro Sánchez Ramírez (MrChunckuee) | |
* Blog: http://mrchunckuee.blogspot.com/ | |
* Email: mrchunckuee.psr@gmail.com | |
* Description: ADC12, Sample A5, Set P1.0 if A5 > 0.5*AVcc | |
******************************************************************************* | |
* Rev. Date Comment | |
* v0.01 30/08/2017 - Testing using MSP-EXP430f5529 USB Experimental Board | |
* - Se usó el potenciómetro en A5, para ello se habilito | |
* y se puso en alto a P8.0 | |
******************************************************************************/ | |
#include <msp430.h> | |
int main(void) | |
{ | |
WDTCTL = WDTPW + WDTHOLD; // Stop WDT | |
ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 on | |
ADC12CTL1 = ADC12SHP; // Use sampling timer | |
ADC12MCTL0 = ADC12INCH_5; // Use A5 (wheel) as input | |
ADC12IE = 0x01; // Enable interrupt | |
ADC12CTL0 |= ADC12ENC; // Enable conversions | |
P6SEL |= BIT5; // P6.5 ADC option select (A5) | |
P1DIR |= BIT0; // P1.0 output | |
P8DIR |= BIT0; // P8.0 output | |
P8OUT |= BIT0; // Set P8.0 high | |
while (1) | |
{ | |
ADC12CTL0 |= ADC12SC; // Start sampling/conversion | |
__bis_SR_register(LPM0_bits + GIE); // LPM0, ADC12_ISR will force exit | |
__no_operation(); // For debugger | |
} | |
} | |
#pragma vector = ADC12_VECTOR | |
__interrupt void ADC12_ISR(void) | |
{ | |
switch(__even_in_range(ADC12IV,34)) | |
{ | |
case 0: break; // Vector 0: No interrupt | |
case 2: break; // Vector 2: ADC overflow | |
case 4: break; // Vector 4: ADC timing overflow | |
case 6: // Vector 6: ADC12IFG0 | |
if (ADC12MEM0 >= 0x7ff) // ADC12MEM = A5 > 0.5AVcc? | |
P1OUT |= BIT0; // P1.0 = 1 | |
else | |
P1OUT &= ~BIT0; // P1.0 = 0 | |
__bic_SR_register_on_exit(LPM0_bits); // Exit active CPU | |
case 8: break; // Vector 8: ADC12IFG1 | |
case 10: break; // Vector 10: ADC12IFG2 | |
case 12: break; // Vector 12: ADC12IFG3 | |
case 14: break; // Vector 14: ADC12IFG4 | |
case 16: break; // Vector 16: ADC12IFG5 | |
case 18: break; // Vector 18: ADC12IFG6 | |
case 20: break; // Vector 20: ADC12IFG7 | |
case 22: break; // Vector 22: ADC12IFG8 | |
case 24: break; // Vector 24: ADC12IFG9 | |
case 26: break; // Vector 26: ADC12IFG10 | |
case 28: break; // Vector 28: ADC12IFG11 | |
case 30: break; // Vector 30: ADC12IFG12 | |
case 32: break; // Vector 32: ADC12IFG13 | |
case 34: break; // Vector 34: ADC12IFG14 | |
default: break; | |
} | |
} |
Vídeo
Aquí un pequeño vídeo con la tarjeta funcionando:
Aquí un pequeño vídeo con la tarjeta funcionando:
Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.
Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.
Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.
Bibliografía:
- Texas Instruments, "MSP430F552x Code Examples", http://www.ti.com/lit/zip/slac300
- TI E2E Community, http://e2e.ti.com/
- Texas Intruments, "MSP430F5529 USB Experimenter’s Board", http://www.ti.com/tool/msp-exp430f5529
- Texas Instruments, 2016, "MSP430x5xx and MSP430x6xx Family", http://www.ti.com/lit/ug/slau208p/slau208p.pdf
- Texas Instrumetns, 2015, "MSP430F552x, MSP430F551x Mixed-Signal Microcontrollers", http://www.ti.com/lit/ds/symlink/msp430f5529.pdf
0 Comentarios