Программирование и отладка с помощью симуляторов могут быть отличным способом начать работу с микроконтроллером 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/

2). Создайте новый проект в Atmel Studio 7, выбрав «File» -> «New» -> «Project». Выберите опцию «GCC C ASF Board Project» и нажмите «OK».
3). Выберите плату и микроконтроллер, которые вы будете моделировать. В этом примере мы будем использовать плату SAMD21 Xplained Pro и микроконтроллер ATSAMD21J18A.
4). В диалоговом окне «ASF Wizard» найдите и выберите драйвер «SERCOM USART». Затем нажмите «Apply» для создания проекта.
5). Теперь можно приступать к написанию кода для проекта. В этом примере мы напишем простую программу, которая отправляет и принимает данные через интерфейс USART. Программа отправит строку «Hello World», а затем будет ждать входящих данных. Окно редактора кода обычно находится в центре пользовательского интерфейса Atmel Studio. Если вы не видите окно редактора кода, вы можете открыть его, дважды щелкнув по файлу .c, который вы добавили в свой проект в панели Solution Explorer. Кроме того, вы можете выбрать файл в панели Solution Explorer, а затем щелкнуть «View» > «Code» в строке меню, чтобы открыть окно редактора кода.
#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). Скомпилируйте и запустите программу в симуляторе, выбрав в меню «Debug» -> «Start Debugging and Break» (Отладка -> Начать отладку и остановить). Затем вы можете пройти по коду и посмотреть значения переменных в окне «Watch» (Наблюдение).
Вот и все! Теперь вы можете использовать симулятор SAMD21 для тестирования и отладки ваших проектов на базе микроконтроллеров.
Дополнительные примеры кода SAMD21
В целом, примеры кода samd21 можно найти в Atmel Software Framework и Atmel mbed Online Compiler. Кроме того, их нормальная работа зависит от используемой платы разработчика. Вот несколько базовых примеров:
Мигающий светодиод:
#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);
}
Считывание аналогового входа:
#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);
}
Сервоуправление:
#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);
}
Пример прерывания:
#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++;
}
Сравнение SAMD21 и STM32
Микроконтроллеры SAMD21 и STM32 во многом очень похожи. Оба являются 32-разрядными микроконтроллерами на базе ядер ARM® Cortex™-M0+ и обладают широким спектром периферийных функций. Однако между ними есть и некоторые ключевые различия. Подробности приведены в таблице ниже:
| 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 |




