Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: pwm pic16f628a  (Lida 477 vezes)
costela
Fusivel
*
Offline Offline

Mensagens: 3


« em: Agosto 27, 2008, 13:57:59 »

Bom dia.
É minha primeira postagem nesse fórum.

Na universidade aprendi o microcontrolador hc11 mas nunca montei um circuito com microcontrolador, apenas simulávamos.

Agora estou precisando desenvolver um pwm utilizando o pic16f628a. Fiz a programação em C, utilizando o compilador Hi-Tech, simulei no proteus.

No proteus a simulação está ok, conforme desejo, a gravação também funcionou beleza (mandei o icprog verificar várias vezes o código programado e está ok!) o que me leva a descartar problema com o pic ou com o gravador. Também já verifiquei várias vezes a montagem no protoboard e não encontrei ero algum. Estou utilzando um oscilador externo cristal de 10MHz com dois capacitores de 27pF.

Abaixo está o código que desenvolvi. Gostaria de saber se esqueci de considerar alguma coisa que não precisa ser considerada na simulação e deve ser considerada na prática (fusíveis, registros, etc...)

Obrigado a todos.

#include <pic16f62xa.h>
#include <pic.h>
__CONFIG(WDTDIS & XT & PWRTEN);
unsigned char dc, aux;

void main()
{
TRISA = 0xFF;
PR2 = 0xFF;
CCPR1L = 0x00;
CCP1CON = 0b00001100;
TRISB = 0b11110011;
T2CON = 0b00000101;
dc = 0;
aux = 0;
for(;;)
{
dc = 0;
if(RB5) dc+=0b00000001;
if(RB4) dc+=0b00000010;
if(RB1) dc+=0b00000100;
if(RB0) dc+=0b00001000;
if(RA3) dc+=0b00010000;
if(RA2) dc+=0b00100000;
if(RA1) dc+=0b01000000;
if(RA0) dc+=0b10000000;
if(aux!=dc)
{CCPR1L = dc;
aux=dc;
}
CCP1X = RB7;
CCP1Y = RB6;
}
}
« Última modificação: Agosto 27, 2008, 16:47:02 por costela » Registado
José Flor
José António Flor de Sousa
Chip
*****
Offline Offline

Mensagens: 1 044


OzFlor - José Flor


WWW
« Responder #1 em: Agosto 28, 2008, 05:40:22 »

Não será de 4MHz o máximo do cristal. Verifica isso, posso estar errado.
José Flor
Registado

costela
Fusivel
*
Offline Offline

Mensagens: 3


« Responder #2 em: Agosto 28, 2008, 15:49:46 »

não, o máximo é 20MHz para cristal.
a minha saída fica sempre em zero, nem ao menos instável ou numa frequencia diferente ela fica.
Registado
costela
Fusivel
*
Offline Offline

Mensagens: 3


« Responder #3 em: Agosto 28, 2008, 19:42:26 »

bom, substitui o cristal pelo oscilador interno e mesmo assim meu programa continua não funcionando como funciona no proteus. minha saida fica sempre em 0.
abraços
Registado
José Flor
José António Flor de Sousa
Chip
*****
Offline Offline

Mensagens: 1 044


OzFlor - José Flor


WWW
« Responder #4 em: Agosto 29, 2008, 05:55:29 »

Muitas das vezes ports não usado têm que ficar com uma resistência ligada em pull-up. Mas isso não é necessário pois podes programar os ports não usados para creio eu saída (tenho que confirmar isso). Não sei o teu caso de programação. Tu também tens uma TRISA e TRISB no teu código. O fabricante não garante que isso vai funcionar. Nos projetos que eu fiz com o 84 o TRISA sempre funcionou. No caso do 62X não sei. Já faz muito mais de um ano que não programo porque não tenho nem tempo nem bancada de electrónica e nem mesa para estudar tão pouco. Desde que minha filha nasceu ficou assim.
Aguarda por mais respostas de alguém para te ajudar.
Abraços
José Flor
« Última modificação: Agosto 29, 2008, 05:57:39 por José Flor » Registado

maurosmartins
Transistor
**
Online Online

Mensagens: 28



WWW
« Responder #5 em: Agosto 31, 2008, 22:41:54 »

se na simulação funciona, podias enviar o ficheiro HEX só para confirmar os bits de configuração?! A nível de hardware, se o pino MCLR não for configurado como entrada, é necessária uma resistência de PULL-UP uma vez que funciona como RESET.

Cumps, Mauro.
Registado

Cumps, Mauro.
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para: