Umschalten von PIC auf AVR [geschlossen]

Ich arbeite jetzt seit über drei Jahren mit PIC16 und PIC18s und möchte auch AVR kennenlernen. Ich habe kein konkretes Projekt im Sinn, würde aber gerne mit den verschiedenen Architekturen herumprobieren. Ich möchte einen Kompatibilitätsbericht zu PIC und AVR erhalten.

Die Software von uC ist
mir vertraut mit 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 zum Kompilieren und Zusammenstellen meiner Programme für AVR-Chips? Ist es kostenlos und wo kann ich es herunterladen?

Programmierhardware
Ich habe Wisp648 von VOTI 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?

Die Hardware von uC
Für PICs habe ich häufig den PIC18F4620 verwendet . Ich suche einen AVR mit ähnlichen Features. 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 Funktionen? Das Paket ist ein Deal Breaker, ich möchte wirklich DIP, PDIP oder SPDIP. Was wäre ein AVR mit vergleichbaren Features?

SPI- und I2C-Varianten
Mir wurde gesagt, dass Microchip seine eigenen Varianten des SPI- und I2C-Protokolls 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 Entschuldigung, ich war nicht klar, ich habe kein bestimmtes Projekt im Sinn, möchte aber ein bisschen herumspielen, um die verschiedenen Architekturen kennenzulernen.
Diese Frage ist zu weit gefasst und passt nicht gut in unser Q+A-Format, aber im Allgemeinen lesen Sie die Datenblätter der Prozessoren, die Sie verwenden möchten. Ich weiß nicht, wie es auf der dunklen Seite ist, aber Atmel hat wahrscheinlich einen Auswahlleitfaden wie Microchip. Diese Unternehmen haben zu viele Mikros, als dass irgendjemand sie im Auge behalten könnte. Ich habe in 15 Jahren beruflich weit über 100 PIC-Projekte durchgeführt, konsultiere aber immer noch den Auswahlleitfaden, wenn ich ein neues auswähle.
Welche Art von Befehlssatz AVR verwendet, welche Entwicklungstools usw. sind leicht zu recherchieren. Diese Dinge werden gut unterstützt, wie PIC. Ich empfehle dieses unterhaltsame Video: youtube.com/watch?v=DBftApUQ8QI
Werfen Sie einen Blick auf electronic.stackexchange.com/a/66163/8627 und ändern Sie Linux für Windows. Die Toolchain ist weitgehend gleich. Nicht identisch, aber voller Dinge für Google.
@jippie schön! In meinem Lesezeichen gespeichert, wenn meine Proben angekommen sind :)
Ich benutze einen "alten" Arduino als Programmierer, billige und vielseitige Lösung.
Noch bevor dieser Beitrag geschlossen wurde, habe ich alle subjektiven Teile entfernt. Bitte überdenken Sie Ihre knappen Stimmen.
Ich denke, dass die erste und letzte Frage hier in Ordnung sein könnten, vielleicht getrennt. Der Rest ist entweder zu breit, zu lokalisiert oder mit etwas Googeln (zB Programmierhardware) beantwortbar. Ich denke, es muss noch verbessert werden, bevor es wiedereröffnet wird.
@clabacchio danke für deine Tipps, ich habe meine Frage bearbeitet. Ich habe den Teil der Programmierhardware nicht entfernt, aber etwas verdeutlicht, er ist jetzt weniger wahrscheinlich bei Google zu finden. Ich hoffe das ist okay?
Nein, Sie fordern grundsätzlich eine breite Palette von Informationen an, anstatt die Art von spezifisch beantwortbaren Fragen zu posten, für die die Website gedacht ist.

Antworten (3)

uCs Software

Die PIC- und AVR-Befehlssätze sind ähnlich, aber ich würde nicht damit beginnen, einen AVR in Assembler zu programmieren. Programm in C, mit Atmel Studio. Es wird mit der AVR-Version von gcc geliefert und hat einen wirklich guten Disassembler, der Ihnen die Zeile von C zeigt, die Sie geschrieben haben, und darunter die resultierenden Assembler-Anweisungen, 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, die Leute verwenden. Atmel Studio basiert auf Visual Studio, verfügt über alle Arten von Plug-Ins von Atmel und hat einen guten Simulator eingebaut.

Programmierhardware

Es gibt viele billige AVR-Programmierer, wie z. B. den Bus Pirate, aber besorgen Sie sich einen Atmel ICSP . Es ist die zusätzlichen Kosten absolut wert, wenn Sie beabsichtigen, mehr als ein AVR-Projekt durchzuführen. Es verwendet USB und ist von Atmel Studio aus steuerbar.

uCs Hardware

Es gibt ein Auswahlwerkzeug, aber im Allgemeinen ist die typische Low-End-AtMega-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 Ihnen zur Verfügung stehen, hängt vom jeweiligen Chip ab. Die meisten AtMega-Teileteile sind in PDIP verfügbar, wobei QFP die Dinge mit der wirklich hohen Pinzahl sind.

SPI- und I2C-Varianten

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

ATtiny ist der kleinere Bruder von ATmega. Sie sind sehr ähnlich, wenn es um die Programmierung geht. Ich habe Software von Mega auf Tiny portiert, indem ich einfach den Teiltyp im Makefile geändert habe.
@CamilStaps Jippie macht einen guten Punkt. Ich weiß nicht, ob dies eine Ähnlichkeit mit PIC ist, aber AVR-Prozessoren teilen sich zum größten Teil Registernamen und Bitreihenfolgen. Es gibt einige Ausnahmen, z. B. kann ein leistungsfähigerer Prozessor ein Steuerregister in zwei Teile aufteilen. Die Datenblätter haben alle in jedem Kapitel einen Registerbeschreibungsabschnitt, der den Vergleich erleichtert.
PICs auch, zumindest in einer Familie (PIC16, PIC18, ..). Danke für den Tipp (@jippie)!
Das ist eine großartige Erklärung. Meine Lieblings-AVR-Chips sind ATmega328p und ATtiny24. Andere gängige Linien sind tinyx5 und tiny2313. Diese sind alle in DIP verfügbar und alle haben genau dieselbe SPI-basierte Programmierschnittstelle: ISP. Probieren Sie für einen günstigen Schnellstart diesen USB-Programmierer von Sparkfun aus: sparkfun.com/products/9825 Erwähnenswert ist auch ein beliebtes Programmpaket für Windows, das als WinAVR bekannt ist: winavr.sourceforge.net Sie brauchen keinerlei Entwicklung Board, nur ein Netzteil, Bypass-Kappen und vielleicht ein Kristall.

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

Ich mag AVRs vor allem wegen AVR-libc . Es ist eine anständige eingebettete Bibliothek, die Open Source und einigermaßen gut dokumentiert ist ( im Gegensatz zu Microchips plib, aber plib hat den vollständigen Quellcode, was ich wirklich schätze). AVRs verwenden normales altes gcc und gdb, was bedeutet, dass mir keine idiotischen IDEs im Weg stehen. Die gleichen Tools funktionieren unter Windows, OSX und Linux, und ich brauche keine 600 MB+ IDE mit Java und Netbeans oder Eclipse, um darüber zu stolpern oder meinen Quellbaum mit ihrem eigenen Müll zu verschmutzen.

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

Aus persönlicher Sicht mag ich die Datenblätter und die Teilenummerierung von Microchip nicht mehr. Ich habe mit Microchip meine Erfahrungen mit eingebettetem Design gemacht und ich habe sie für eine lange, lange Zeit geliebt, aber wenn ich heutzutage nach einem Mikro suche, beginne ich eher mit Atmel, obwohl sie auch nicht ohne Fehler sind. (SAM-BA ist Müll für ihre SAM-Teile, und ich hatte auch einige Probleme mit ihrer Werksunterstützung.)

Was Sie verwenden sollten ... probieren Sie beides aus, es ist wie der Unterschied zwischen Cola und Pepsi. Sie sind sich sehr, sehr ähnlich und die Wahl hängt normalerweise vom Preis und den Tools ab, die Sie verwenden möchten.

  • C wird dasselbe sein mit einigen kleinen Compiler-Unterschieden. Die Montage wird ganz anders sein, da es sich um eine andere Architektur handelt. Ich empfehle, mit C zu arbeiten und vielleicht genug Assembler zu sammeln, um einige wichtige Routinen inline zu integrieren.

  • Für die IDE und den Programmierer hat Atmel ähnliche Angebote wie Microchip, schauen Sie sich einfach ihre 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 verwendete). Ich glaube, sie haben DIP-Paketversionen.

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

Haftungsausschluss - Ich habe lange keinen AVR mehr benutzt. Heutzutage verwende ich hauptsächlich PICs und ARMs, aber ich hatte in der Vergangenheit nie Probleme, irgendetwas mit SPI/I2C zu verbinden, da ich häufig SPI verwendet habe, um z. B. PIC/Atmel EEPROM/Cortex-M3/FPGA zu verbinden. SPI ist ein sehr einfaches Protokoll, zu dem so ziemlich jedes moderne Mikro in der Hardware in der Lage sein sollte.
I2C ist etwas komplexer. Ich kann mich auf Anhieb nicht an die Geschichte der Lizenzierung/Namensgebung (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-Technologie) lizenziert werden, aber Atmel hat es geschafft, die Lizenzgebühr zu umgehen.