Mudando de PIC para AVR [fechado]


13

Trabalho com PIC16 e PIC18s há mais de três anos e gostaria de conhecer o AVR também. Não tenho nenhum projeto específico em mente, mas gostaria de experimentar as diferentes arquiteturas. Eu gostaria de obter um relatório de compatibilidade no PIC e AVR.

Software da uC
Estou familiarizado com Assembly e C para PIC16 e PIC18. Como as variantes Assembly e C para microcontroladores AVR variam das variantes PIC? Existem muitas diferenças?

Software do PC
Que software eu precisaria para compilar e montar meus programas para chips AVR? É gratuito e onde posso baixá-lo?

Hardware de programação
Eu usei o Wisp648 da VOTI para programar PICs, mas essa placa não pode programar AVRs. Preciso comprar um programador ou existem circuitos disponíveis na Web que eu possa construir?

Hardware do uC
Para PICs, usei muito o PIC18F4620 . Estou procurando um AVR com recursos semelhantes. Os recursos que eu gosto são:

  • Oscilador Interno
  • Temporizadores
  • Versão 5V e 3.3V
  • ADC
  • MSSP com suporte I2C e SPI
  • (E) USART
  • PWM
  • Muitos pinos de E / S
  • > = 32kB de memória de programa,> = 2kB de RAM
  • Pacote DIP

Qual chip AVR teria os mesmos recursos? O pacote é um disjuntor, eu realmente quero DIP, PDIP ou SPDIP. O que seria um AVR com recursos comparáveis?

Variantes SPI e I2C
Foi-me dito que o Microchip possui suas próprias variantes no protocolo SPI e I2C. Costumo usar dispositivos escravos SPI e I2C do microchip em combinação com um PIC. Eu seria capaz de usar esses chips (23K256, RTC, ENC28J60, ...), em combinação com um AVR? Além disso, seria possível vincular um chip AVR e PIC usando I2C ou SPI?


@LeonHeller, desculpe, eu não estava claro, não tenho um projeto específico em mente, mas gostaria de brincar um pouco para conhecer a arquitetura diferente.

5
Esta é uma pergunta muito ampla e não é adequada para o nosso formato Q + A, mas em geral você lê as folhas de dados dos processadores que está pensando em usar. Não sei como é o lado escuro, mas a Atmel provavelmente tem um guia de seleção como o Microchip. Essas empresas têm muitos micros para qualquer um ter em mente. Fiz mais de 100 projetos PIC em 15 anos profissionalmente, mas ainda assim consulte o guia do seletor ao escolher um novo.
amigos estão dizendo

1
Que tipo de conjunto de instruções o uso do AVR, as ferramentas de desenvolvimento e assim por diante são facilmente pesquisadas. Essas coisas são bem suportadas, como o PIC. Eu recomendo este vídeo divertido: youtube.com/watch?v=DBftApUQ8QI
Kaz

Dê uma olhada em electronics.stackexchange.com/a/66163/8627 e altere o Linux para Windows. O conjunto de ferramentas é basicamente o mesmo. Não é idêntico, mas cheio de coisas para o Google.
jippie

@jippie nice! Salvo no meu marcador para quando minhas amostras chegarem :)

Respostas:


8

software da uC

Os conjuntos de instruções PIC e AVR são semelhantes, mas eu não começaria a programar um AVR em assembly. Programa em C, com Atmel Studio. Ele é fornecido com a versão AVR do gcc e possui um bom desmontador que mostra a linha de C que você escreveu e, por baixo, as instruções de montagem resultantes, muito úteis. Eu também baixaria o WinAVR .

Software para PC

Use o Atmel Studio . Não se preocupe com o Eclipse, o Bloco de Notas do Programador ou qualquer outro IDE aleatório que as pessoas usem. O Atmel Studio é baseado no Visual Studio, possui todos os tipos de plug-ins disponíveis no Atmel e possui um bom simulador.

Hardware de programação

Existem muitos programadores baratos de AVR, como o Bus Pirate, mas obtenha um ICSP da Atmel . Vale totalmente a pena a despesa extra se você pretende fazer mais de um projeto AVR. Ele usa USB e é controlável a partir do Atmel Studio.

hardware do uC

Existe uma ferramenta seletora , mas, em geral, o hardware típico do AtMega de baixo custo é:

Internal Oscillator (8 MHz)
3 Timers
2.7-5.5V Supply range
8-channel multiplexed ADC
I2C and SPI support
USART
2 PWMs that work in conjunction with the 8 bit timers

Ir para chips de melhor desempenho comprará mais temporizadores e PWMs. A quantidade de memória flash e SRAM disponíveis depende do chip específico. A maioria das peças de peças da AtMega está disponível no PDIP, com o número realmente alto de pinos sendo QFP.

Variantes SPI e I2C

É possível usar dispositivos MCP I2C (TWI for AVR) e SPI com uRs AVR. Você realmente precisa ler as seções SPI e TWI da folha de dados do AVR com atenção, não pule uma linha. Existem vários registros de controle para ordem de dados, polaridade do relógio, etc. para cada interface. Está tudo disposto nas folhas de dados e é muito legível. Não seria difícil vincular um AVR e PIC. Você precisaria apenas jogar com os modos SPI ou TWI até estabelecer a comunicação.


3
ATtiny é o irmão menor do ATmega. Eles são muito parecidos quando se trata de programá-los. Eu 'portado' o software de mega para pequeno, apenas alterando o tipo de peça no Makefile.
jippie

@CamilStaps jippie faz um bom argumento. Não sei se essa é uma semelhança com o PIC, mas os processadores AVR, na maioria das vezes, compartilham nomes de registradores e pedidos de bits. Existem algumas exceções, como um processador mais capaz pode quebrar um registro de controle em duas partes. Todas as folhas de dados têm uma seção de descrição do registro em cada capítulo que facilita a comparação.
Matt Young

Os PICs também funcionam, pelo menos em uma família (PIC16, PIC18, ..). Obrigado pela dica (@jippie)!

Esta é uma ótima explicação. Meus chips AVR favoritos são ATmega328p e ATtiny24. Outras linhas comuns são tinyx5 e tiny2313. Estão todos disponíveis no DIP e possuem exatamente a mesma interface de programação baseada em SPI: ISP. Para um início rápido e barato, tente este programador USB da Sparkfun: sparkfun.com/products/9825 Também vale mencionar um pacote de programa popular para Windows conhecido como WinAVR: winavr.sourceforge.net Você não precisa de nenhum desenvolvimento placa, apenas uma fonte de alimentação, capas de derivação e talvez um cristal.
Kurt E. Clothier

11
  • C será o mesmo com algumas pequenas diferenças no compilador. A montagem será bem diferente, pois é uma arquitetura diferente. Aconselho ir com C, e talvez pegar montagem suficiente para poder alinhar algumas rotinas importantes.

  • Para o IDE e o programador, a Atmel oferece ofertas semelhantes ao Microchip, basta dar uma olhada no site, baixar o IDE gratuito e escolher um programador.

  • Um chip semelhante a um 18F pode ser algo como o ATMega328 (o usado no Arduinos). Acredito que eles tenham versões de pacotes DIP.

  • Sim, I2C e SPI devem funcionar da mesma maneira. Vincular um AVR e PIC não deve ser problema.

Isenção de responsabilidade - eu não uso um AVR há muito tempo. Atualmente, uso principalmente PICs e ARMs, mas nunca tive problemas ao conectar algo com o SPI / I2C no passado, depois de usar o SPI com frequência para conectar-se entre, por exemplo, PIC / Atmel EEPROM / Cortex-M3 / FPGA. O SPI é um protocolo muito básico do qual praticamente qualquer micro moderno deve ser capaz de hardware.
I2C é um pouco mais complexo. Não me lembro da história do licenciamento / nomeação (por exemplo, 2 fios, I2C, SMBus) no topo da minha cabeça, mas a maioria dos periféricos é compatível no nível básico, tanto quanto eu saiba. Leia as páginas do Wiki para obter mais detalhes.


O TWI (interface de dois fios) da Atmel é compatível com I2C. O I2C pode ser licenciado da NXP (antiga tecnologia da Philips), mas a Atmel conseguiu contornar a taxa de licença.
jippie

11

Trabalho igualmente bem no PIC e no AVR (e outros também).

Eu gosto de AVRs principalmente por causa do AVR-libc . É uma biblioteca embutida decente, de código aberto e razoavelmente bem documentada ( UNLIKE plib da Microchip, mas plib tem fonte completo, o que eu realmente aprecio). Os AVRs usam gcc e gdb antigos e regulares, o que significa que nenhum IDE idiota fica no meu caminho. As mesmas ferramentas funcionam no Windows, OSX e Linux, e eu não preciso de um IDE de 600 MB + com Java e Netbeans ou Eclipse para tropeçar ou poluir minha árvore de origem com seu próprio lixo.

A programação de AVRs geralmente é feita via ISP ou JTAG (houve uma pergunta recente sobre isso) e, do ponto de vista da programação, não é realmente muito diferente de qualquer outro micro.

De uma perspectiva pessoal, passei a não gostar das folhas de dados e da numeração de peças do Microchip. Eu cortei meus dentes no design incorporado com o Microchip e os adorei por muito, muito tempo, mas quando procuro um micro hoje em dia, começo a usar o Atmel, embora eles também não faltem. (O SAM-BA é lixo para as peças do SAM, e também tive alguns problemas com o suporte da fábrica.)

Quanto a usar ... tente os dois, é como a diferença entre Coca-Cola e Pepsi. Eles são muito, muito parecidos e a escolha geralmente se resume ao preço e às ferramentas que você prefere usar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.