Post on 09-May-2018
transcript
CTK4TIMC Toolkit For (4) MSP430 Texas Instruments Microcontrollers
Festival Latinoamericano de Instalación de Software LibreBogotá, 5 de Mayo de 2012
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura MSP430 Texas Instruments
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
1. QUIENES SOMOS
CTK4TIM es una iniciativa colombiana que nace de la necesidad de la creación de librerías en lenguaje C para el desarrollo de proyectos de tecnología electrónica sobre microcontroladores, eligiendo como plataforma tecnológica los microcontroladores MSP430 de Texas Instruments.
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura MSP430 Texas Instruments
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
OBJETIVOS
Proveer la innovación, la investigación y desarrollo de productos tecnológicos basados en los microcontroladores MSP430 Texas Instruments
Desarrollar un API en lenguaje C para los microcontroladores MSP430 que faciliten el desarrollo de proyectos de electrónica
Aprovechar al máximo los modos de ahorro de energía del microcontrolador para hacer aplicaciones portables con mínimo consumo
Usar al máximo los formatos de documentos abiertos usados en la creación de la documentación del proyecto (.ODT, .ODS, .PNG)
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura MSP430 Texas Instruments
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
MISIÓN Y VISIÓN
Misión
CTK4TIM es un API en lenguaje C para el desarrollo de proyectos sobre los microcontroladores MSP430 de Texas Instruments, dirigido a estudiantes, ingenieros electrónicos, ingenieros mecatrónicos, biomédicos y hobbistas, cuya facilidad de uso facilitará el desarrollo de proyectos de tecnología electrónica
Visión
Ser el API de lenguaje C open source más utilizado en el desarrollo de proyectos de tecnología sobre los microcontroladores MSP430 de Texas Instruments, cuya facilidad de integración permita que personas ajenas a la electrónica puedan desarrollar proyectos de tecnología
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura MSP430 Texas Instruments
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
4. HISTORIA
Junio de 2001: Desarrollo personal de un API en lenguaje assembler para el desarrollo de proyectos sobre los microcontroladores PIC Microchip → MPLAB IDE
Junio de 2005: Desarrollo personal de un API en lenguaje assembler para el desarrollo de proyectos sobre los microcontroladores Freescale → P&E Micro
Abril de 2011: Acercamiento a la programación en lenguaje C sobre los microcontroladores Freescale ctk4fm →CodeWarrior y Subversion. Link ctk4fm
Noviembre de 2011: Acercamiento a la programación en lenguaje C sobre los microcontroladores Atmel → AVR Studio 5 [Visual Studio]
4. HISTORIA
Enero de 2012: Acercamiento a la programación en lenguaje C sobre los microcontroladores MSP430 Texas Instruments ctk4tim → Code Composer Studio (Eclipse) y Git
15 de Febrero de 2012: Creación del repositorio GIT para el almacenamiento del código del API en el servidor gitorius.org
4. HISTORIA
14 de Marzo de 2012: Lanzamiento Oficial del proyecto en el blog, usuario Twitter @ctk4tim y la pagina Facebook www.facebook.com/ctk4tim. Se libera CTK4TIM Versión 1.0.0 Se crea el concepto de Demo Oficial Vigente (D.O.V.) creando la Demo Oficial Vigente 1.0.0 cuya demostración es el uso de las rutinas del módulo LCD y del módulo Piano ejecutando la melodía Fray Santiago
4. HISTORIA
2 de Abril de 2012: Liberación de CTK4TIM Versión 1.1.0 que actualiza los módulos de LCD y RTC para permitir el funcionamiento completo de un reloj de tiempo real. Se crea la Demo Oficial Vigente 1.1.0 que permite ver el funcionamiento completo del RTC en el módulo LCD con dos botones que permiten la configuración de fecha y hora. Migración MSP430G2452 de 20 pines.
4. HISTORIA
4 Abril de 2012: Liberación de CTK4TIM Versión 1.2.0 que adiciona el módulo Motor Paso a Paso para permitir el control de los giros de un motor PAP. Se crea la Demo Oficial Vigente 1.2.0 que adiciona el giro a la izquierda o a la derecha de un motor PAP con el tick del RTC
4. HISTORIA
13 de Abril de 2012: Liberación de CTK4TIM Versión 1.3.0 que adiciona el módulo ADC para permitir conversiones analógas a digitales. Se crea la Demo Oficial Vigente 1.3.0 que adiciona la visualización de una valor analogo controlado por un potenciometro, escalandolo en el rango de 0% a 100%. Adicionalmente se muestra el valor de la temperatura del sensor interno.
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura MSP430 Texas Instrumens
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
Arquitectura MSP430G2452 TI
Arquitectura MSP430G2452 TI
Arquitectura MSP430G2452 TI
Arquitectura MSP430 TI
Arquitectura MSP430 TI
Arquitectura MSP430 TI
Code Composer Studio 5
● IDE basado en Eclipse● Edición Código Assembler o C● Ambiente Construcción Proyectos● Debugger● Simulador● Integración repositorios GIT● Se podria integrar a repositorios subversion con plugins● Etc, etc, etc ...
Arquitectura MSP430 TI
LaunchPad Kit
● Facil de usar● Costo $ 4.30 USD Tarjeta, 2 →Microconcontroladores MSP430 16 pines, cable mini-USB, cristal externo de 32.768KHz● Escalable● Futuras expansiones
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura Microcontroladores MSP430 TI
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
API CTK4TIM
El API del proyecto CTK4TIM esta compuesta por tres (3) grupos: General, Perifericos e Interfaz Externa.
Grupo General
Se agrupan los módulos que permiten el funcionamiento básico del API. Los módulos agrupados son:
Core [8]
Delay [2]
Flash [En Diseño]
Math [1]
API CTK4TIM – CoreModule [8]
void stopWatchdogTimer(); //Stop Watchdog Timer
void configureDCOFrequency1MHz(); // Configure DCO Frequency 1 MHz
void configureDCOFrequency8MHz(); // Configure DCO Frequency 8 MHz
void configureDCOFrequency12MHz(); // Configure DCO Frequency 12 MHz
void configureDCOFrequency16MHz(); // Configure DCO Frequency 16 MHz
void enableInterrupts(); // Enable Interrupts
void disableInterrupts(); // Disable Interrupts
void entryLowPowerMode0(); // Entry Low Power Mode 0
API CTK4TIM – DelayModule [2]
void delayMs(uint delayMs); // Delay Miliseconds
void delayUs(uint delayUs); // Delay Microseconds
API CTK4TIM – MathModule [1]
double mathScaleConversion(double convertValue, double maximumValue); // Math Scale Conversion
API CTK4TIM
Grupo Perifericos
Se agrupan los módulos que interactuan con los perifericos del microcontrolador y que permiten adicionar una funcionalidad utilizando el hardware del chip. Los módulos agrupados son:
ADC [12]
I2C [En Diseño]
IO [20]
RTC [33]
SPI [En Diseño]
Timer [En Diseño]
API CTK4TIM – AdcModule [12]
void adcInit(); // Init ADC Module
void adcOn(); // ADC On
void adcOff(); // ADC Off
void adcEnableInterrupt(); // ADC Enable Interrupt
void adcDisableInterrupt(); // ADC Disable Interrupt
uchar adcIsPendingInterrupt(); // ADC Verify Pending Interrupt
void adcClearPendingInterrupt(); // ADC Clear Pending Interrupt
void adcAnalogInputEnable(uchar adcChannel); // Configure Analog Input Pin
void adcStartConversion(uchar adcChannel); // ADC Start Conversion
uint adcStartWaitConversion(uchar adcChannel); // ADC Start and Wait Conversion
void adcSelectChannel(uchar adcChannel); // Select ADC Channel
double adcGetTemperatureSensor(); // Get Temperature Sensor
API CTK4TIM – IoModule [20]
void pinDigitalOutput(vuchar *portDirection, uchar pinMask); // Configure Digital Output Pin
void pinDigitalInput(vuchar *portDirection, uchar pinMask); // Configure Digital Input Pin
void pinDigitalEnabledPullUp(vuchar *portDirection, uchar pinMask); // Enabled Pull-Up Pin
void pinDigitalEnabledPullDown(vuchar *portDirection, uchar pinMask); // Enabled Pull-Down Pin
void pinDigitalDisabledPullUp(vuchar *portDirection, uchar pinMask); // Disabled Pull-Up Pin
void pinDigitalDisabledPullDown(vuchar *portDirection, uchar pinMask); // Disabled Pull-Down Pin
uchar pinDigitalRead(vuchar *port, uchar pinMask); // Read Digital Pin
void pinDigitalWriteOn(vuchar *port, uchar pinMask); // Write Digital Pin On
void pinDigitalWriteOff(vuchar *port, uchar pinMask); // Write Digital Pin Off
API CTK4TIM – IoModule [20]
void pinDigitalWriteToggle(vuchar *port, uchar pinMask); // Write Digital Toggle Pin
void pinSelectIOFunction(vuchar *port, uchar pinMask); // Select I/O Function Pin
void pinSelectPrimaryFunction(vuchar *port, uchar pinMask); // Select Primary Function Pin
void pinSelectSecondaryFunction(vuchar *port, uchar pinMask); // Select Secondary Function Pin
uchar waitLevelPin(vuchar *port, uchar pinNo, uchar typePulse, uchar typeFlanco, uchar timeOff, uchar timeOn); // Wait Level Pin
void pinDigitalEnableInterrupt(vuchar *port, uchar pinMask); // Enable Pin Interrupt
void pinDigitalDisableInterrupt(vuchar *port, uchar pinMask); // Disable Pin Interrupt
API CTK4TIM – IoModule [20]
void pinDigitalSelectHighLowTransitionInterrupt(vuchar *port, uchar pinMask); // Enable Pin High Low Transition Interrupt
void pinDigitalSelectLowHighTransitionInterrupt(vuchar *port, uchar pinMask); // Enable Pin Low High Transition Interrupt
uint pinDigitalIsPendingInterrupt(vuchar *port, uchar pinMask); // Test Pin Pending Interrupt
void pinDigitalClearPendingInterrupt(vuchar *port, uchar pinMask); // Clear Pin Pending Interrupt
API CTK4TIM – RtcModule [33]
void rtcInit(); // RTC Init
void rtcStart(); // RTC Start
void rtcStop(); // RTC Stop
uint rtcIsRunning(); // RTC Test Running
void rtcUpdateUp(); // RTC Update Up
void rtcUpdateDown(); // RTC Update Down
uint rtcAddSecond(); // Increment One Second
uint rtcSubSecond(); // Decrement One Second
uint rtcAddMinute(); // Increment One Minute
uint rtcSubMinute(); // Decrement One Minute
uint rtcAddHour(); // Increment One Hour
uint rtcSubHour(); // Decrement One Hour
API CTK4TIM – RtcModule [33]
uint rtcAddDay(); // Increment One Day
uint rtcSubDay(); // Decrement One Day
uint rtcAddMonth(); // Increment One Month
uint rtcSubMonth(); // Decrement One Month
uint rtcAddYear(); // Increment One Year
uint rtcSubYear(); // Decrement One Year
uint rtcGetYear(); // RTC Get Year
void rtcSetYear(int setYear); // RTC Set Year
uint rtcGetMonth(); // RTC Get Month
void rtcSetMonth(int setMonth); // RTC Set Month
uint rtcGetDay(); // RTC Get Day
void rtcSetDay(int setDay); // RTC Set Day
API CTK4TIM – RtcModule [33]
uint rtcGetHour(); // RTC Get Hour
void rtcSetHour(int setHour); // RTC Set Hour
uint rtcGetMinute(); // RTC Get Minute
void rtcSetMinute(int setMinute); // RTC Set Minute
uint rtcGetSecond(); // RTC Get Second
void rtcSetSecond(int setSecond); // RTC Set Second
uchar rtgGetDayOfMonth(uint month); // RTC Get Days of Month
void rtcSetDate(uint setDay, uint setMonth, uint setYear); // RTC Set Date
void rtcSetTime(uint hour, uint minute, uint second); // RTC Set Time
API CTK4TIM
Grupo Interfaz Externa
Se agrupan los módulos que interactuan con dispositivos externos al microcontrolador y que permiten adicionar una funcionalidad utilizando hardware externo conectado al chip. Los módulos agrupados:
DAC [En Diseño]
Graphic LCD [En Diseño]
KeyMatrix [En Diseño]
LCD [26]
LedMatrix [En Diseño]
MotorPAP [7]
Piano [3]
API CTK4TIM – LcdModule [26]
void lcdInit(); // Init LCD Module
void lcdData(uchar data); // Send Data LCD Module
void lcdInstru(uchar instru); // Send Instruction LCD Module
void lcdClear(); // Clear LCD Module
void lcdHome(); // Set Home Cursor Position LCD Module
void lcdSetCursor(uchar row, uchar column); // Set Cursor Position LCD Module
void lcdWrite(uchar character); // Write Character LCD Module
void lcdWriteSetPosition(uchar row, uchar column, uchar exportData); // Write Character LCD Module
void lcdWriteMessage(uchar row, uchar column, const uchar message []); // Write Message LCD Module
void lcdCursorBlinkOn(); // Set Cursor Blink On LCD Module
void lcdCursorBlinkOff(); // Set Cursor Blink Off LCD Module
API CTK4TIM – LcdModule [26]
void lcdCursorDisplayOn(); // Set Cursor Display On LCD Module
void lcdCursorDisplayOff(); // Set Cursor Display Off LCD Module
void lcdDisplayOn(); // Set Display On LCD Module
void lcdDisplayOff(); // Set Display On LCD Module
void lcdShiftOff(); // Set Shift Off LCD Module
void lcdShiftLeft(); // Set Shift Left LCD Module
void lcdShiftRight(); // Set Shift Right LCD Module
void lcdDataBinFormat(uchar row, uchar column, uchar dataExport); // Send Data Binary Format LCD Module
void lcdDataHexFormat(uchar row, uchar column, uchar dataExport); // Send Data Hexadecimal Format LCD Module
void lcdDataDecFormatSetPosition(uchar row, uchar column, uint dataExport, uchar quantityDigits); // Send Data Decimal Format LCD Module
API CTK4TIM – LcdModule [26]
void lcdDataDecFormat(uint dataExport, uchar quantityDigits); // Send Data Decimal Format LCD Module
void lcdDataDoubleFormatSetPosition(uchar row, uchar column, double dataExport, uchar quantityDigits, uchar quantityDecimals); // Send Data Double Format LCD Module
void lcdDataDoubleFormat(double dataExport, uchar quantityDigits, uchar quantityDecimals); // Send Data Double Format LCD Module
void lcdDataDateFormat(uchar row, uchar column, uint day, uint month, uint year); // Send Data Date Format LCD Module
void lcdDataTimeFormat(uchar row, uchar column, uint hour, uint minute, uint second); // Send Data Date Format LCD Module
API CTK4TIM – MotorPapModule [7]
void papMotorInit(); // Init PAP Motor Module
uchar papMotorGetState(); // Get PAP Motor State
void papMotorLeftStep(); // PAP Motor Left Step
void papMotorRightStep(); // PAP Motor Right Step
void papMotorMove(); // Move PAP Motor
void papMotorLeftCycles(uchar numberCycles); // PAP Motor Left Cycles
void papMotorRightCycles(uchar numberCycles); // PAP Motor Right Cycles
API CTK4TIM – PianoModule [3]
void pianoInit(); // Init Piano Module
void pianoPlayNote(uint toneValue, ulong timeOn, ulong timeOff); // Piano Play Note
void pianoPlaySong(const uint tonesSong [], ulong timeOn, ulong timeOff); // Piano Play Song
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura Microcontroladores MSP430 TI
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
Proyectos Realizados CTK4TIM
Para verificar el crecimiento del API, se creo el concepto de Demo Oficial Vigente que es un proyecto estandar donde se demuestra las nuevas caracteristicas adicionadas. Actualmente se han desarrollado una demo oficial por cada versión liberada.
1. Demo Oficial Vigente Versión 1.0.0
Microcontrolador: MSP430G2111 de 14 pines
Dispositivos Externos: Módulo LCD 16 x 2
Funcionalidad: Demostrar el funcionamiento de los módulos LCD y Piano.
http://ctk4tim.wordpress.com/proyectos-2/demo-oficial-version-1-0-0/
Proyectos Realizados CTK4TIM
2. Demo Oficial Vigente Versión 1.1.0
Microcontrolador: MSP430G2452 de 20 pines
Dispositivos Externos: Módulo LCD 16 x 2, Cristal de 32KHz
Funcionalidad: Demostrar el funcionamiento de los módulos RTC, LCD y Pines por Interrupción.
http://ctk4tim.wordpress.com/proyectos-2/demo-oficial-version-1-1-0/
Proyectos Realizados CTK4TIM
3. Demo Oficial Vigente Versión 1.2.0
Microcontrolador: MSP430G2452 de 20 pines
Dispositivos Externos: Módulo LCD 16 x 2, Cristal de 32KHz, Motor PAP
Funcionalidad: Demostrar el funcionamiento del módulo Motor Paso a Paso
http://ctk4tim.wordpress.com/proyectos-2/demo-oficial-version-1-2-0/
Proyectos Realizados CTK4TIM
4. Demo Oficial Vigente Versión 1.3.0
Microcontrolador: MSP430G2452 de 20 pines
Dispositivos Externos: Módulo LCD 16 x 2, Cristal de 32KHz, Motor PAP, Potenciometro
Funcionalidad: Demostrar el funcionamiento del módulo ADC
http://ctk4tim.wordpress.com/proyectos-2/demo-oficial-version-1-3-0/
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura Microcontroladores MSP430 TI
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
Tutorial Principiantes CTK4TIM
Para facilitar la asimilación del uso del API, se creo en el blog un tutorial paso a paso donde se detalla los pasos para la descarga del IDE y la compilación del proyecto CTK4TIM para iniciar los desarrollos.
Este tutorial se puede acceder en línea en el blog oficial a través del menú Tutoriales Primeros Pasos→ o a través del siguiente enlace:
http://ctk4tim.wordpress.com/tutoriales/primerospasos/
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura Microcontroladores MSP430 TI
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
Roles CTK4TIM
El objetivo de crear roles en CTK4TIM, es que cada persona de la comunidad tenga claro las tareas y fuciones del papel que desempeña, de tal forma que se tenga plena certeza de lo que puede y no puede hacer. A continuación se exponen los roles propuestos:
● Diseñador: Diseña el prototipado de las funciones, los parametros de las mismas y la cohesion con los diferentes modulos
● Programador: Realiza la programación en lenguaje C de las funciones que el diseñador haya planteado
● Documentador: Realiza la documentación de las funciones desarrolladas con el objeto de tener la API completamente actualizado con el código
Roles CTK4TIM
● Tester: Encargado de realizar las pruebas sobre la Demo Oficial vigente, para verificar si cumple con la funcionalidad propuesta
● Webmaster: Administrador del Blog, usuario Twitter y pagina Facebook
● Usuario: Utiliza el API para el desarrollo de sus proyectos e informa al Grupo de Desarrollo de errores o mejoras que haya encontrado
Actualmente se requieren con urgencia:
● Personas expertas en GIT
● Documentadores [doxigen, Aplicación Android]
● Usuarios registrados
● Tester
Metodología Trabajo CTK4TIM
El objetivo de crear una metodología, es definir los procesos por los cuales se estandariza el crecimiento del API de manera que todos puedar participar y aportar desde su rol respectivo, sin afectar el rendimiento y la estabilidad de la versión liberada en producción. A continuación se expone los pasos propuestos para crecer y mejorar CTK4TIM:
1. Definir una nueva Demo Oficial Target (D.O.T.)
2. Reunión para realizar el diseño de nuevos requerimientos del D.O.T.
3. Realización del cronograma de actividades
4. Adjudicación de desarrollos a integrantes del grupo
5. Creación en el repositorio de un branch de desarrollo para la nueva versión
Metodología Trabajo CTK4TIM
6. Ejecucción de desarrollos
7. Realización de pruebas unitarias
8. Integración de fuentes desarrollados al branch de desarrol lo
9. Realización de pruebas integrales sobre el diseño del D.O.T.
10.Solución de bugs encontrados en pruebas integrales
11.Integración del branch de desarrollo al branch master
12.Liberación de la nueva versión al publico
13.Generación de Tag sobre el branch master para resaltar nueva versión
AGENDA
1. Quienes somos
2. Objetivos
3. Misión y Visión
4. Historia
5. Arquitectura Microcontroladores MSP430 TI
6. API CTK4TIM
7. Proyectos Realizados CTK4TIM
8. Tutorial Principiantes CTK4TIM
9. Roles y Metodología de Trabajo CTK4TIM
10.Conclusiones
Conclusiones
Facilitar el desarrollo rápido de proyectos de tecnología electrónica basados en los microcontroladores MSP430 TI
Fomentar el desarrollo de tecnología portátil de bajo consumo ofrecida por los microcontroladores MSP430 TI
Fomentar el crecimiento del proyecto apalancándose en el desarrollo del API con licencia software libre GPL3
Fomentar el aprendizaje colectivo y la colaboración para mejorar las características del API que faciliten el desarrollo de proyectos de alta tecnología con mínimo esfuerzo
Aprovechar los espacios de software y hardware libre para dar a conocer la iniciativa, para que más personas se unan a la comunidad y ayuden al crecimiento y uso del API
Contactenos
Wordpress: http://ctk4tim.wordpress.com
Correo Electrónico: ctk4tim@gmail.com
Twitter: @ctk4tim
Facebook: www.facebook.com/ctk4tim
Vimeo: http://vimeo.com/user10782056