PIC18F4550: gravar código pelo USB


#1

Fala, pessoal
primeiro post aqui, desculpa se já haviam falado algo sobre isso por aqui, tentei pesquisar mas não achei nada…

Por acaso, esse PIC permite fazer gravação direto pela sua interface USB? ou apenas pela serial?
E alguém tem um material ensinando a configurar os bits de memória dele? só acho um material muito técnico… aí fico muito confuso com as coisas…kk

vlw!


#2

Gravação de PIC você faz com o gravador PICKIT (incluíndo contrafeitos e DIY), no entanto, é perfeitamente possível enviar o código pelo USB se você programar, compilar e gravar um bootloader, ou seja, mesmo que você conseguisse enviar o código pelo USB, você teria que subir um bootloader com um gravador ordinário.


#3

puts… era isso que eu tinha medo… no caso isso é gravado através de que tipo de comunicação? Serial? rs232? ou algo da própria Microchip?

No caso, esse gravador seria o mais em conta memso, certo?


#4

Esse gravador é compatível com este MCU, mas requer uma atualização para isso. Em geral esses gravadores gravam por serial.

O USB disponível no MCU é usado para outros fins, por exemplo, gravar arquivos em um cartão SD, mas pode ser utilizado para enviar o programa desde que o MCU seja instruído para isso através de um “bootloader”.

O bootloader para gravação via USB fica armazenado no início da memória disponível para programas (PROGMEM/não sei se é chamado assim no PIC) e é o primeiro a executar, em primeiro lugar ele checa se há alguma coisa gravada no setor de memória imediatamente posterior ao fim do bootloader, se houver, ele passa o controle para o programa, caso contrário ele fica “esperando” que algum dado seja enviado pela USB, se algum dado for enviado pelo USB ele o gravará no setor imediatamente posterior ao fim do bootloader e reiniciará o MCU, da mesma forma ele pode receber um comando para apagar o programa, o que fará com que ele apague toda a memória disponível para programas logo após o fim do bootloader.


#5

Interessante, no caso, aqueles conversores serial->USB (ou até o próprio Arduino…) são capazes de fazer essa gravação?


#6

O chip FTDI que era responsável pela conversão de usb-serial nos antigos modelos do Arduino, era necessário porque o ATMega328 não dispõe de uma porta USB, ele tem apenas serial, logo, para que você pudesse enviar os programas via USB era necessário mais um chip, que recebesse os dados do USB e convertesse para serial e, só então enviasse para gravação no MCU.

Nos novos modelos o chip FTDI (que precisa de driver) foi substituído por um outro MCU: o ATMega16U2, que dispõe de USB, mas da mesma forma dos outros, esse USB é para ser utilizado para objetivos diversos e não como “gravador”, para resolver esse problema, a equipe do Arduino programou um “bootloader” e gravou no ATMega16U2, ele recebe o programa pelo USB e envia para o ATMega328.

O chip adicional em si, não é responsável por fazer a gravação, ele apenas converte o fluxo de dados para o formato específico para a gravação e um bootloader previamente gravado no ATMega328 faz a gravação.

Já o ATMega16U2, recebe os dados pela sua porta USB e com um bootloader previamente gravado por serial(com um gravador de AVR) pela equipe Arduino, converte e grava esses dados (o programa) no ATMega328 como se fosse um gravador serial.


#7

pelo jeito vou ter que gastar uma grana preta só pra conseguir fazer essa gravação ¬¬
ou este método pode ser “portado” para os 18f’s e pode ser feito com o chip “virgem”?


#8

Se o que você tem em mãos é apenas um MCU limpo, você vai precisar de um gravador.

O ideal para quem está começando é comprar um kit de desenvolvimento ou uma placa de desenvolvimento que já vem com esse tipo de problema resolvido (como o Arduino, por exemplo) e não só o MCU limpo, você ganhou/achou esse microcontrolador? Não entendo porque adquiriu só o MCU…


#9

hehe desculpa a demora… não vi que tinha resposta…

pior que eu comprei na ignorância mesmo… fui comprar um PIC no site da FilipeFlop, só tinha esse chip disponível… até ía comprar o gravador, mas era muito caro para o meu orçamento, dei uma googleada sobre o MCU, uma galera falando bem dele até, mas não reparei nessa parte da obrigatoriedade do uso do gravador…
pelo menos parece que tem o gravador pra ele aonde eu estudo… uma grana a menos que vou gastar \o/


#10

Se tem acesso ao gravador, grave um bootloader e está resolvido.


#11

Amigo, eu fiz uma plaquinha com PIC18F4550 que utiliza bootloader.

O review dela pode ser encontrado aqui:

http://www.embarcados.com.br/μstart-for-pic-placa-de-desenvolvimento-para-pic/

O Bootloader e o software para descarregamento foi desenvolvido pelo Tiago, e pode ser encontrado aqui:

Abraço


#12

Quanto ao gravador, ainda tenho que confirmar se ele é compartivel com o meu PIC… Mas já to dando uma fuçada nos bootloaders que temos no google…

bacana a placa, eu tava querendo, mais no futuro, montar uma placa para desenvolvimento seguindo essa ideia de juntar os pinos “machos” com os headers(?)…
quanto ao bootloader, eu tinha até achado ele, me parece ser o melhor até agora… compartivel com W8, uma modificação que facilita a gravação… vou dar uma estudada nele ainda…


#13

Olá, vai a tentativa de fazer um síntese do que você precisa para começar a programar um pic usando bootloader.

O que é o bootloader?
Um firmware gravado no PIC que associado a um programa no computador PC possibilita a transferência dos arquivos binarios (.HEX) gerados pela sua ferramenta de desenvolvimento (compilador, linker) sem a necessidade de usar um dispositivo como programador no caso do PIC os mais conhecidos são o PICKIT2 e PICKIT3

O bootloader já vem gravado no PIC quando eu compro?
Não, o firmware bootloader não vem gravado no PIC, até porque existem vários tipos, alguns desenvolvidos pela MICROCHIP, outros por fabricantes de compiladores e mesmo desenvolvedores independentes.

O que preciso para gravar o bootloader?
O firmware, isto é o arquivo .HEX do bootloader de sua escolha e um programador como o PICKIT3. Depois de gravado você não precisa mais do programador

Quais os tipos de bootloader e onde encontro eles?
No caso particular do PIC18F4550 eu indicaria o que é fornecido pela Microchip (links abaixo). Com esse bootloader o firmware que você criar é transferido pela USB já que o PIC18F4550 já tem o hardware para USB. Existem alguns outros bootloaders (link abaixo) que fazem a comunicação pela interface serial. Nesse caso você precisa usar como hardware adicional um adaptar serial (lado PIC) para USB (lado computador) como FTDI.

Considerações gerais.
Se você pensa em utilizar microcontroladores PIC, vale a pena investir no programador PICKIT3, o mais recente no mercado, não é tão caro e investimento em ferramentas sempre vale a pena. Além de gravar o bootloader pode ser usado com outros PIC´s que não tem suporte a bootloader.
O PIC18F4550 com seus 40 pinos fornece um bocado de recursos. No momento estou utilizando o PIC18F14K50 de 18 pinos que custa apenas 12 reais e precisa basicamente um cristal e fonte de 3 a 5 volts para funcionar. Com o bootloader tenho um sistema enxuto e barato para desenvolvimento.
Falando em desenvolvimento você tem várias opções desde o MPLABX com o compilador XC8 fornecido pela MIcrochip, Mikroc, CCS, SDCC, e até o Pinguino um ambiente no estilo Arduino.
É isso, boa sorte nos seus experimentos e estou a disposição para dúvidas.

Links

http://www.microchip.com/pagehandler/en-us/devtools/mla/home.html

http://www.picprojects.net/usbbootloader/

http://www.microchip.com/forums/m424874.aspx

http://wiki.pinguino.cc/index.php/PIC18F2550_Pinguino