Passer de PIC à AVR [fermé]

13

Je travaille avec PIC16 et PIC18 depuis plus de trois ans maintenant et j'aimerais également connaître AVR. Je n'ai pas de projet spécifique en tête, mais j'aimerais essayer avec les différentes architectures. J'aimerais obtenir un rapport de compatibilité sur PIC et AVR.

Logiciel uC
Je connais Assembly et C pour PIC16 et PIC18. En quoi les variantes Assembly et C des microcontrôleurs AVR diffèrent-elles des variantes PIC? Y a-t-il beaucoup de différences?

Logiciel PC
De quel logiciel aurais-je besoin pour compiler et assembler mes programmes pour puces AVR? Est-ce gratuit et où puis-je le télécharger?

Matériel de programmation
J'ai utilisé le Wisp648 de VOTI pour programmer les PIC, mais cette carte ne peut pas programmer les AVR. Dois-je acheter un programmeur ou existe-t-il des circuits disponibles sur le Web que je peux créer moi-même?

Matériel uC
Pour les PIC, j'ai beaucoup utilisé le PIC18F4620 . Je recherche un AVR avec des fonctionnalités similaires. Les fonctionnalités que j'aime sont:

  • Oscillateur interne
  • Minuteries
  • Version 5V et 3,3V
  • ADC
  • MSSP avec prise en charge I2C et SPI
  • (E) USART
  • PWM
  • Beaucoup de broches d'E / S
  • > = 32 Ko de mémoire de programme,> = 2 Ko de RAM
  • Forfait DIP

Quelle puce AVR aurait les mêmes fonctionnalités? Le package est un deal breaker, je veux vraiment DIP, PDIP ou SPDIP. Que serait un AVR avec des fonctionnalités comparables?

Variantes SPI et I2C
On m'a dit que Microchip a ses propres variantes sur le protocole SPI et I2C. J'utilise souvent des dispositifs esclaves SPI et I2C à partir de micropuces en combinaison avec un PIC. Serais-je capable d'utiliser ces puces (23K256, RTC, ENC28J60, ...), en combinaison avec un AVR? En plus de cela, serait-il possible de lier un AVR et une puce PIC en utilisant I2C ou SPI?


la source
@LeonHeller désolé, je n'ai pas été clair, je n'ai pas de projet spécifique en tête, mais j'aimerais jouer un peu pour connaître les différentes architectures.
5
Cette question est trop large et ne convient pas à notre format Q + A, mais en général, vous lisez les fiches techniques des processeurs que vous envisagez d'utiliser. Je ne sais pas à quoi ça ressemble du côté obscur, mais Atmel a probablement un guide de sélection comme Microchip. Ces entreprises ont trop de micros à garder à l'esprit. J'ai réalisé plus de 100 projets PIC en 15 ans professionnellement, mais je consulte toujours le guide de sélection lors de la sélection d'un nouveau.
Olin Lathrop
1
Quels types d'instructions définissent l'utilisation d'AVR, les outils de développement, etc., sont faciles à rechercher. Ces choses sont bien prises en charge, comme PIC. Je recommande cette vidéo divertissante: youtube.com/watch?v=DBftApUQ8QI
Kaz
Jetez un œil à electronics.stackexchange.com/a/66163/8627 et changez Linux pour Windows. La chaîne d'outils est en grande partie la même. Pas identique, mais plein de choses pour Google.
jippie
@jippie nice! Enregistré dans mon signet lorsque mes échantillons sont arrivés :)

Réponses:

8

le logiciel d'uC

Les jeux d'instructions PIC et AVR sont similaires, mais je ne commencerais pas à programmer un AVR en assembleur. Programme en C, avec Atmel Studio. Il est livré avec la version AVR de gcc, et possède un très bon démonteur qui vous montre la ligne de C que vous avez écrite, et en dessous, les instructions d'assemblage résultantes, très pratiques. Je téléchargerais également WinAVR .

Logiciel PC

Utilisez Atmel Studio . Ne vous embêtez pas avec Eclipse, le bloc-notes du programmeur ou tout autre IDE aléatoire utilisé par les gens. Atmel Studio est basé sur Visual Studio, dispose de toutes sortes de plug-ins disponibles auprès d'Atmel et intègre un bon simulateur.

Matériel de programmation

Il y a beaucoup de programmeurs AVR bon marché, comme le Bus Pirate, mais obtenez un Atmel ICSP . Cela vaut vraiment la peine si vous avez l'intention de faire plus d'un projet AVR. Il utilise l'USB et est contrôlable depuis Atmel Studio.

matériel uC

Il existe un outil de sélection , mais en général, le matériel typique AtMega bas de gamme est:

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

Aller à des puces plus performantes vous permettra d'acheter plus de minuteries et de PWM. La quantité de mémoire flash et de mémoire SRAM dont vous disposez dépend de la puce concernée. La plupart des pièces AtMega sont disponibles en PDIP, le nombre de broches très élevé étant QFP.

Variantes SPI et I2C

Il est possible d'utiliser des appareils MCP I2C (TWI pour AVR) et SPI avec des AVC uC. Vous devez vraiment lire attentivement les sections SPI et TWI de la fiche technique AVR, ne sautez pas une ligne. Il existe plusieurs registres de contrôle pour l'ordre des données, la polarité d'horloge, etc. pour chaque interface. Tout est présenté dans les fiches techniques et est très lisible. Il ne serait pas difficile de lier un AVR et un PIC. Il vous suffirait de jouer avec les modes SPI ou TWI jusqu'à ce que vous établissiez la communication.

Matt Young
la source
3
ATtiny est le petit frère d'ATmega. Ils sont très similaires quand il s'agit de les programmer. J'ai «porté» un logiciel de méga à minuscule en changeant simplement le type de pièce dans le Makefile.
jippie
@CamilStaps jippie fait un bon point. Je ne sais pas s'il s'agit d'une similitude avec PIC, mais les processeurs AVR partagent pour la plupart des noms de registre et des ordres de bits. Il y a quelques exceptions, comme un processeur plus performant peut casser un registre de contrôle en deux parties. Les fiches techniques ont toutes une section de description de registre dans chaque chapitre qui facilite la comparaison.
Matt Young
Les PIC font de même, au moins dans une famille (PIC16, PIC18, ..). Merci pour l'astuce (@jippie)!
Ceci est une excellente explication. Mes puces AVR préférées sont ATmega328p et ATtiny24. Les autres lignes communes sont les tinyx5 et tiny2313. Ils sont tous disponibles en DIP et ont tous la même interface de programmation SPI: ISP. Pour un démarrage rapide et bon marché, essayez ce programmeur USB de Sparkfun: sparkfun.com/products/9825 Il convient également de mentionner un ensemble de programmes populaires pour Windows connu sous le nom de WinAVR: winavr.sourceforge.net Vous n'avez besoin d'aucune sorte de développement carte, juste une alimentation, des bouchons de dérivation et peut-être un cristal.
Kurt E. Clothier
11
  • C sera le même avec quelques petites différences de compilation. L'assemblage sera assez différent car c'est une architecture différente. Je conseille d'aller avec C, et peut-être de ramasser suffisamment d'assemblage pour pouvoir aligner certaines routines importantes.

  • Pour l'IDE et le programmeur, Atmel propose des offres similaires à Microchip, il suffit de jeter un œil à leur site Web, de télécharger l'IDE gratuit et de choisir un programmeur.

  • Une puce similaire à un 18F pourrait être quelque chose comme l'ATMega328 (celui utilisé dans Arduinos), je crois qu'ils ont des versions de package DIP.

  • Oui, I2C et SPI devraient fonctionner de la même manière. La liaison d'un AVR et d'un PIC ne devrait pas poser de problème.

Avis de non-responsabilité - Je n'ai pas utilisé d'AVR depuis très longtemps. J'utilise principalement des PIC et des ARM de nos jours, mais je n'ai jamais eu de problème de connexion avec SPI / I2C dans le passé, ayant fréquemment utilisé SPI pour se connecter, par exemple, PIC / Atmel EEPROM / Cortex-M3 / FPGA. SPI est un protocole très basique dont tout micro moderne devrait être capable en matériel.
I2C est un peu plus complexe. Je ne me souviens pas de l'histoire des licences / noms (par exemple, 2 fils, I2C, SMBus) du haut de ma tête, mais la plupart des périphériques sont compatibles au niveau de base pour autant que je sache. Lisez les pages Wiki pour plus de détails.

Oli Glaser
la source
TWI (interface à deux fils) d'Atmel est compatible avec I2C. I2C peut être concédé sous licence par NXP (anciennement la technologie Philips), mais Atmel a réussi à contourner les frais de licence.
jippie
11

Je travaille aussi bien sur PIC et AVR (et d'autres aussi).

J'aime les AVR en grande partie à cause de l' AVR-libc . Il est une bibliothèque intégrée décent qui est open source et assez bien documenté ( CONTRAIREMENT de plib de Microchip, mais plib n'ont la source complète, que j'apprécie vraiment). Les AVR utilisent régulièrement les anciens gcc et gdb, ce qui signifie qu'aucun IDE idiot ne me gêne. Les mêmes outils fonctionnent sur Windows, OSX et Linux, et je n'ai pas besoin d'un IDE de 600 Mo + avec Java et Netbeans ou Eclipse pour trébucher ou polluer mon arbre source avec leurs propres ordures.

La programmation des AVR se fait généralement via ISP ou JTAG (il y avait une question récente à ce sujet), et du point de vue de la programmation, ce n'est vraiment pas très différent de tout autre micro.

D'un point de vue personnel, j'ai grandi jusqu'à détester les fiches techniques et la numérotation des pièces de Microchip. J'ai coupé mes dents sur la conception intégrée avec Microchip et je les aimais depuis très longtemps, mais quand je cherche un micro ces jours-ci, j'ai tendance à commencer avec Atmel, bien qu'ils ne soient pas sans défauts aussi. (SAM-BA est une ordure pour leurs pièces SAM, et j'ai également eu des problèmes avec leur support d'usine.)

En ce qui concerne l'utilisation ... essayez les deux, c'est comme la différence entre Coke et Pepsi. Ils sont très, très similaires et le choix se résume généralement au prix et aux outils que vous préférez utiliser.

akohlsmith
la source