Mais 1: 12F629... entra em sleep?!

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Mais 1: 12F629... entra em sleep?!

Mensagempor Fernando » 15 Fev 2009 22:46

Ja programo em C e uso o 8051.... como precisei de um mc mais "integrado" parti pro pic12f...
Bom to usando o ccs e depois de apanhar um monte do compilador consegui fazer um codigo sem erros, mas quando simulo no Pic simulador IDE ele roda 46us e depois entra em sleep... já revirei o programa mas não sei oq pode estar errado...
To querendo apertar 1 botão na GP2 e fazer um motor de passo ir pra m lado, apertar em GP3 e ir pro outro... vou usar os pinos GP0,1,4 e 5 como a saída pro driver que controla o motor de passo bipolar.
Sugestões são bem vindas.. estou aprendendo...
[]s

Segue o código...

#include <12F629.h>

#fuses INTRC_IO,NOWDT,NOPROTECT, BROWNOUT, PUT, NOCPD, NOMCLR
#use delay(clock=4000000)
#rom 0x3ff = { 0x34b4 } // ajusta valor clock

#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5

#BYTE port_a = 6 // pra que serve isso?!


BYTE const PASSOS [4]= {0b101100, // definicao dos passos do motor, ja incluindo
0b001110, // os bits de GP2 e GP3
0b011100,
0b101100};


void main (void)
{
static BYTE passo = 0; // variavel q armazena o ultimo valor do passo dado
port_a_pullups ( false ); // desliga pullups
set_tris_a (0x24); // faz GP2 e GP3 como entradas

#asm
movlw 0x7; // desliga comparador
movwf CMCON
#endasm

disable_interrupts ( GLOBAL ); // desliga todas as ints

while ( !GP3 ) // precionado botao
{
port_a = PASSOS [passo]; // coloca valor passo no port G
delay_ms (200); // aguarda 200 ms
passo++; // incrementa passo
if (passo=5) // volta a sequencia do passo
passo=0;
}

while ( !GP2 )
{
port_a = PASSOS [passo]; // coloca valor passo no port G
delay_ms (200); // aguarda 200 ms
passo--; // decrementa passo anterior
if (passo < 0) // volta a sequencia do passo
passo=4;
}
}
Confiança:
"Em condições normais, corro para vencer e venço.
Em consições adversas, também posso vencer.
E mesmo em condições muito desfavoráveis, ainda sou páreo."
Ayrton Senna
Avatar do usuário
Fernando
Bit
 
Mensagens: 40
Registrado em: 15 Out 2006 01:52
Localização: Curitiba / PR

Mensagempor ffcprog » 15 Fev 2009 23:14

{
port_a = PASSOS [passo]; // coloca valor passo no port G
delay_ms (200); // aguarda 200 ms
passo++; // incrementa passo
if (passo=5) // volta a sequencia do passo
passo=0;
}

PIC12F629 com PORT_A ??
é GPIO!!

Entre outros..

ffcprog
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16

Mensagempor Fernando » 15 Fev 2009 23:40

ffcprog escreveu:{
port_a = PASSOS [passo]; // coloca valor passo no port G
delay_ms (200); // aguarda 200 ms
passo++; // incrementa passo
if (passo=5) // volta a sequencia do passo
passo=0;
}

PIC12F629 com PORT_A ??
é GPIO!!

Entre outros..

ffcprog


foi oq consegui pegar do ccs... pode ser q esteja errado mesmo.. mas não sei como escrever 1 byte na porta... (q nao tem 1 byte...)
Confiança:
"Em condições normais, corro para vencer e venço.
Em consições adversas, também posso vencer.
E mesmo em condições muito desfavoráveis, ainda sou páreo."
Ayrton Senna
Avatar do usuário
Fernando
Bit
 
Mensagens: 40
Registrado em: 15 Out 2006 01:52
Localização: Curitiba / PR

Mensagempor ffcprog » 15 Fev 2009 23:45

GPIO = BXX101010 ;;; valor 2 bits msb é descartado, não se preocupe com eles..
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16

Mensagempor Fernando » 16 Fev 2009 00:25

ffcprog escreveu:GPIO = BXX101010 ;;; valor 2 bits msb é descartado, não se preocupe com eles..


Esta output_a por causa da definição da biblioteca do CCS.... mas o problema é que começo a simular e ele entre em sleep com 46us... nem consigo ver ele funcionando...
Confiança:
"Em condições normais, corro para vencer e venço.
Em consições adversas, também posso vencer.
E mesmo em condições muito desfavoráveis, ainda sou páreo."
Ayrton Senna
Avatar do usuário
Fernando
Bit
 
Mensagens: 40
Registrado em: 15 Out 2006 01:52
Localização: Curitiba / PR

Mensagempor ffcprog » 16 Fev 2009 08:10

quer um conselho ?:
CCS HITXXX e XXXXX XXXX
Sinceramente, não gosto de nada que não seja ANSI.

Experimente o mikroC, ele roda até 2048 de flash como demo...

ffcprog
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16

Mensagempor Fernando » 16 Fev 2009 09:29

ffcprog escreveu:quer um conselho ?:
CCS HITXXX e XXXXX XXXX
Sinceramente, não gosto de nada que não seja ANSI.

Experimente o mikroC, ele roda até 2048 de flash como demo...

ffcprog


Concordo com vc... to com saudade do keil já hehehehe... vou baixar o mikroC...
[]s
Confiança:
"Em condições normais, corro para vencer e venço.
Em consições adversas, também posso vencer.
E mesmo em condições muito desfavoráveis, ainda sou páreo."
Ayrton Senna
Avatar do usuário
Fernando
Bit
 
Mensagens: 40
Registrado em: 15 Out 2006 01:52
Localização: Curitiba / PR

Mensagempor ernande_filho » 16 Fev 2009 14:22

Fernando, uma vez, fiz um programa e antes de gravar, resolvi testar no pic simulator. Deu tudo errado. Abri o código, refiz, montei, desmontei, fiz de tudo e não funcionava.
Resumindo: o Pic Simulator que não estava executando o código corretamente. Quando gravei a primeira versão no pic (que não funcionou no pic simulator) e testei na protoboard, funcionou de primeira!

Então, meu conselho é que vc teste na bancada.

abração.
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Mensagempor Fernando » 16 Fev 2009 17:52

Funcionou... agradeço ao ffcprog, foi baixar o MikroC, muito mais fácil de trabalhar. O simulador funcionou tb....
Agora to quebrando a cabeça pra configurar T1 como contador....
Preciso medir numero de pulsos num intervalo de tempo e a partir daí mandar os steps pro motor de passo. A aplicação não é critica quanto ao tempo, paro o timer, zero ele, ligo meço e espero um tempo até repetir o ciclo. O que preciso é do smit triger e de contar os pulsos...

A dúvida está na configuração do registrador, gostaria de um exemplo de como configurar os registradores.... é só atribuir?! pergunto pq já me ferrei a tarde toda pra descobrir isso pra escrever nos pinos hehehehe

[]s
Confiança:
"Em condições normais, corro para vencer e venço.
Em consições adversas, também posso vencer.
E mesmo em condições muito desfavoráveis, ainda sou páreo."
Ayrton Senna
Avatar do usuário
Fernando
Bit
 
Mensagens: 40
Registrado em: 15 Out 2006 01:52
Localização: Curitiba / PR

Mensagempor Fernando » 17 Fev 2009 11:13

Alguém sabe de bugs no mikroC 8.2?! Tem horas que ela da uns erros sem muita lógica e outras vezes nem compila algumas variáveis...
Será configuração?
To usando algumas variaveis com unsigned char

[]s
Confiança:
"Em condições normais, corro para vencer e venço.
Em consições adversas, também posso vencer.
E mesmo em condições muito desfavoráveis, ainda sou páreo."
Ayrton Senna
Avatar do usuário
Fernando
Bit
 
Mensagens: 40
Registrado em: 15 Out 2006 01:52
Localização: Curitiba / PR

Mensagempor ffcprog » 17 Fev 2009 11:48

os unicos bug´s que encontrei no compilador propriamente dito, eram na peça entre o teclado e a cadeira..
ffcprog
Byte
 
Mensagens: 145
Registrado em: 14 Fev 2007 23:16


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x