Página 1 de 2

ajuda com meu primeiro microcontrolador (pic12f629)

MensagemEnviado: 23 Set 2010 17:54
por mamp
to tentando fazer um led piscar usando este tuto mas nao ta funcionando
http://dqsoft.blogspot.com/2007/06/cont ... rte-i.html
ja gravei o pic com o codigo que aparece no tuto
porem nao pisca nada.
nao tenho a minima ideia do que possa estar errado,
sera que este circuito é seguro? nao queimou o meu pic?

MensagemEnviado: 23 Set 2010 18:47
por renatokodaira
Voce tah usando 3V ou 5V de alimentaçao (veja que o resistor de 33ohms eh para fonte de 3V).
Voce compilou o asm ? Modificou para usar o 12F629 ? O programa foi feito para 12F675, entao deve dar erro se compilar para 12F629. Ou pegou o hex jah gerado e gravou ? De mais detalhes.

Para comprovar se o PIC pifou (acho dificil), grave esse hex nele e veja se funciona:


Código: Selecionar todos
:100000002828A301A200FF30A207031CA307031C9A
:1000100023280330A100DF300F200328A101E83E90
:10002000A000A109FC30031C1828A00703181528FC
:10003000A0076400A10F152820181E28A01C222844
:1000400000002228080083130313831264000800B1
:10005000073099008316283085002030950007303E
:1000600081008312B8016400851A3D28B80A640033
:100070003808033C031D3D28B801643001206400AA
:100080003808003C031D4528051064003808013C71
:10009000031D4B28051464003808023C031D562834
:1000A0000514C83001200510C83001203328630032
:0200B0005728CF
:02400E00843FED
:00000001FF

MensagemEnviado: 25 Set 2010 18:03
por mamp
tentando comprovar se o pic pifou gravei o codigo indicado e no final da gravacao apareceu a mensagem

"verificacao feita com sucesso"

-to usando duas pilhas recarregaveis (em serie) 3V.
-baixei o codigo fonte completo (.asm) e modifiquei a primeira linha #include <P12F675.inc> para #include

<P12F629.inc> (perdi alguns dias ate me tocar disso)

Pode usar qualquer amperagem? as pilhas que eu to usando tem 2100 mhA cada.

Eu usei o mplab para gerar o .hex e o icprog para gravar o pic, atraves de gravador de pic que comprei no

mercado livre que usa a porta serial rs232.

Nao é todas as vezes que consigo fazer o ic prog funcionar, pois quando
eu clico no .hex que eu gerei (peguei o asm pronto do tuto, pus no mplab e gerei o .hex), nada acontece nada muda, todas as locacoes continuam 3FFF, parece que o

icprog tem vida propria, so depois de muita insistencia é que os 3FFF sao trocados pelos valores que

constam no .hex que gerei. Eu baixei um .hex so pra testar, este sempre abre de primeira, o codigo

que voce postou tambem sempre abre de primeira.

MensagemEnviado: 25 Set 2010 18:04
por mamp
tentando comprovar se o pic pifou gravei o codigo indicado e no final da gravacao apareceu a mensagem "verificacao feita com sucesso"

-to usando duas pilhas recarregaveis (em serie) 3V.
-baixei o codigo fonte completo (.asm) e modifiquei a primeira linha #include <P12F675.inc> para #include <P12F629.inc> (perdi alguns dias ate me tocar disso)

Pode usar qualquer amperagem? as pilhas que eu to usando tem 2100 mhA cada.

Eu usei o mplab para gerar o .hex e o icprog para gravar o pic, atraves de gravador de pic que comprei no mercado livre que usa a porta serial rs232.

Nao é todas as vezes que consigo fazer o ic prog funcionar, pois quando
eu clico no .hex que eu gerei (peguei o asm pronto do tuto, pus no mplab e gerei o .hex), nada acontece nada muda, todas as locacoes continuam 3FFF, parece que o icprog tem vida propria, so depois de muita insistencia é que os 3FFF sao trocados pelos valores que constam no .hex que gerei. Eu baixei um .hex so pra testar, este sempre abre de primeira, o codigo que voce postou tambem sempre abre de primeira.

MensagemEnviado: 25 Set 2010 21:40
por renatokodaira
Voce fez tudo certo, o problema maior eh o ICPROG com o gravador JDM. baixe o programa WINPIC800 (google acha) e use ele com o JDM.

O problema eh causado porque uma vez que voce grava um PIC com o oscilador interno habilitado (que eh o caso desses programas pisca pisca), ao tentar gravar/ler/apagar o PIC com o JDM/ICPROG, o PIC eh alimentado e começa a executar o programa que jah estava gravado e nao entra em modo de gravaçao/leitura. Com o WINPIC800, ele ativa primeiro o sinal de Vpp (13V) e soh depois o Vdd (5V) de forma que o PIC entre em modo de gravaçao/leitura e nao execute o firmware jah gravado.

O JDM pode ter outro problema tambem quando usado com seriais de notebooks, porque muitos deles nao tem sinais de -12V e +12V; as vezes soh -5V e +5V o que nao sao suficientes para gerar os 13V para o JDM fazer o PIC entrar em modo de gravação. Adaptadores USB-serial tambem podem dar problema. Alguns desktops com motherboards xingling podem ter o mesmo problema. Para checar isso, use um multimetro para verificar se tem 13V na linha Vpp quando mandar gravar algo (teste sem o PIC no soquete). o proprio ICPROG tem esse recurso de teste.


Pode usar sim com 3V, mas veja que duas baterias recarregaveis nao vao fornecer 3V, mesmo que bem carregadas, as minhas dao 1,4V cada e eu nao sei se funciona com 2,8V @4MHz. A capacidade de 2100mAh nao influi no funcionamento, apenas no tempo de funcionamento.

Se nao me engano, no asm original para 12F675 tem uma linha com MOVWF ANSEL. Nao existe esse registrador no 12F629 e nao sei o efeito disso, por via das duvidas retire esse comando do ASM.

MensagemEnviado: 30 Set 2010 14:30
por mamp
as 2 pilhas em serie que eu tava usando nao atendem ao recomendado que é 3 volts. apesar de que a faixa de tensao em que operam o 12f629 e o 12f675 é de 2 a 5.5 volts, essa é a minha principal suspeita de nao ter funcionado o meu circuito. pois as pilhas conforme vao perdendo a carga a tensao diminui né?
eu to planejando a minha segunda montagem do circuito, to sem protoboard, na real nunca usei uma, eu to usando aquelas garrinhas de jacare para prender os terminais e fios, entao tudo fica mais dificil, sem falar que a minha bancada é um canto na mesa da cozinha que eu tenho que disputar com alimentos em geral hehe.
ja baixei o programa winpic 8000 tambem.

to bolado com um circuito, é bem simples eu so ligo somente o pino 1(vdd) e o pino 8 (vss) direto na bateria, ai eu meço com o multimetro e passa corrente, isso é normal? o que é que tem entre o pino 1 e 8 para deixar passar corrente quando nenhum dos outros pinos estao ligados?

Todo mundo diz que a amperagem nao é o mais importante, eu nao tenho conhecimentos profundos de eletronica mas acredito que se eu tiver por exemplo uma lampada de tungstenio comum domestica vamos pensar uma de 220 volts e eu for aumentando a amperagem continuamente, vai chegar uma hora que o filamento nao vai aguentar, mesmo a voltagem estando 220 sempre. ou eu to enganado?

MensagemEnviado: 30 Set 2010 18:05
por renatokodaira
Mamp, tente arrumar um ferro de solda 30W, fios finos de cobre, uns soquetes de CI e pelo menos fazer algumas soldas, e assim deixar de usar garras jacare, porque a montagem nao fica confiavel e cheio de mau contato.

Respondendo: entre o pino de Vdd e Vss existem internamente dentro do microcontrolador um monte de circuitos que vao consumir corrente (por exemplo o oscilador interno que foi habilitado no firmware). Esses circuitos incluem transistores, resistores e capacitores. Assim eh normal.

A questao das pilhas pode ser um dos problemas. Voce nao consegue ligar 3 pilhas em serie ? Assim aumenta a tensao de alimentaçao pra pelo menos uns 4V. Veja que talvez o PIC esteja funcionando sim, apenas que voce nao tem como verificar soh com o led (nao piscando) porque a tensao estah baixa pra acende-lo.

Todo mundo diz que a amperagem nao é o mais importante, eu nao tenho conhecimentos profundos de eletronica mas acredito que se eu tiver por exemplo uma lampada de tungstenio comum domestica vamos pensar uma de 220 volts e eu for aumentando a amperagem continuamente, vai chegar uma hora que o filamento nao vai aguentar, mesmo a voltagem estando 220 sempre. ou eu to enganado?


Na analise de circuitos tudo eh importante. Voce deve conhecer a lei de Ohm. A corrente eletrica ("amperagem" nao eh um termo correto) na lampada serah o quociente da divisao da tensao eletrica ("voltagem" = termo incorreto) pela resistencia do filamento. Voce nao consegue aumentar a corrente sem aumentar a tensao sobre a resistencia (se nao muda-la) e a tensao da tomada eh constante. Observe que um filamento frio tem uma resistencia menor do que um filamento incandescente (quando voce liga a lampada, ele fica incandescente e sua resistencia aumenta ateh atingir uma estabilidade - entao a variaçao eh muto rapida).
Se a sua lampada for pra 110V e voce liga-la em 220V, a corrente vai ser o dobro do que ela foi projetada e nesse caso o filamento nao aguenta e se rompe (queima).

MensagemEnviado: 30 Set 2010 20:41
por mamp
Eu ja havia feito uma plaquinha com soquete pra poder encaixar o microcontrolador, to usando as garrinhas só em alguns componentes nao achei outra saida...

deixem eu aproveitar mais uma vez o conhecimento de voces para sanar as minhas duvidas, nao é nada offtopic, apesar de parecer, mas estou usando o exemplo da lampada porque pra mim é... vamos dizer assim mais palpavel do que falar sobre componentes do microcontrolador e eu nao to conseguindo assimilar o fato de que a amperagem nao é importante.
Vamos la - e tomara que eu nao esteja sendo inconveniente com isso hehe- O caso é o seguinte:
Imagine uma fazenda fictícia onde eu tenho uma usina - pode ser movida por uma queda dagua tanto faz - esse gerador produz uma ddp de 220 Volts, porem é capaz de gerar uma corrente de 10.000 Amperes então temos: 220 Volts X 10.000 Amperes=2.200.000 Watts (uau! ainda bem que é ficção) . Nessa fazenda eu tenho um laboratorio e estou fazendo uma experiência com uma lampada de 220 Volts, eu liguei esta lampada em série com um componente cuja resistência varia de zero até o infinito. Começo com a resistência no infinito e vou diminuindo a resistencia gradativamente, essa lampada nunca vai queimar?

MensagemEnviado: 30 Set 2010 22:58
por renatokodaira
Jah estah começando a sair do assunto de PIC. Essas duvidas talvez caibam melhor na seçao Assuntos Gerais ou Circuitos. Mas pra continuar:

- No inicio com resistencia infinita (circuito aberto) a corrente eh zero. A medida em que se vai diminuindo essa resistencia, a corrente eletrica vai aumentando ateh chegar um momento em que seja suficiente pra começar a brilhar o filamento da lampada (que tem uma resistencia tambem). Ao chegar essa resistencia de controle em zero, a unica resistencia do circuito vai ser a do filamento da lampada, e tem-se a corrente maxima (e potencia) suportada pela lampada.

- Se a resistencia for infinita, nao tem corrente entao nao haverah queima (tambem nao acende nada). Se a resistencia for razoavel e o brilho for fraco o filamento vai demorar pra queimar (mas nao eh eterno). Se a resitencia for zero, a lampada vai funcionar pela vida util dela.

- 2,2MW de potencia numa pequena usina nao eh coisa impossivel. Qualquer PCH media consegue ter essa potencia (PCHs tem ateh 30MW) e podem ser instaladas numa fazenda.

MensagemEnviado: 02 Out 2010 08:55
por mamp
Absolute Maximum Ratings†:
...
Total power dissipation(1): 800 mW
Maximum current out of VSS pin: 300 mA
Maximum current into VDD pin: 250 mA
...
Stresses above those listed under ‘Absolute Maximum Ratings’ may cause permanent damage to the device
------------------------------------------------------------
achei o citado acima no data sheet do 12f629. a minha pergunta é a seguinte: vamos supor que eu quizesse danificar o pic, porém usando somente os pinos do Vdd [1] e do Vss [8] sendo que a voltagem também não poderia mudar, teria que ser sempre 3.2 Volts. Tem como fazer?

Obs: não quero queimar pic nenhum hehe, continuando com o nehgocio da gravação:
Fui pra prática e aconteceu o seguinte:
-Usei o winpic8000 e pedi para abrir o .hex gerado a partir do asm do tutorial dqsoft aí deu:
erro linha 129... endereco invalido para o dispositivo selecionado. deseja continuar e substituir os dados?
-Fui pro icprog, nao deu aviso nenhum, nada aconteceu como sempre, como se eu nao tivesse pedido para abrir .hex nenhum mas se eu tivesse continuado (umas 100 tentativas) ele ia acabar aceitando.
-Pedi pro winpic8000 abrir um .hex que sempre abre de prima no icprog, e funcionou ok.
Talvez o problema esteja na transformacao do .asm em .hex to usando o mplab ide v7.50

obs:ja tentei mudar as configuracoes do winpic8000 de acordo com o que tava no .asm (_BODEN_ON & _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT)

alguem pode me sugerir um programa alternativo ao mplab? se é que vae a pena mudar.

MensagemEnviado: 03 Out 2010 10:26
por renatokodaira
achei o citado acima no data sheet do 12f629. a minha pergunta é a seguinte: vamos supor que eu quizesse danificar o pic, porém usando somente os pinos do Vdd [1] e do Vss [8] sendo que a voltagem também não poderia mudar, teria que ser sempre 3.2 Volts. Tem como fazer?


Sim, basta inverter a polaridade da fonte: colocar 3,2V no Vss (terra) e 0V no Vdd (positivo).

Seu problema nao eh o MPLAB. Se ele cria o Hex e nao funciona, pode ser problema no programa fonte (com erro de logica) ou o seu JDM nao estah com as tensoes de programaçao correta. Se voce usa o JDM (que eh um gravador bem simples) ele vai gravar com Vdd = 5V (ou 5,1V dependendo do zener). O fato de voce gravar o PIC com 5V e alimenta-lo com 3,2V nao garante o funcionamento dele. Gravadores profissionais gravam e fazem a verificaçao com diferentes tensoes de alimentaçao. Experimente alimentar o PIC com 5V (mude o resistor do led) e veja se funciona.

MensagemEnviado: 07 Out 2010 13:03
por mamp
Olá! pergunta simples.
Para visualizar o .hex atraves do icprog é necessário estar com o meu pic conectado no computador?
PS: Note que eu não to querendo ler o .hex que esta gravado no pic e sim o arquivo .hex que está gravado do disco rígido do pc.
Se a resposta for não, então eu deverei primeiro (antes de sair soldando e substituindo componentes) descobrir o porque de não conseguir visualizar o .hex (isso acontece somente com os que eu mesmo gero a partir do .asm) já os .hex que eu baixo direto da internet (ou seja os que eu não passam pelo processo de transformação .asm para .hex, pelo menos não no meu pc) e peço pro icprog abrir ele abre de boa.
Poxa vida só pra rir mesmo, mal comecei e já tá dando problema no início do início do processo.

MensagemEnviado: 07 Out 2010 19:13
por renatokodaira
Nao precisa ter o PIC conectado nao. Todo programa pra gravar PIC tem que carregar/armazenar o arquivo HEX na memoria do PC pra depois transferir para o microcontrolador e pode ser visualizado na tela. Alem do HD, o firmware pode jah estar gravado no uC e voce pode ler (se nao estiver protegido) e visualizar do mesmo jeito. O ICPROG permite carregar varios HEX e fazer comparaçao entre eles (se estao iguais ou nao).

MensagemEnviado: 19 Out 2010 15:08
por mamp
Se eu tivesse te escutado antes (voce me disse pra eu ficar ligado que o MOVWF ANSEL so pro 12f675) nao teria perdido tanto tempo com esse tuto.
foi no asm original do tuto:
http://dqsoft.googlegroups.com/web/PicLed.asm
e encontrei a linha
CLRF ANSEL ; Entradas digitais (PIC 12F675)
Por que diaxos precisa de entradas digitais para, simplesmente, se piscar um led?!!. Só pode ser sobra de codigo de um programa que já serviu pra outra coisa e agora faz as vezes do piscador de led desse tuto, (mas ta valendo ótimo, pena que atrapalha quem tem um 12f629)
Eu vou desistir deste tuto por enquanto, no futuro ate vou ter que comprar um 12f675 aí quem sabe. Por enquanto to na busca de um tuto pro 12f629.

MensagemEnviado: 19 Out 2010 15:53
por [Daniel]
Isso aqui funciona com os dois PICs:

Código: Selecionar todos
.................
   ;------------------
   CLRF   GPIO
   ;------------------
   BANK1            ;ENTRA NO BANCO 1
   ;------------------   
   CALL   3FFH      ;CALIBRA OSCILADOR PARA 4MHz
    MOVWF   OSCCAL      ;MANDA A CONFIGURAÇÃO PARA OSCCAL
   ;------------------
    CLRF   ANSEL      ;LIMPRA REG. ANSEL
   ;------------------
   MOVLW   B'00000001'
   MOVWF   TRISIO
   ;------------------
   MOVLW   B'10000000'
   MOVWF   OPTION_REG
   ;------------------                  
   MOVLW   B'00000000'
   MOVWF   INTCON      ;TODAS AS INTERRUPÇÕES DESLIGADAS
   ;------------------
   BANK0            ;ENTRA NO BANCO 0
   ;------------------
   MOVLW   B'00000111'   ;CARREGA w COM 7
   MOVWF   CMCON      ;MOVE 7 PARA CMCON E DESLIGA COMPARADOR

;*******************************************************************
;PROGRAMA PRINCIPAL
;*******************************************************************
MAIN
   BSF      LED
   CALL   DELAY_1S
   BCF      LED
   CALL   DELAY_1S
   GOTO   MAIN
...........


Pasta definir o arquivo .inc lá em cima, e no caso de usar o 675 so esquecer a linha CLRF ANSEL.