Wie unterscheidet sich die Arduino-Sprache von der Atmel Studio-Sprache? [abgeschlossen]

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?

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

Antworten (2)

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 es einfach zu machen Dinge tun, wie digitalWrite, die Sie standardmäßig nicht in Atmel Studio haben (oder Sie können es selbst definieren). Bei Atmel Studio würden Sie ein Register ein wenig umdrehen, um den digitalen Port einzuschalten. Für den AtMega2560 und den AtMega328 sind diese Register nun unterschiedlich. Sie können also nicht einfach dieselbe Quelle kompilieren und erwarten, dass sie auf beiden MCUs ausgeführt wird, wenn Sie die Register verwenden. Auch hier können Sie natürlich ein Compiler-Flag angeben, dass Sie jetzt AtMega2560 oder AtMega328 verwenden, und die Register in Ihrer eigenen digitalWrite-Funktion entsprechend definieren, und genau das erledigt 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 umzuschalten und so weiter, indem Sie Arduino IDE verwenden. Um Atmel Studio mit der Arduino-Bibliothek und dem AVR -Typen zum Laufen zu bringen , ist eine gewisse Einrichtung erforderlich, aber es könnte sich lohnen, je nachdem, wie groß Ihr Codeprojekt ist. Atmel Studio basiert auf Microsofts Visual Studio mit Codevorschlag/-vervollständigung und Intellisense, was die Entwicklung des Codes drastisch beschleunigen könnte.

Das Manipulieren des Timers 0 während der Verwendung der Arduino-Bibliothek ist jedoch eine schlechte Idee.
Tutorial: Atmel Studio 6 mit Arduino-Projekten verwenden: engblaze.com/… ebenfalls relevant: forum.arduino.cc/index.php/topic,123267.0.html

Etwas, das bei der Verwendung von Atmel Studio verfügbar ist, ist das Atmel Software Framework , das eine gewisse Hardware-Abstraktion wie die Arduino-Bibliotheken bietet. Es ermöglicht, dass derselbe Code (im Rahmen des Zumutbaren) auf mehreren Atmel-Plattformen ausgeführt werden kann, einschließlich des AVR und seiner ARM-basierten Produkte. Ich habe gerade erst begonnen, es für ein neues Projekt zu verwenden, aber hier ist ein Beispiel für einen 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 es in dieser Hinsicht ziemlich auf die Geräte beschränkt zu sein scheint, die sie auf ihren Entwicklungsboards verwenden.

Während die Sprache die gleiche ist, wird die Lernkurve möglicherweise dadurch verbessert, dass Sie wahrscheinlich weniger Beispielcode und High-Level-Bibliotheken finden, die ASF verwenden, z. B. diese Schnittstelle zu einem bestimmten HF-Transceiver oder GPS-Empfänger.

Allerdings können diese Arten von Bibliotheken, die versuchen, die Hardwareschicht zu sehr zu verbergen, oft zu unerwarteten Problemen führen, wenn Sie die zugrunde liegende Operation und das Zusammenspiel der Dinge nicht kennen. Aus dieser Sicht bietet ASF meiner Meinung nach ein gutes Abstraktionsniveau, um das Lesen und Portieren zwischen Atmel-Geräten zu erleichtern und gleichzeitig eine gute Kontrolle über die Hardware zu ermöglichen.