Other Parts Discussed in Thread: MSP430F2132
Hello!
I have this firmware simulating in the Proteus 8.6 software with the MSP430F2132 card, it is working perfectly the PWM and ADC, however I need to use the MSP430G2553 card and I am not getting pwm signal output results. Could someone guide me on what to do to get the same firmware for the MSP430G2553?
Thank you!
/*******************************************************************************
* FACIT *
* Sistemas Embarcados *
********************************************************************************
* VERSÃO:1.0 *
* DATA:06/06/2018 *
*******************************************************************************/
/*******************************************************************************
* DESCRIÇÃO GERAL DO FIRMWARE *
*******************************************************************************/
/*
*/
/*==============================================================================
1. ARQUIVOS DE DEFINIÇÕES (INCLUDES)
==============================================================================*/
//#include "msp430F2132.h" // Biblicota domicrocontrolador MSP430F2132
#include "msp430g2553.h"
#include <intrinsics.h>
int valor=80;
/*==============================================================================
2. DECLARAÇÕES
==============================================================================*/
void configura_pwm(void);
void configura_DCO(void);
/*==============================================================================
3. PROTOTIPAGEM DE FUNÇÕES
==============================================================================*/
void configura_adc(void);
void configura_DCO(void);
/*==============================================================================
5. FUNÇÃO PRINCIPAL
==============================================================================*/
int main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Desativa o watchdog timer
P1DIR |= 0xFF; // Configura P1 como Saída
P1SEL |= BIT3; // Função alternativa para P1.2(TA1) e P1.3(TA2)
configura_pwm();
// Configurações
WDTCTL = WDTPW + WDTHOLD; // Desativa o watchdog timer
configura_DCO();
// Configuração das portas
P1DIR = 0xFF; // Configura todos os bits como saída
P1OUT = 0x00; // Limpa a saída
valor=ADC10MEM;
configura_adc();
valor=ADC10MEM;
for (;;)
{
valor=ADC10MEM;
ADC10CTL0 |= ENC + ADC10SC; // Inicia amostragem e conversão
__bis_SR_register(CPUOFF + GIE); // Coloca no modo LPM0 e habilita
// interrupção geral
CCR1 = (512-valor);
}}
/*==============================================================================
6. FUNÇÃO DO USUÁRIO
==============================================================================*/
void configura_adc()
{
ADC10CTL1 = INCH_1 + ADC10DIV_3 ; // Channel 3, ADC10CLK/3
ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE; // Vcc & Vss as reference, Sample and hold for 64 Clock cycles, ADC on, ADC interrupt enable
ADC10AE0 |= BIT3;
}
void configura_pwm()
{
CCR0 = 512; // Período do PWM (contagem do TAR)512
CCTL1 = OUTMOD_7; // Modo de operação 7 Reset/set
CCR1 = valor; // Duty cycle (ciclo ativo = 75%)384
CCTL2 = OUTMOD_7; // Modo de operação 7 Reset/set
CCR2 = 50; // Duty cycle (ciclo ativo = 25%)128
TACTL = TASSEL_2 + MC_1 + ID_2 ; // Fonte de clock SMCLK, Modo de contagem crescente
}
// Rotina de Tratamento de interrupção ISR do ADC10
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
__bic_SR_register_on_exit(CPUOFF); // Retira a CPU do modo LPM0
}
// Calibrando a frequência do DCO
void configura_DCO(void)
{
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
{
while(1); // Se constantes de calibração apagadas
// aguardar CPU!!
}
// 1Mhz
BCSCTL1 = CALBC1_1MHZ; // Configura intervalo
DCOCTL = CALDCO_1MHZ; // Configura DCO + modulação */
}
/*==============================================================================
FIM DO ARQUIVO
==============================================================================*/
Result with MSP430F2132
Result with MSP430g2553

