Программирование и отладка симуляторов SAMD21

Содержание

Download Atmel Studio 7 from the Atmel website

Программирование и отладка с помощью симуляторов могут быть отличным способом начать работу с микроконтроллером SAMD21. Это отличная платформа для тех, кто только начинает знакомиться со встроенными системами и хочет лучше понять, как они работают. Используя различные симуляторы, можно быстро и легко разрабатывать проекты и приложения. Благодаря сочетанию учебных пособий и практического опыта вы сможете в кратчайшие сроки освоить основы программирования SAMD21. В этой статье вы узнаете о типах симуляторов SAMD21, отладке программ на симуляторах, примерах кода SAMD21 и многом другом.

Что такое симулятор SAMD21?

Симулятор SAMD21 — это компьютерная программа, которая позволяет пользователям моделировать поведение микроконтроллера SAMD21. Этот симулятор можно использовать для тестирования программ для процессора SAMD21 или для разработки встроенных приложений. Он предоставляет среду для отладки и тестирования программ на микроконтроллере SAMD21 без необходимости использования физического оборудования. Он включает в себя ряд периферийных устройств, таких как UART, SPI, I2C, таймеры и модуляторы ширины импульса. Симулятор также включает в себя IDE с ассемблером, компилятором и отладчиком. Например, если пользователь разрабатывает программу для устройства на базе SAMD21, он может использовать симулятор для тестирования программы и ее отладки без необходимости использования физического оборудования.

Типы симуляторов для SAMD21

Симуляторы — это компьютерные программы, которые моделируют поведение физической системы. Они часто используются для программирования встроенных систем, так как позволяют тестировать код без необходимости использования физического оборудования. Симуляторы для SAMD21 включают Arduino Create, Proteus и QEMU.

Atmel Studio 7

Atmel Studio 7 — это интегрированная платформа разработки (IDP), разработанная компанией Atmel, ведущим производителем микроконтроллеров. Это мощная среда разработки, которая позволяет пользователям писать, компилировать, отлаживать и развертывать приложения для микроконтроллеров Atmel AVR и ARM. Она поддерживает широкий спектр плат разработки и предоставляет инструменты графического интерфейса пользователя (GUI) для кодирования, отладки и программирования. Она также имеет полный набор инструментов для отладки программного обеспечения, анализа трассировок и моделирования. Примеры функций включают отладку, эмулятор в схеме, редактор кода, программирование устройств и системы контроля версий. 

Протей

Proteus — это симулятор, который можно использовать для моделирования различных встроенных систем, включая SAMD21. Он поддерживает широкий спектр компонентов, включая датчики, исполнительные механизмы и дисплеи. Он также предоставляет инструменты отладки и позволяет выполнять код на моделируемом оборудовании.

KVM

QEMU — это симулятор с открытым исходным кодом, который обычно используется для программирования встроенных систем. Он поддерживает широкий спектр архитектур, включая ARM, и может использоваться для симуляции SAMD21. Он предоставляет инструменты отладки и часто используется для тестирования кода без необходимости использования физического оборудования.

Как отлаживать программу SAMD21 с помощью симуляторов?

Отладка является важной частью программирования SAMD21. Она позволяет находить и исправлять ошибки в коде до того, как они вызовут проблемы в проекте. Использование отладчика и последовательного монитора может быть отличным способом устранения неполадок в коде и поиска ошибок в программе. Перед началом отладки кода важно хорошо понимать, как работают эти инструменты. Здесь мы приводим пример на симуляторе Atmel Studio 7:

1). Загрузите и установите совместимый пакет программного обеспечения для микроконтроллера SAMD21. Atmel Studio 7 является одним из примеров такого программного обеспечения, его можно загрузить с веб-сайта Atmel или по следующему URL-адресу.

https://atmel-studio.software.informer.com/download/

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

2). Создайте новый проект в Atmel Studio 7, выбрав «File» -> «New» -> «Project». Выберите опцию «GCC C ASF Board Project» и нажмите «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). Выберите плату и микроконтроллер, которые вы будете моделировать. В этом примере мы будем использовать плату SAMD21 Xplained Pro и микроконтроллер ATSAMD21J18A.

Choose the board and microcontroller: SAMD21 Xplained Pro - ATSAMD21J18A
Choose the board and microcontroller: SAMD21 Xplained Pro - ATSAMD21J18A

4). В диалоговом окне «ASF Wizard» найдите и выберите драйвер «SERCOM USART». Затем нажмите «Apply» для создания проекта.

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). Теперь можно приступать к написанию кода для проекта. В этом примере мы напишем простую программу, которая отправляет и принимает данные через интерфейс USART. Программа отправит строку «Hello World», а затем будет ждать входящих данных. Окно редактора кода обычно находится в центре пользовательского интерфейса Atmel Studio. Если вы не видите окно редактора кода, вы можете открыть его, дважды щелкнув по файлу .c, который вы добавили в свой проект в панели Solution Explorer. Кроме того, вы можете выбрать файл в панели Solution Explorer, а затем щелкнуть «View» > «Code» в строке меню, чтобы открыть окно редактора кода.

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). Скомпилируйте и запустите программу в симуляторе, выбрав в меню «Debug» -> «Start Debugging and Break» (Отладка -> Начать отладку и остановить). Затем вы можете пройти по коду и посмотреть значения переменных в окне «Watch» (Наблюдение).

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"

Вот и все! Теперь вы можете использовать симулятор SAMD21 для тестирования и отладки ваших проектов на базе микроконтроллеров.

Дополнительные примеры кода SAMD21

В целом, примеры кода samd21 можно найти в Atmel Software Framework и Atmel mbed Online Compiler. Кроме того, их нормальная работа зависит от используемой платы разработчика. Вот несколько базовых примеров:

Мигающий светодиод:

				
					#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);
}

				
			

Считывание аналогового входа:

				
					#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);
}

				
			

Сервоуправление:

				
					#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);
}

				
			

Пример прерывания:

				
					#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++;
}

				
			

Сравнение SAMD21 и STM32

Микроконтроллеры SAMD21 и STM32 во многом очень похожи. Оба являются 32-разрядными микроконтроллерами на базе ядер ARM® Cortex™-M0+ и обладают широким спектром периферийных функций. Однако между ними есть и некоторые ключевые различия. Подробности приведены в таблице ниже:

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

Подписаться

Присоединяйтесь к нашему списку подписчиков, чтобы получать ежемесячные обновления блога, новости о технологиях, практические примеры. Мы никогда не будем рассылать спам, и вы можете отказаться от подписки в любое время.

Об авторе

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Нужна помощь?

Прокрутить вверх

Instant Quote