Ir ao conteúdo
  • Cadastre-se

Iniciando em PICs


geekionizado

Posts recomendados

Olá pessoal, sempre que tento iniciar em PICs encontro vários sites que falam um monte de coisa mas não chegam a lugar nenhum. Sei que muitas pessoas já devem ter perguntado isso aqui, mas espero que esse tópico ajude muitas outras pessoas.

Comprei um PIc Burner no mercado livre, mas até hoje só consegui gravar um código blink que achei pronto já compilado.

Queria saber um programa definitivo (de preferência free) para compilar em C, direto para o .hex (acho que é isso) para que eu possa gravar com o programa que veio com o pic burner.

Queria um exemplo de um código em C que acenda um led enquanto um botão estiver pressionado.

Quero saber se para usar um código para certo pic preciso alterar muita coisa ou só a versão do pic no include (claro, se o PIC puder realizar tal código também).

Queria saber um PIC bom pra iniciar com pelo menos 4 portas.

Pessoal, agradeço muito qualquer ajuda!

Link para o comentário
Compartilhar em outros sites

Boa noite,

Eu uso o MikroC e o CCS C para programar em C (bem pouco pois prefiro assembly!) os dois são pagos, eu não tenho licenças, mas também não uso profissionalmente, só usei para aprender mesmo.

Caso você não faça questão de usar esses genéricos, baixe, instale e abra os exemplos que vem junto, garanto que vai tirar muitas das suas duvidas.

Você pode montar os circuitos no Isis Protheus e simular com os exemlos prontos, aí você vai alterando os projetos de acordo com o que você quer.

Pic bom pra começar? difícil dizer cada um fala uma coisa, vou dar a minha opinião pessoal e não afirmo que é a melhor ou pior, comece com o PIC16F628, vai encontrar muito material na rede.

Vou te passar um link de um curso que usei quando comecei, é em asm, é antigo, mas é bem passo-a-passo, pode te ajudar http://www.4shared.com/file/BnDDkyF9/EdutecBauru.html

Att,

Fernando

Link para o comentário
Compartilhar em outros sites

Olá, obrigado, baixei um compilador em C e compilei para .hex e escrevi este código:

#include <12F629.h>

#use delay(clock=4M)

void main () {

while (1) {

output_high(pin_a0);

delay_ms(2000);

output_low(pin_a0);

delay_ms(2000);

}

}

Mas quando envio, não acontece nada, peguei um exemplo já em .hex de um site e enviei, e funcionou, vejam:

http://www.voti.nl/blink/index_1.html (no pic 12F629 sem cristal)

Tem algo errado com meu código? Obrigado!

Alguém não sabe?

Estou tentando programar esse PIC mas simplesmente não acho nada na internet! Só um exemplo pronto, mas nada mais!

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

Bom, se quiser em MikroC eu fiz aqui pra você e testei no Proteus, funcionou!

Segue código em C



void main() {
CMCON = 7; // Desliga comparadores(GPIO para digital)
TRISIO = 0; // GPIO tudo saida

do {
GPIO = 0xFF; //Nivel alto para GPIO
Delay_ms(1000); // Delay 1s
GPIO = 0; //Nivel baixo GPIO
Delay_ms(1000);
} while(1);
}

Abç

Fernando

Link para o comentário
Compartilhar em outros sites

Ninguém pode em ajudar? Preciso de algo assim:

Quando liga, ele verifica se a EEPROM está escrito 0, se sim, desliga um relê. Se não, verifica se um botão será pressionado dentro de 10 segundos, se for pressionado, liga um relê e escreve 1 na EEPROM, se não apertar, desliga o relê e escreve 0 na EEPROM.

Precisava disso, mas realmente não achei NADA na internet, está muito difícil! Não entendi isso de configurar os fuses, talvez seja isso, porém o código .hex que dá certo eu só gravo e não mudo nada, e do mesmo jeito faço com o que eu compilo, porém não funciona.

Agradeceria MUITO qualquer ajuda :(

MUITO obrigado pessoal espero que alguém possa me ajudar :)

Link para o comentário
Compartilhar em outros sites

Como você mesmo disse: você está iniciando em programação para uC, então acho melhor ir por partes:

1- Vamos corrigir seu código no CCS para compilar alterre a linha com o valor do cristal, escreva por extenso 4000000 ( quatro milhões, no lugar do M colocar 6 zeros)

#use delay(clock=4000000)

2- acrescente a linha abaixo para configurar os fuses básicos, e pesquise sobre outros fuses, teste eles, vá no menu view e valid fuses, veja todos.

#fuses HS,WDT,NOPROTECT

3 - Começe entendendo isso, para depois pesquisar mais sobre Eeprom. Aqui no fórum existe muito material sobre isso. Quando tiver apto pode pedir aqui q muito ajudaram.

Link para o comentário
Compartilhar em outros sites

Olá, obrigado, testei, porém também não funcionou. Uma coisa que notei é que no .hex pronto que eu achei, após gravar no PIC recebo um erro: "verificação falhou no endereço 00000h" (algo assim), e mesmo assim funciona. Já nos códigos que eu envio, dá: "Dispositivo verificado com sucesso", e não funciona.

Isso faz algum sentido pra vocês?

E mesmo no código pronto em .hex e no que eu compilo, quando envio, aparece: "Não encontrado valor de calibração do oscilador" Quer usar o valor no arquivo (3FFFh) em vez disso? Eu sempre coloco não, e funciona para o código no .hex que eu achei pronto.

Muito obrigado, desde já, valeu mesmo por toda a ajuda!

Link para o comentário
Compartilhar em outros sites

Fiz o projeto completo no mikroC 4.15 + arquivo para simular no proteus.

Download

Para que veja o código corretamente e possa recompila-lo, depois que instalar o mikroC Pro 4.15 ou posterior, descompacte o aquivo zip baixado, e abra o arquivo chamado: Projeto_Forum.mcppi

O arquivo de simulação está dentro desta mesma pasta e chamado de: Simulacao.dsn

Grave o Hex no pic e coloque no protoboad. Foi usado o oscilador interno e clock em 4Mhz.

Quando o programa fala do oscilador interno, você deverá sempre informar o valor correto. Caso contrario nunca funcionará.

Procure por alguma opção referente à OSCCAL, e algo como "regenerate" (no caso de um gravador usb). Ele vai encontrar o valor de calibração do oscilador interno e lhe mostrar. Esse número você tem que guardar "sempre" e toda vez que for regravar o pic, ele deve ser informado caso o software de interface não o encontre automaticamente. Tal valor vem gravado de fábrica. Não podemos mudar ele e muito menos o valor de um pic é igual ao do outro.

Retorne com os resultados.

Abraço.

Link para o comentário
Compartilhar em outros sites

Olá, gravei aqui e funcionou, mas o delay não parece de 1 segundo não, parece meio segundo. Mudei o valor do delay pra uns 4000, mas continua a mesma coisa, piscando de meio em meio segundo. Não achei as opções que você falou não, procurei em todas do Pic Burner :(

Muito obrigado mesmo pelo material!

Link para o comentário
Compartilhar em outros sites

Já havia citado que enquanto você não econtrar o valor de calibração do oscilador interno deste pic, ele não ira funcionar ou funcionará como cita: "o delay parece 1/2s".

Mais tarde farei um exemplo com cristal externo.

Veja se tem algum cristal e capacitores ceramicos de 15 à 22pf

Informe a frequencia do cristal para mudar o oscilador.

Veja esta página:

http://picprojects.org.uk/projects/piccal.htm

[]'s.

Link para o comentário
Compartilhar em outros sites

Primeiramente, muito obrigado mesmo! :)

Então, agora que entendi, vi no site, e tal, li o PIC, fui no endereço que tá lá, mas está 3FFF como todos. Não sei se fiz errado, mas só mandei ler, e no endereço 03F8 na última coluna está só 3FFF como todas as outras.

Então, posso até usar cristal externo, mas eu tava fazendo um negócio que vou ter que produzir algumas dezenas, e queria que ficasse barato, então com oscilador interno acho ficaria melhor e mais barato (já que não precisa ser tão preciso).

(sobre os capacitores, mesmo usando oscilador interno, precisa ter capacitor para alimentar o PIC? Estou alimentando sem, não sei se pode ter algum problema)

Mais uma vez, muito obrigado!

Opa!

Consegui, não sei porque esse PIC não mostrou, mas tentei com um outro 12F629 que eu tinha aqui e mostrou o valor, coloquei e gravei, deu certo!

Muitíssimo obrigado mesmo!

:D :D

Link para o comentário
Compartilhar em outros sites

sobre os capacitores, mesmo usando oscilador interno, precisa ter capacitor para alimentar o PIC? Estou alimentando sem, não sei se pode ter algum problema

Tem que ver sob quais situações irá operar seu produto. Cuidados com interferências diversas é fundamental. Fica a cargo de boa filtragem, desacoplamentos, bom layout da placa, etc ...

--

Se for necessário precisão no tempo, deverá obrigatóriamente usar cristal externo. O oscilador interno é um arranjo RC, e bem sabemos que não tem como fazer capacitores e resistores precisos.

Neste caso você perde 2 pinos ficando com 4 disponíveis onde, 3 podem ser i/o e 1 somente entrada.

--

Recomendo que use um gravador usb, exemplo o pickit2. Existem centenas de esquemas na rede para fazer o seu próprio.

Uma dica para montar o seu:

http://www.micros-designs.com.ar/pickit2-clone-5v3-3v/

Bootloader necessário:

http://www.voti.nl/pickit2faq/files/PICkit2Bootloader_Wouter.hex

--

Abraço.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!