Umschalten von PIC auf AVR [geschlossen]


13

Ich arbeite seit über drei Jahren mit PIC16 und PIC18 und möchte AVR auch kennenlernen. Ich habe kein konkretes Projekt im Sinn, möchte aber die verschiedenen Architekturen ausprobieren. Ich möchte einen Kompatibilitätsbericht zu PIC und AVR erhalten.

uCs Software
Ich kenne Assembly und C für PIC16 und PIC18. Wie unterscheiden sich die Assembly- und C-Varianten für AVR-Mikrocontroller von den PIC-Varianten? Gibt es viele Unterschiede?

PC-Software
Welche Software benötige ich, um meine Programme für AVR-Chips zu kompilieren und zusammenzustellen? Ist es kostenlos und wo kann ich es herunterladen?

Programmierhardware
Ich habe VOTIs Wisp648 zum Programmieren von PICs verwendet , aber dieses Board kann keine AVRs programmieren. Muss ich einen Programmierer kaufen oder gibt es im Internet Schaltungen, die ich selbst bauen kann?

uC's Hardware
Für PICs habe ich den PIC18F4620 viel benutzt. Ich suche einen AVR mit ähnlichen Funktionen. Die Funktionen, die ich mag, sind:

  • Interner Oszillator
  • Timer
  • 5V und 3.3V Version
  • ADC
  • MSSP mit I2C- und SPI-Unterstützung
  • (E) USART
  • PWM
  • Viele I / O-Pins
  • > = 32kB Programmspeicher,> = 2kB RAM
  • DIP-Paket

Welcher AVR-Chip hätte die gleichen Eigenschaften? Das Paket ist ein Deal Breaker, ich möchte wirklich DIP, PDIP oder SPDIP. Was wäre ein AVR mit vergleichbaren Funktionen?

SPI- und I2C-Varianten
Mir wurde mitgeteilt, dass Microchip eigene Varianten für das SPI- und I2C-Protokoll hat. Ich verwende oft SPI- und I2C-Slave-Geräte von Microchip in Kombination mit einem PIC. Kann ich diese Chips (23K256, RTC, ENC28J60, ...) in Kombination mit einem AVR verwenden? Wäre es darüber hinaus möglich, einen AVR und einen PIC-Chip über I2C oder SPI zu verbinden?


@LeonHeller sorry ich war mir nicht sicher, ich habe kein konkretes projekt vor, würde aber gerne ein wenig herumspielen, um die verschiedenen architekturen kennenzulernen.

5
Diese Frage ist zu weit gefasst und passt nicht zu unserem Q + A-Format. Im Allgemeinen lesen Sie jedoch die Datenblätter der Prozessoren, die Sie verwenden möchten. Ich weiß nicht, wie es auf der dunklen Seite aussieht, aber Atmel hat wahrscheinlich eine Auswahlhilfe wie Microchip. Diese Unternehmen haben zu viele Mikros, als dass sich irgendjemand etwas merken könnte. Ich habe über 15 Jahre lang weit über 100 PIC-Projekte professionell durchgeführt, aber immer noch die Auswahlhilfe zu Rate gezogen, wenn ich eine neue auswählte.
Olin Lathrop

1
Welche Art von Anweisungssatz AVR verwendet und Entwicklungswerkzeuge usw. sind leicht zu recherchieren. Diese Dinge werden gut unterstützt, wie PIC. Ich empfehle dieses unterhaltsame Video: youtube.com/watch?v=DBftApUQ8QI
Kaz

Schauen Sie sich electronics.stackexchange.com/a/66163/8627 an und ändern Sie Linux für Windows. Die Toolchain ist weitgehend identisch. Nicht identisch, aber voller Dinge für Google.
Hippie

@jippie schön! Gespeichert in meinem Lesezeichen für, wenn meine Proben angekommen sind :)

Antworten:


8

Software von uC

Die PIC- und AVR-Befehlssätze sind ähnlich, aber ich würde nicht damit beginnen, einen AVR in der Baugruppe zu programmieren. Programmieren Sie in C mit Atmel Studio. Es wird mit der AVR-Version von gcc geliefert und verfügt über einen wirklich guten Disassembler, der Ihnen die von Ihnen geschriebene C-Zeile und die daraus resultierenden Montageanleitungen zeigt. Sehr praktisch. Ich würde auch WinAVR herunterladen .

PC-Software

Verwenden Sie Atmel Studio . Kümmern Sie sich nicht um Eclipse, Programmer's Notepad oder andere zufällige IDEs. Atmel Studio basiert auf Visual Studio, verfügt über alle Arten von Plug-Ins von Atmel und hat einen guten eingebauten Simulator.

Programmierhardware

Es gibt viele billige AVR-Programmierer, wie den Bus Pirate, die sich jedoch eine Atmel ICSP zulegen . Wenn Sie mehr als ein AVR-Projekt durchführen möchten, lohnt sich der Mehraufwand. Es verwendet USB und kann von Atmel Studio aus gesteuert werden.

uC's Hardware

Es gibt ein Auswahlwerkzeug , aber im Allgemeinen, Low - End - AtMega typische Hardware:

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

Wenn Sie zu leistungsstärkeren Chips wechseln, erhalten Sie mehr Timer und PWMs. Wie viel Flash-Speicher und SRAM Sie zur Verfügung haben, hängt vom jeweiligen Chip ab. Die meisten der AtMega-Teile sind in PDIP erhältlich, wobei die wirklich hohe Pinanzahl QFP ist.

SPI- und I2C-Varianten

Es ist möglich, MCP I2C- (TWI for AVR) und SPI-Geräte mit AVR-uCs zu verwenden. Sie müssen die Abschnitte zu SPI und TWI des AVR-Datenblattes unbedingt sorgfältig lesen. Überspringen Sie keine Zeile. Es gibt mehrere Steuerregister für Datenreihenfolge, Taktpolarität usw. für jede Schnittstelle. Es ist alles in den Datenblättern aufgeführt und sehr gut lesbar. Es wäre nicht schwer, einen AVR und einen PIC zu verbinden. Sie müssen nur mit dem SPI- oder TWI-Modus spielen, bis Sie die Kommunikation hergestellt haben.


3
ATtiny ist der kleinere Bruder von ATmega. Sie sind sich sehr ähnlich, wenn es darum geht, sie zu programmieren. Ich habe Software von Mega auf Winzig portiert, indem ich nur den Teiletyp im Makefile geändert habe.
Hippie

@CamilStaps jippie macht einen guten Punkt. Ich weiß nicht, ob dies eine Ähnlichkeit mit PIC hat, aber AVR-Prozessoren teilen zum größten Teil Registernamen und Bitreihenfolgen. Es gibt einige Ausnahmen, wie ein leistungsfähigerer Prozessor ein Steuerregister in zwei Teile aufteilen kann. Die Datenblätter haben in jedem Kapitel einen Registerbeschreibungsabschnitt, der den Vergleich erleichtert.
Matt Young

PICs tun dies auch, zumindest in einer Familie (PIC16, PIC18, ..). Danke für den Tipp (@jippie)!

Dies ist eine großartige Erklärung. Meine Lieblings-AVR-Chips sind ATmega328p und ATtiny24. Andere gebräuchliche Leitungen sind die tinyx5 und tiny2313. Diese sind alle in DIP verfügbar und haben genau dieselbe SPI-basierte Programmierschnittstelle: ISP. Probieren Sie für einen günstigen Einstieg diesen USB-Programmierer von Sparkfun aus: sparkfun.com/products/9825 Erwähnenswert ist auch ein beliebtes Windows-Programmpaket namens WinAVR: winavr.sourceforge.net. Sie benötigen keinerlei Entwicklung Board, nur ein Netzteil, Bypass-Kappen und vielleicht ein Kristall.
Kurt E. Clothier

11
  • C wird mit einigen kleinen Compiler-Unterschieden gleich sein. Die Montage wird ganz anders sein, da es sich um eine andere Architektur handelt. Ich empfehle, mit C fortzufahren und vielleicht genügend Baugruppen aufzunehmen, um einige wichtige Routinen einarbeiten zu können.

  • Für die IDE und den Programmierer hat Atmel ähnliche Angebote wie Microchip. Schauen Sie sich einfach die Website an, laden Sie die kostenlose IDE herunter und wählen Sie einen Programmierer aus.

  • Ein ähnlicher Chip wie ein 18F könnte so etwas wie der ATMega328 sein (der in Arduinos verwendet wird). Ich glaube, sie haben DIP-Paketversionen.

  • Ja, I2C und SPI sollten genauso funktionieren. Die Verknüpfung von AVR und PIC sollte kein Problem sein.

Haftungsausschluss - Ich habe lange Zeit keinen AVR verwendet. Heutzutage verwende ich hauptsächlich PICs und ARMs, aber ich hatte in der Vergangenheit noch nie ein Problem mit der Verbindung von SPI / I2C, da ich häufig SPI für die Verbindung zwischen z. B. PIC / Atmel EEPROM / Cortex-M3 / FPGA verwendet habe. SPI ist ein sehr einfaches Protokoll, das so ziemlich jedes moderne Mikro in Hardware beherrschen sollte.
I2C ist etwas komplexer. Ich kann mich nicht an die Geschichte der Lizenzierung / Benennung (z. B. 2-Draht, I2C, SMBus) erinnern, aber die meisten Peripheriegeräte sind meines Wissens auf der Basisebene kompatibel. Lesen Sie die Wiki-Seiten für weitere Details.


Atmels TWI (Two Wire Interface) ist mit I2C kompatibel. I2C kann von NXP (ehemals Philips Techology) lizenziert werden, aber Atmel hat es geschafft, die Lizenzgebühr zu umgehen.
Hippie

11

Ich arbeite gleich gut mit PIC und AVR (und auch mit anderen).

Ich mag AVRs hauptsächlich wegen AVR-libc . Es ist eine anständige eingebettete Bibliothek, die Open Source ist und recht gut dokumentiert ist ( UNGLEICH Microchips Plib, aber Plib hat Full Source, was ich wirklich schätze). AVRs verwenden normale alte gcc und gdb, was bedeutet, dass mir keine idiotischen IDEs im Weg stehen. Dieselben Tools funktionieren unter Windows, OSX und Linux, und ich benötige keine 600-MB-IDE mit Java und Netbeans oder Eclipse, um meinen Quellbaum mit ihrem eigenen Müll zu überfluten oder zu verschmutzen.

Das Programmieren von AVRs erfolgt normalerweise über ISP oder JTAG (es gab kürzlich eine Frage dazu ), und vom Standpunkt der Programmierung aus unterscheidet es sich nicht wesentlich von jedem anderen Mikro.

Aus persönlicher Sicht mag ich die Datenblätter und Teilenummern von Microchip nicht mehr. Ich habe mich mit Microchip für Embedded-Designs entschieden und habe sie lange geliebt, aber wenn ich heutzutage nach einem Mikro suche, beginne ich meistens mit Atmel, auch wenn sie nicht ohne Mängel sind. (SAM-BA ist Müll für ihre SAM-Teile, und ich hatte auch einige Probleme mit der Werksunterstützung.)

Was die Verwendung angeht ... versuchen Sie beides, es ist wie der Unterschied zwischen Cola und Pepsi. Sie sind sehr, sehr ähnlich und die Wahl hängt normalerweise vom Preis und den Werkzeugen ab, die Sie bevorzugen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.