Das Programmieren und Debuggen mit Simulatoren kann eine hervorragende Möglichkeit sein, um mit dem Mikrocontroller SAMD21 zu beginnen. Es bietet eine großartige Plattform für diejenigen, die neu im Bereich der eingebetteten Systeme sind und ein besseres Verständnis für deren Funktionsweise erlangen möchten. Durch den Einsatz verschiedener Simulatoren lassen sich Projekte und Anwendungen schnell und einfach entwickeln. Durch eine Kombination aus Tutorials und praktischen Übungen können Sie sich in kürzester Zeit mit den Grundlagen der SAMD21-Programmierung vertraut machen. In diesem Beitrag lernen Sie die verschiedenen Arten von SAMD21-Simulatoren, Debugging-Programme auf Simulatoren, SAMD21-Code-Beispiele und vieles mehr kennen.
Was ist der SAMD21-Simulator?
Der SAMD21-Simulator ist ein Computerprogramm, mit dem Benutzer das Verhalten eines SAMD21-Mikrocontrollers simulieren können. Dieser Simulator kann zum Testen von Programmen für den SAMD21-Prozessor oder zur Entwicklung eingebetteter Anwendungen verwendet werden. Er bietet eine Umgebung zum Debuggen und Testen von Programmen auf dem SAMD21-Mikrocontroller, ohne dass physische Hardware erforderlich ist. Er umfasst eine Reihe von Peripheriegeräten wie UART, SPI, I2C, Timer und Pulsweitenmodulatoren. Der Simulator enthält außerdem eine IDE mit einem Assembler, einem Compiler und einem Debugger. Wenn ein Benutzer beispielsweise ein Programm für ein SAMD21-basiertes Gerät entwickelt, kann er den Simulator verwenden, um das Programm zu testen und zu debuggen, ohne dass physische Hardware erforderlich ist.
Arten von Simulatoren für SAMD21
Simulatoren sind Computerprogramme, die das Verhalten eines physikalischen Systems simulieren. Sie werden häufig für die Programmierung eingebetteter Systeme verwendet, da sie das Testen von Code ohne physische Hardware ermöglichen. Zu den Simulatoren für SAMD21 gehören Arduino Create, Proteus und QEMU.
Atmel Studio 7
Atmel Studio 7 ist eine integrierte Entwicklungsplattform (IDP), die von Atmel, einem führenden Hersteller von Mikrocontrollern, entwickelt wurde. Es handelt sich um eine leistungsstarke Entwicklungsumgebung, mit der Benutzer Anwendungen für Atmel AVR- und ARM-Mikrocontroller schreiben, kompilieren, debuggen und bereitstellen können. Sie unterstützt eine Vielzahl von Entwicklungsboards und bietet grafische Benutzeroberflächen (GUI) für die Codierung, das Debugging und die Programmierung. Außerdem verfügt sie über eine vollständige Suite von Tools für Software-Debugging, Trace-Analyse und Simulation. Zu den Funktionen gehören beispielsweise Debugging, In-Circuit-Emulator, Code-Editor, Geräteprogrammierung und Versionskontrollsysteme.
Proteus
Proteus ist ein Simulator, mit dem sich eine Vielzahl von eingebetteten Systemen simulieren lässt, darunter auch das SAMD21. Er unterstützt eine breite Palette von Komponenten, darunter Sensoren, Aktoren und Displays. Außerdem bietet er Debugging-Tools und ermöglicht die Ausführung von Code auf der simulierten Hardware.
KVM
QEMU ist ein Open-Source-Simulator, der häufig für die Programmierung eingebetteter Systeme verwendet wird. Er unterstützt eine Vielzahl von Architekturen, darunter ARM, und kann zur Simulation des SAMD21 verwendet werden. Er bietet Debugging-Tools und wird häufig zum Testen von Code verwendet, ohne dass physische Hardware erforderlich ist.
Wie kann man das SAMD21-Programm mit Simulatoren debuggen?
Das Debuggen ist ein wichtiger Bestandteil der SAMD21-Programmierung. Es ermöglicht Ihnen, Fehler in Ihrem Code zu finden und zu beheben, bevor sie Probleme in Ihrem Projekt verursachen. Die Verwendung des Debuggers und des seriellen Monitors kann eine hervorragende Möglichkeit sein, Fehler im Code zu beheben und Fehler in Ihrem Programm zu finden. Es ist wichtig, dass Sie sich mit der Funktionsweise dieser Tools gut auskennen, bevor Sie mit dem Debuggen Ihres Codes beginnen. Hier finden Sie ein Beispiel für den Atmel Studio 7-Simulator:
1). Laden Sie ein kompatibles Softwarepaket für den Mikrocontroller SAMD21 herunter und installieren Sie es. Atmel Studio 7 ist ein Beispiel für eine solche Software und kann von der Atmel-Website oder unter der folgenden URL heruntergeladen werden.
https://atmel-studio.software.informer.com/download/

2). Erstellen Sie ein neues Projekt in Atmel Studio 7, indem Sie „Datei“ -> „Neu“ -> „Projekt“ auswählen. Wählen Sie die Option „GCC C ASF Board Project“ und klicken Sie auf „OK“.
3). Wählen Sie das Board und den Mikrocontroller aus, die Sie simulieren möchten. In diesem Beispiel verwenden wir das SAMD21 Xplained Pro-Board und den Mikrocontroller ATSAMD21J18A.
4). Suchen und wählen Sie im Dialogfeld „ASF Wizard“ den Treiber „SERCOM USART“ aus. Klicken Sie anschließend auf „Apply“, um das Projekt zu generieren.
5). Jetzt können Sie mit der Programmierung Ihres Projekts beginnen. In diesem Beispiel schreiben wir ein einfaches Programm, das Daten über die USART-Schnittstelle sendet und empfängt. Das Programm sendet die Zeichenfolge „Hello World“ und wartet dann auf eingehende Daten. Das Code-Editor-Fenster befindet sich normalerweise in der Mitte der Benutzeroberfläche von Atmel Studio. Wenn Sie das Code-Editor-Fenster nicht sehen, können Sie es öffnen, indem Sie auf die .c-Datei doppelklicken, die Sie Ihrem Projekt im Bereich „Solution Explorer“ hinzugefügt haben. Alternativ können Sie die Datei im Bereich „Solution Explorer“ auswählen und dann in der Menüleiste auf „View“ > „Code“ klicken, um das Code-Editor-Fenster zu öffnen.
#include
int main (void)
{
/* Initialize the system */
system_init();
/* Initialize the USART interface */
struct usart_module usart_instance;
struct usart_config config_usart;
usart_get_config_defaults(&config_usart);
config_usart.baudrate = 9600;
config_usart.mux_setting = USART_RX_3_TX_2_XCK_3;
config_usart.pinmux_pad0 = PINMUX_PB08C_SERCOM4_PAD0;
config_usart.pinmux_pad1 = PINMUX_PB09C_SERCOM4_PAD1;
config_usart.pinmux_pad2 = PINMUX_UNUSED;
config_usart.pinmux_pad3 = PINMUX_UNUSED;
while (usart_init(&usart_instance, SERCOM4, &config_usart) != STATUS_OK);
/* Send a message */
char tx_buffer[] = "Hello World!\r\n";
usart_write_buffer_wait(&usart_instance, (uint8_t *)tx_buffer, sizeof(tx_buffer));
/* Wait for incoming data */
while (1) {
uint8_t rx_byte;
while (usart_read_wait(&usart_instance, &rx_byte) != STATUS_OK);
usart_write_wait(&usart_instance, rx_byte);
}
}
6). Erstellen und führen Sie das Programm im Simulator aus, indem Sie in der Menüleiste „Debug“ -> „Start Debugging and Break“ auswählen. Anschließend können Sie den Code Schritt für Schritt durchgehen und die Werte der Variablen im Fenster „Watch“ beobachten.
Das war's! Jetzt können Sie den SAMD21-Simulator zum Testen und Debuggen Ihrer Mikrocontroller-Projekte verwenden.
Zusätzliche SAMD21-Code-Beispiele
Im Allgemeinen finden Sie Beispiele für samd21-Code im Atmel Software Framework und im Atmel mbed Online Compiler. Darüber hinaus hängt die ordnungsgemäße Funktion davon ab, welches Entwicklungsboard verwendet wird. Hier sind einige grundlegende Beispiele:
Blinkende LED:
#include
#define LED_PIN 13
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(1000);
}
Analogeingangswert:
#include
#define ANALOG_PIN A0
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(ANALOG_PIN);
float voltage = sensorValue * (3.3 / 1023.0);
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(", Voltage: ");
Serial.println(voltage);
delay(1000);
}
Servosteuerung:
#include
#include
#define SERVO_PIN 9
Servo myservo;
void setup() {
myservo.attach(SERVO_PIN);
}
void loop() {
myservo.write(0);
delay(1000);
myservo.write(90);
delay(1000);
myservo.write(180);
delay(1000);
}
Unterbrechungsbeispiel:
#include
#define INTERRUPT_PIN 2
volatile int counter = 0;
void setup() {
pinMode(INTERRUPT_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), interruptHandler, FALLING);
Serial.begin(9600);
}
void loop() {
Serial.println(counter);
delay(1000);
}
void interruptHandler() {
counter++;
}
Vergleich zwischen SAMD21 und STM32
Mikrocontroller wie der SAMD21 und der STM32 sind sich in vielerlei Hinsicht sehr ähnlich. Beide sind 32-Bit-Mikrocontroller, die auf ARM® Cortex™-M0+-Kernen basieren und über eine Vielzahl von Peripheriefunktionen verfügen. Es gibt jedoch auch einige wesentliche Unterschiede zwischen den beiden. Die Details sind in der folgenden Tabelle aufgeführt:
| Feature | SAMD21 | STM32 |
|---|---|---|
| Processor | ARM Cortex-M0+ | ARM Cortex-M |
| SRAM | 32KB | Up to 128KB |
| Flash Memory | 128KB | Up to 1MB |
| Clock Frequency | 48 MHz | 16-32 MHz (depending on model) |
| GPIO Pins | 33 | Up to 82 |
| Communication protocols | SPI, I2C, UART | CAN, USB, Ethernet, SPI, I2C, UART |
| Power Efficiency | Lower power consumption, sleep mode, and designed to run at lower clock speeds | Consumes slightly more power (2-3mA/MHz) |
| Advanced Features | Fewer | Built-in floating point unit, DDR memory controller, and multiple serial interfaces |
| Price | More cost-effective | More expensive, better suited for more complex applications |



