Autor Tópico: Iniciando programação asm em PIC  (Lida 18073 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline Alebe

  • CNCMASTER
  • ******
  • Posts: 3688
  • Sexo: Masculino
  • Cidade - UF: São Paulo - SP
Re: Iniciando programação asm em PIC
« Resposta #30 Online: 09 de Julho de 2009, 13:06 »
Esses compiladores da Mikroeletronika, não gosto. nunca vi um programa tão bugado.

A indicação foi pelo curso em pdf disponibilizado, e não essa ou aquela plataforma.
Mas é sempre bom saber as opiniões dos mais experientes.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Iniciando programação asm em PIC
« Resposta #31 Online: 09 de Julho de 2009, 16:23 »

Com relação à linguagens, posso dizer que sou experiente. Programo há mais de 25 anos, e uso C há mais de 20 anos, inclusive em programas multitarefa (vários processos num mesmo S.O ou também várias threads num mesmo processo do S.O.), programas multiusuário, com processadores VAX (da finada Digital Equipment Corporation) e sistemas operacional VMS. Também em ambiente UNIX/Solaris de Sparc Stations, da SUN. Tambem uso o Java e Python em ambientes multitarefas e comunicação em rede (TCP/IP). Também já desenvolvi muita coisa em assembler (famílas Intel 8051, 8088, 80286, 80386 e ATMEL) para controle de processos contínuos e em tempo real, ....
 
Recentemente comecei a brincar com os PICS usando assembler. Muito fácil pra quem já conhece outros processadores e arquiteturas de CPU.

Ainda assim, para microcontroladores com pouca memória (até 2KB) prefiro assembler. Sou completamente contrário ao aprendizado de microcontroladores usando linguagens de alto nível logo de início. Deve-se começar pelo assembler e aprender a arquitetura em detalhes: portas de I/O, portas seriais RS232 e RS485, interrupções e as suas incontáveis possibilidades, watch dog timer, temporizadores, contadores, comunicação via I2C, ISP, clocks internos e externos, acesso e uso de memórias internas e externas (Flash, RAM, EEPROM, ...). Isso só se conhece de fato e em detalhes se conhecer a arquitetura da CPU e para isso, o assembler é melhor.

Aprender microcontrolador sem assembler é igual a querer comer manga de garfo e faca....

Linguagens de médio e alto nível, geralmente, são melhores para lidar com grandes volumes de informações, processamentos complexos (cálculos metamáticos complexos usando formatos em ponto flutuante, bancos de dados), informações mais estruturadas e aplicações mais complexas (interfaces Ethernet, USB, sistemas de arquivos de memórias SD, unidades de disco - HDs, etc...). Ou quando há memória de programa sobrando.

Linguagens de nível mais elevado também são boas para fazer programas portáveis, que rodem em qualquer processador, é o caso de Java que roda em (qualquer) celular. Se for fazer o mesmo com o C em microcontroladores, verá que o programa é portável até certo ponto, pois haverá um momento em que o programa dependerá da arquitetura (portas seriais, memórias disponíveis, temporizadores e contadores, interfaces, velocidade de processamento, ...).

Offline Paulo_cwb

  • Novato
  • *
  • Posts: 29
Re: Iniciando programação asm em PIC
« Resposta #32 Online: 10 de Julho de 2009, 22:15 »
Esses compiladores da Mikroeletronika, não gosto. nunca vi um programa tão bugado.

A indicação foi pelo curso em pdf disponibilizado, e não essa ou aquela plataforma.
Mas é sempre bom saber as opiniões dos mais experientes.

Pois é. Eu já usava Picbasic mas, ao ver as funcionalidades dos compiladores da MIKRO, me animei. Infelizmente, não foi o que eu esperava.
Enfim, fica a dica.
Tem mais sobre isso no fórum sonsivri.com onde outros usuários tiveram a mesam impressão.


Offline Paulo_cwb

  • Novato
  • *
  • Posts: 29
Re: Iniciando programação asm em PIC
« Resposta #33 Online: 10 de Julho de 2009, 22:25 »


Ainda assim, para microcontroladores com pouca memória (até 2KB) prefiro assembler. Sou completamente contrário ao aprendizado de microcontroladores usando linguagens de alto nível logo de início. Deve-se começar pelo assembler e aprender a arquitetura em detalhes: portas de I/O, portas seriais RS232 e RS485, interrupções e as suas incontáveis possibilidades, watch dog timer, temporizadores, contadores, comunicação via I2C, ISP, clocks internos e externos, acesso e uso de memórias internas e externas (Flash, RAM, EEPROM, ...). Isso só se conhece de fato e em detalhes se conhecer a arquitetura da CPU e para isso, o assembler é melhor.

Linguagens de médio e alto nível, geralmente, são melhores para lidar com grandes volumes de informações, processamentos complexos (cálculos metamáticos complexos usando formatos em ponto flutuante, bancos de dados), informações mais estruturadas e aplicações mais complexas (interfaces Ethernet, USB, sistemas de arquivos de memórias SD, unidades de disco - HDs, etc...). Ou quando há memória de programa sobrando.


Concordo com você.
Para quem está obrigado a usar um microcontrolador com pouca memória, o assembly é meio obrigatório.
Também, quem trabalha exclusivamente nessa área de firmware (ou mesmo em eletrônica digital), normalmente poderá dedicar mais tempo e usar melhor o assembly.

No meu caso - e no de muitos usuários - preciso fazer diferentes tipos de sistemas, com baixo volume de produção e rápida implantação. Aí, não tenho muito como escapar de um compilador C ou Basic (a linguagem não importa tanto... importa mais o código HEX que o compilador produz).
Esses compiladores normalmente tem rotinas prontas e exemplos usando timers, watchdog, acesso a memória externa, etc. E tem os fóruns para ajudar.
Claro que, em certos casos, quem souber assembly vai descascar o abacaxi mais fácil e rapidamente.

Tudo é questão de equalizar tempo disponível, qual o resultado que se quer obter e qual o material (microcontrolador) disponível. Mas sempre, em qualquer linguagem, vai precisar paciência e perseverança.

Paulo

Offline Paulo_cwb

  • Novato
  • *
  • Posts: 29
Re: Iniciando programação asm em PIC
« Resposta #34 Online: 10 de Julho de 2009, 22:35 »
Boas galera.
... queria começar a programar o mesmo o unico conhecimento que tenho em programação de microcontroladores é em 8085 mas ja estive a olhar para alguns exemplos do asm do pic e fiquei meio predido.O micro que estou a tentar programar é um PIC16F690 nem sei se sera o mais facil.

Algum colega tem ideia de por onde devo começar?O que devo ler os conceitos basicos mesmo.
Desde ja obrigado.

Cara, vou te falar um negócio que muitas vezes passa despercebido, mas que, dependendo da aplicação, é FATAL para teu projeto: o PIC é sensível a ruídos (16F87x, 18F45x, etc.). Então, procure pesquisar isso também, nos datasheets. Resistores de pull-up em conjunto com um resistor de 100R, nas entradas digitais que vão ler teclas ou sensores digitais, podem te livrar de probelmas indesejáveis.
Da mesma forma, colocar um indutor de modo comum nos cabos mais longos (aquele ferrite ao redor do cabeamento), vai filtrar muita sujeira.
Uma outra dica é, na fonte de alimentação, antes do regulador de 5 Vcc (se você usar um 7805, por exemplo), colocar um indutor em série, de uns 50uH, pelo menos.
Isso tudo, junto com um bom layout de PCI, faz MUITA diferença nos projetos para uso em ambientes industriais, por exemplo.

Caso contrário, o projeto pode funcionar muito bem no protótipo e, depois no produto final, de fazer passar vergonha  :'(
Ou ainda, dependendo do lote de PIC que você pegar, pode funcionar ou não.

Paulo

Offline fcamargo

  • Produzindo equipamentos e dispositívos
  • CNCMASTER
  • ******
  • Posts: 2974
  • Sexo: Masculino
  • www.faraos.net
    • industria de máquinas
  • Cidade - UF: Curitiba
  • Nome:: Fábio Aurélio Camargo
  • Profissão: fabricante de routers
Re: Iniciando programação asm em PIC
« Resposta #35 Online: 11 de Julho de 2009, 23:32 »
meu curso tá andando..

olha ai..

é besteira.. mas tá andando..

eu já programo em C a anos.. mas nunca tinha mexido com PIC.. e estou gostando pacas..

seguinte..
tenho mais 60 placas dessa PICLAB (sem os componentes)
vou colocar algumas na mão do JOSt no shopping.. desmontada ou montada..
se alguem ai quiser aprender a usar esse cara..
essa plcaquinha é show..
PICLAB 40 é um LAB pra programaçÃo..
os pics usados por elas são os de 40 pinos..
16f877A ou 4550 (usb)

vou colocar na mão do JOST, se alguem quiser.. posso mandar elas montadas ou em forma de KIT pro forum vender e levantar mais um capital.
« Última modificação: 15 de Julho de 2009, 21:23 por Fábio Camargo »

Offline FB

  • "... Potência não é nada sem controle!"
  • Novato
  • *
  • Posts: 15
  • Sexo: Masculino
Re: Iniciando programação asm em PIC
« Resposta #36 Online: 21 de Janeiro de 2010, 16:05 »
... posso mandar elas montadas ou em forma de KIT pro forum vender e levantar mais um capital.

Olá Camargo.
Quanto sairia uma placa dessas sem os componentes?

Abraço.

Offline F.Gilii

  • Administrador
  • CNCMASTER
  • *******
  • Posts: 13796
  • Sexo: Masculino
  • Consultoria, Automação e Construção de Máquinas
  • Cidade - UF: Atibaia - SP
  • Nome:: Fabio Gilii
  • Profissão: Tec. Mecanica de Precisão
Re: Iniciando programação asm em PIC
« Resposta #37 Online: 21 de Janeiro de 2010, 16:08 »
Betoni,

O Sr. Fabio Camargo não participa mais deste fórum.

Offline FB

  • "... Potência não é nada sem controle!"
  • Novato
  • *
  • Posts: 15
  • Sexo: Masculino
Re: Iniciando programação asm em PIC
« Resposta #38 Online: 21 de Janeiro de 2010, 17:21 »
Esses compiladores da Mikroeletronika, não gosto. nunca vi um programa tão bugado.

Olá aos amigos do forum.
Quanto aos comentários sobre programar em C para Pic, deixo um pouco de minha experiencia, embora não seja o relativo ao tópico, também não pretendo fazer propaganda.
Já tentei aprender asm, mas é um pouco complicado para quem não teve nenhuma base. Desisti, ficando um bom tempo longe.

Em 2008, conheci o CCS, quebrei muito a cabeça com ele e quase nenhum programa, rodava no Isis. Mesmo assim, não deixei de tentar. Investi em vários livros em português, que hoje posso afirmar com certeza que não são mais do que um curso básico de C e alguns exemplos (esses sim "bugados"!) vindos do help do próprio compilador (quanto desperdicio de dinheiro).

Parei novamente, quando no fim de 2009, resolvi tentar mais uma vez. Neste tempo meus conhecimentos de lógica e linguagem C, já tinham sido alimentados pela faculdade.
Por aí, entra o mikroC. No começo, foi dificil, pois os comandos do CCS são diferentes (vale lembrar que lógica é lógica e C é C). Umas buscas na internet, exemplos, e simulações quase em tempo real no Isis, me animaram.

O primeiro programa, rodou perfeito tanto no Isis quanto no protoboard. Foi então que resolvi comprar uma apostila sobre o dito compilador e programação para pic.

O compilador cheio de bibliotecas prontas (isto nos deixa mal acostumados), facilita muito. Mas surgiram os problemas. Um pic ou qualquer outro que seja, é cheio de recursos como o professor minilathe esclareceu. É como entrar em uma fabrica enorme sozinhos e ter que colocar ela pre funcionar sem a ajuda de ninguém (veja o "trampo"! e ainda pra quem nunca teve contato! mas é bem por aí).

Até este ponto, saber o asm, lhe dá o profundo conhecimento do hardware à ser trabalhado, e facilita sua vida com o C depois. Afirmo isto, pois tenho amigos que programam em asm, e a convivencia nos ensina muito, mas não é o meu caso.

Certa vez um colega disse que para usar de boa maneira o pic, seria preciso ler e entender o datasheet. Não raciocinei na hora, mas hoje com certeza esta leitura lhe abre as portas afim de lhe mostrar o rumo para uma programação, talvez não à mais rápida em processamento, mas eficiente. O datasheet, tem seus inconvenientes, muitas vezes é confuso.

No site da mikroe, não tem muito tempo, disponibilizaram gratuitamente (sendo gratuito, não é propaganda!) e com mais de 100 paginas, um livro online que mostra este lado de como é o pic (o modelo escolhido foi o 16F877) por dentro e sua programação em asm. Ele assemelha-se à um gigante datasheet, com imagens que mudam totalmente a forma de ver os perifericos, interrupções, etc. Este livro aliado à linguagem C, afirmo me incentivou e muito.

Que o professor minilathe, nos esclareça, mas interrupções em um pic, sempre doi no calcanhar de qualquer um. Foi com o mikroC que pude fazer a primeira e perfeita simulação no isis e protoboard, ele não é perfeito, tem lá seus bugs, mas com um pouco de lógica é possivel resolver certos problemas.

Quanto um pic ser cheio de recursos ou qual é o melhor para iniciar, cabe ao programador ter em mente o que deseja ser realizada na tarefa e escolher um que será capaz de executa-las, atingindo suas expectativas. Um Pic16f628a é barato e fácil de encontrar, sendo o mais comum para iniciantes. Outra dica é o 16F88, que apesar de 18 pinos e muito parecido com o 628A, tem conversor AD, porém não muito comum.

Não sou programador de pic, estou iniciando. Fico satisfeito por encontrar a ferramenta adequada ao aprendizado, e mais ainda em poder transmitir aos membros do forum. Como disseram cada qual sua opinião, esta é a minha.

Grande abraço à todos.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Iniciando programação asm em PIC
« Resposta #39 Online: 21 de Janeiro de 2010, 19:11 »
Betoni,

Um conselho: acho que as suas contribuições são pertinentes, mas note que a mensagem que voce respondeu tem mais de 6 meses, não é usual esse tipo de procedimento, normalmente as conversas e discussões são em datas próximas (acho que 1 semana / 15 dias no máximo).

Provavelmente a sua resposta não terá contribuído muito com as pessoas que estavam discutindo um tema. Muitas discussões são relativas a resolução de um problema com "data de vencimento", a pessoa que perguntou ou comentou pode nem estar mais acessando o Forum.... :(   é como as coisas funcionam....
 
De qualquer modo, as interrupções por um lado são dificeis de entender, mas são ferramentas poderosas. Mas é como voce falou, é necessário entender a arquitetura do processador para poder tirar proveito de todas as suas facilidades (conversor A/D, USART, saída PWM, contadores, memória EEPROM, interface I2C, interface USB,...).

Um livro muito interessante, e em português: "Microcontroladores PIC18 - Aprenda a Programar em Linguagem C", do Alberto Noburo, Editora Érica. Aborda o PIC18F4550, os conceitos podem ser extendidos para o PIC18F2550. Abrange o acesso a todos os periféricos deste microcontrolador em linguagem C (EEPROM, USB, USART, Memória RAM extendida, I2C, WDT, Interrupção, SPI, acesso a memórias SD, ...), usando compilador C gratuito da Microchip. Eu andei usando e gostei....
« Última modificação: 21 de Janeiro de 2010, 19:23 por minilathe »

Offline Blackmore

  • CNCMASTER
  • ******
  • Posts: 1568
  • Sexo: Masculino
  • Profissão: Projetista Mecânico/Automação
Re: Iniciando programação asm em PIC
« Resposta #40 Online: 24 de Janeiro de 2010, 01:45 »
minilathe

Mestre, acho que alguns dos ultimos posts deste tópico são uma ótima discussão, e caberia tranquilamente em outro tópico (caso os moderadores vejam, fica a dica para separar os ultimos posts em um novo topico !!).
Tu fez a indicação do livro de programação em C18, poxa estou na "sede" de comprar este livro (recomenda alguma loja que esteja com o preço mais em conta?)
Eu já utilizo o CCS a uns 2 anos, desde que comecei a faculdade, e recentemente fiz um upgrade para uma versão mais atual, quero fazer algum tipo de trabalho ou estudo com comunicação USB, e fazer o supervisório no pc tb!!
O uso de interrupções é bacana e muitas vezes necessários, mas eu não consigo entender como que algumas funcionam, por exemplo a interrupção para comunicação serial, interrupção para AD ...
Mas estou com vontade de conhecer outros compiladores, o C18 (Microchip) é um dos eleitos e o MikroC tb, porém não fui muito feliz com este ultimo, ele instala mas não compila em minha máquina, ainda não descobri o por quê, vou deixar ele dormindo um pouco e depois mexo de novo com ele.

abrax!

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderadores
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Iniciando programação asm em PIC
« Resposta #41 Online: 24 de Janeiro de 2010, 09:33 »
Blackmore,

Tu fez a indicação do livro de programação em C18, poxa estou na "sede" de comprar este livro (recomenda alguma loja que esteja com o preço mais em conta?)
Eu já utilizo o CCS a uns 2 anos, desde que comecei a faculdade, e recentemente fiz um upgrade para uma versão mais atual, quero fazer algum tipo de trabalho ou estudo com comunicação USB, e fazer o supervisório no pc tb!!
O uso de interrupções é bacana e muitas vezes necessários, mas eu não consigo entender como que algumas funcionam, por exemplo a interrupção para comunicação serial, interrupção para AD ...
Mas estou com vontade de conhecer outros compiladores, o C18 (Microchip) é um dos eleitos e o MikroC tb, porém não fui muito feliz com este ultimo, ele instala mas não compila em minha máquina, ainda não descobri o por quê, vou deixar ele dormindo um pouco e depois mexo de novo com ele.

Eu comprei na Saraiva, em Sampa, também achei caro, mas como eu tb precisava de uma referência rápida (estou cursando doutorado) e o livro ajudou muito... Este livro se baseia bastante, e se parece, com a documentação da Microchip (que eu consultei em paralelo), mas nem seria necessário consultar. Mas, o livro vai um pouco além, tem alguns exemplos e o autor conseguiu organizar e abranger todos os recursos do PIC18F4550 num volume só.

Tenho usado o C18, da Microchip, e não tenho do que reclamar  :)

Meu projeto, com PIC18F2550 usava Ethernet / TCP-IP e precisava processar mensagens XML e consegui trabalhar com um buffer de RAM de 1Kbyte (há 2KBytes no PIC18F2550), funcionou muito bem. Usei muitas instruções de cópia, escrita e leitura da RAM extendida e a USART.

O C18 é usado dentro do IDE da MIcrochip e pode usar o simulador dentro dele, muito prático, dá até para simular a USART, misturar assembler e C...
« Última modificação: 24 de Janeiro de 2010, 09:36 por minilathe »

 

/** * */