Ir ao conteúdo
  • Cadastre-se

Usar o Comando AT para GSM?


pussateli

Posts recomendados

Boa noite a todos!

Estou tentando enviar os comandos AT usando o Mikroc porém sem sucesso. Já testei de todas as formas possíveis e não estou conseguindo ter sucesso..Alguém poderia me ajudar??

A intenção do projeto é movimentar uma mão mecânica através de mensagem de celular, em cada dedo tem um servo motor e desse servo vão vir pulsos de PWM para fazer a movimentação do servo. Toda a estrutura da programação já esta feita , só preciso inserir na programação o Comando AT ( esse comando é próprio pra comunicação GSM) . Sei de alguns comandos que eu preciso para fazer essa comunicação, porém não consigo colocar na programação... Se alguém puder me ajudar..ficarei muito grata..!

Informações:

Pic que estou usando é o 4431 e o modem GSM é o SIM900 da SIMCOM.

Desde já Muito Obrigada ;)

Att,

Nicoly.

Abaixo segue o código feito até então.


// VARIAVEIS GLOBAIS
unsigned char Texto[50];
unsigned char *Ponteiro_Texto;
unsigned char ucInicial = 0;
float d1,d2,d3,d4;

// Prototipos de função.
void Executa_Comando();

/*********************** CONFIGURAÇÃO DOS PERIFERICOS DO PWM EXTERNOS ********/

void configura_perifericos()
{
osccon=0X72;
trisa=0XFF;
ansel0= 0X00;

PTCON0= 0X04;
PTCON1=0X80;
PWMCON0=0X5F; //esta configurando pwm impares
PWMCON1=0X00;
OVDCOND=0XFF;
PTPERL=1501;
PTPERH=1501>>8;
}
void ajusta_dc(float dc1,float dc2,float dc3, float dc4)
{
PDC0L=((int)(1501*dc1))<<2;
PDC0H=((int)(1501*dc1))>>6;

PDC1L=((int)(1501*dc2))<<2;
PDC1H=((int)(1501*dc2))>>6;

PDC2L=((int)(1501*dc3))<<2;
PDC2H=((int)(1501*dc3))>>6;

PDC3L=((int)(1501*dc4))<<2;
PDC3H=((int)(1501*dc4))>>6;

}

// Rotina de Tratamento de Interrupção
void interrupt(){
unsigned char ucRecebe;
if(PIR1.RCIF==1){
ucRecebe = UART1_Read(); // Lê dado
if (ucRecebe == '['){ // Caractere inicializador
ucInicial = 1; // Indica inicialização do protocolo
Ponteiro_Texto = &Texto; // Reinicializa ponteiro
}else if (ucInicial == 1){ // Se chegou inicializador
*Ponteiro_Texto = ucRecebe; // Recebe Dado
Ponteiro_Texto++; // Incrementa ponteiro
}

if (ucRecebe == ']'){ // Recebeu finalizador
Executa_Comando(); // Executa comando
ucInicial = 0; // Aguarda novo inicializador
}
PIR1.RCIF = 0; // Zera Flag da interrupção do recebimento serial
}
}

void main() {
TRISD = 0; // Inicializa o PORTD como Saida
PORTD = 0; // Zera PORTD
TRISB = 0; // Inicializa o PORTB como Saida
PORTB = 0; // Zera PORTB
TRISC = 0b00000000; // Inicializa o PORTC como Saida
PORTC = 0b00000000; // Zera PORTC
CCP1CON=0b00001100; //PWM mode
T2CON=0b00000110; //timer2 on, prescaler 16

INTCON=0X00; // ZEROU
//PIE1=0x00;
//PIE2=0x00;
//PIE3=0x00;

PIR1=0X00;
PIR2=0X00;
PIR3=0X00;

ADCON1 = 0X0F; // TUDO COMO DIGITAL
UART1_Init(9600); // Inicializa UART a 9600bps.

PIR1.RCIF = 0; // Limpa Flag da interrupção de recebimento serial
PIE1.RCIE = 1; // Habilita interrupção de recebimento serial
PIR1.RCIP = 1; // Seta interrupção de alta prioridade do recebimento serial

RCON.IPEN = 1; // Seleciona o modo de 2 niveis de interrupção
INTCON.GIE = 1; // Habilita as interrupções de alta prioridade
INTCON.GIEL = 1; // Habilita as interrupções de baixa prioridade
configura_perifericos();

while(1);
}

void Executa_Comando()
{
if ((Texto[0] == 'P') && (Texto[1] == 'W')&& (Texto[2] == 'M'))
{
if (Texto[3] == '1')
{
switch (Texto[4])
{
case 'A':
d1=0.8;
d2=0.8;
d3=0.8;
d4=0.8;
break;
case 'F':
d4=0;
d3=0;
d2=0;
d1=0;
break;
case 'P':
d4=0;
d3=0;
d2=1;
d1=1;
break;
case 'Q':
d4=0;
d3=0;
d2=0.5;
d1=0.3;
break;
default :
PORTD = 0;
break;
}
}

}
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!