Wie unterschiedlich ist die Arduino-Sprache von der Atmel Studio-Sprache? [geschlossen]

7

Ich sehe, dass auf der offiziellen Arduino-Website die Referenzseite die Funktionen und Werte enthält, die Sie für den Arduino-Compiler verwenden würden.

http://arduino.cc/en/Reference/HomePage

Was würden Sie stattdessen verwenden, wenn Sie mit Atmel Studio arbeiten?

Aleatory
quelle
2
Die Sprache ist die gleiche. Die verfügbaren Symbole sind unterschiedlich.
Ignacio Vazquez-Abrams
Ja, ich stimme Ignacio zu. Ich denke, Sie sollten die C-Sprache lernen.
Roh
4
Diese Frage scheint nicht zum Thema zu gehören, da es nicht um elektronisches Design geht.
Leon Heller

Antworten:

6

Die Sprache ist die gleiche. Sie können entweder Arduino IDE oder Atmel Studio verwenden ( http://www.engblaze.com/tutorial-using-atmel-studio-6-with-arduino-projects/ ). Die Arduino- Bibliothek ist eher ein Wrapper, um dies zu vereinfachen Dinge tun, wie digitalWrite, die Sie in Atmel Studio standardmäßig nicht haben (oder Sie können es selbst definieren). Mit Atmel Studio würden Sie ein Register ein wenig umblättern, um den digitalen Port einzuschalten. Beim AtMega2560 und beim AtMega328 sind diese Register unterschiedlich. Sie können also nicht einfach dieselbe Quelle kompilieren und erwarten, dass sie bei Verwendung der Register auf beiden MCUs ausgeführt wird. Natürlich können Sie auch hier ein Compiler-Flag angeben, das Sie jetzt mit AtMega2560 oder AtMega328 verwenden, und die Register in Ihrer eigenen digitalWrite-Funktion entsprechend definieren, und genau das tut die Arduino-Bibliothek für Sie.

Sie können die Arduino-Bibliothek verwenden, während Sie in Atmel Studio arbeiten, oder Sie können native Registeroperationen verwenden, um Bits usw. mithilfe der Arduino-IDE umzuschalten. Um Atmel Studio mit der Arduino-Bibliothek und dem AVR-Typ zum Laufen zu bringen, sind einige Einstellungen erforderlich, die sich jedoch je nach Größe Ihres Code-Projekts möglicherweise lohnen. Atmel Studio basiert auf Microsoft Visual Studio mit Codevorschlag / -vervollständigung und Intellisense, was die Entwicklung des Codes drastisch beschleunigen könnte.

Mike de Klerk
quelle
Das Manipulieren von Timer 0 während der Verwendung der Arduino-Bibliothek ist jedoch eine schlechte Idee.
Ignacio Vazquez-Abrams
Tutorial: Verwenden von Atmel Studio 6 mit Arduino-Projekten: engblaze.com/… auch relevant: forum.arduino.cc/index.php/topic,123267.0.html
Connor Wolf
2

Bei Verwendung von Atmel Studio ist das Atmel Software Framework verfügbar , das eine gewisse Hardware-Abstraktion wie die Arduino-Bibliotheken bietet. Es ermöglicht, dass derselbe Code (innerhalb eines angemessenen Rahmens) auf mehreren Atmel-Plattformen ausgeführt wird, einschließlich des AVR und seiner ARM-basierten Produkte. Ich habe gerade erst damit begonnen, es für ein neues Projekt zu verwenden, aber hier ist ein Beispiel für Code:

#define RADIO_RX IOPORT_CREATE_PIN(PORTA, 0)
ioport_set_pin_dir(RADIO_RX, IOPORT_DIR_INPUT);
data_in = ioport_get_pin_level(RADIO_RX);

Es scheint eine sehr gute Unterstützung für On-Chip-Peripheriegeräte wie USB, SPI, USART usw. in ihrem gesamten Sortiment zu haben. Es bietet auch Unterstützung für externe Peripheriegeräte wie eine SD-Karte mit einem FAT-Software-Stack und einige LCDs, obwohl diesbezüglich weitgehend auf die Geräte beschränkt zu sein scheint, die sie auf ihren Entwicklungsplatinen verwenden.

Während die Sprache dieselbe ist, die zur Lernkurve beitragen könnte, werden Sie wahrscheinlich weniger Beispielcode und übergeordnete Bibliotheken finden, die ASF verwenden, beispielsweise die Schnittstelle zu einem bestimmten RF-Transceiver oder GPS-Empfänger.

Oft können solche Bibliotheken, die versuchen, die Hardwareschicht zu stark auszublenden, zu unerwarteten Problemen führen, wenn Sie den zugrunde liegenden Vorgang und die Funktionsweise nicht kennen. Unter diesem Gesichtspunkt denke ich, dass ASF ein gutes Abstraktionsniveau bietet, um das Lesen und Portieren zwischen Atmel-Geräten zu vereinfachen und gleichzeitig eine gute Kontrolle über die Hardware zu ermöglichen.

PeterJ
quelle