SAMD21-Simulatoren Programmierung und Debugging

Inhaltsverzeichnis

Download Atmel Studio 7 from the Atmel website

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/

Download Atmel Studio 7 from the Atmel website
Download Atmel Studio 7 from the Atmel website

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“.

Create a new project in Atmel Studio 7
Create a new project in Atmel Studio 7
Choose the GCC C ASF Board Project option
Choose the GCC C ASF Board Project option

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.

Choose the board and microcontroller: SAMD21 Xplained Pro - ATSAMD21J18A
Choose the board and microcontroller: SAMD21 Xplained Pro - 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.

Add SERCOM USART Driver Module to the project
Add SERCOM USART Driver Module to the project
Apply changes to the project
Apply changes to the project

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.

Write a simple program in code editor
Write a simple program in code editor
				
					#include <asf.h>

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.

Build and run the program using the simulator by selecting "Debug - Start Debugging and Break"
Build and run the program using the simulator by selecting "Debug - Start Debugging and Break"

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 <Arduino.h>

#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 <Arduino.h>

#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 <Arduino.h>
#include <Servo.h>

#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 <Arduino.h>

#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:

FeatureSAMD21STM32
ProcessorARM Cortex-M0+ARM Cortex-M
SRAM32KBUp to 128KB
Flash Memory128KBUp to 1MB
Clock Frequency48 MHz16-32 MHz (depending on model)
GPIO Pins33Up to 82
Communication protocolsSPI, I2C, UARTCAN, USB, Ethernet, SPI, I2C, UART
Power EfficiencyLower power consumption, sleep mode, and designed to run at lower clock speedsConsumes slightly more power (2-3mA/MHz)
Advanced FeaturesFewerBuilt-in floating point unit, DDR memory controller, and multiple serial interfaces
PriceMore cost-effectiveMore expensive, better suited for more complex applications

Abonnieren

Tragen Sie sich in unsere Abonnentenliste ein, um monatliche Blog-Updates, Technologie-News und Fallstudien zu erhalten. Wir versenden niemals Spam, und Sie können sich jederzeit wieder abmelden.

Nach oben scrollen

Instant Quote