La programación y la depuración con simuladores pueden ser una excelente manera de iniciarse en el microcontrolador SAMD21. Proporciona una gran plataforma para aquellos que son nuevos en los sistemas integrados y desean comprender mejor cómo funcionan. Mediante el uso de una variedad de simuladores, es posible desarrollar proyectos y aplicaciones de forma rápida y sencilla. Mediante una combinación de tutoriales y experiencia práctica, podrá ponerse al día con los conceptos básicos de la programación SAMD21 en muy poco tiempo. En esta publicación, aprenderá los tipos de simuladores SAMD21, los programas de depuración en simuladores, ejemplos de código SAMD21 y mucho más.
¿Qué es el simulador SAMD21?
El simulador SAMD21 es un programa informático que permite a los usuarios simular el comportamiento de un microcontrolador SAMD21. Este simulador se puede utilizar para probar programas para el procesador SAMD21 o para desarrollar aplicaciones integradas. Proporciona un entorno para depurar y probar programas en el microcontrolador SAMD21, sin necesidad de hardware físico. Incluye una gama de periféricos, como UART, SPI, I2C, temporizadores y moduladores de ancho de pulso. El simulador también incluye un IDE con un ensamblador, un compilador y un depurador. Por ejemplo, si un usuario está desarrollando un programa para un dispositivo basado en SAMD21, puede utilizar el simulador para probar el programa y depurarlo sin necesidad de hardware físico.
Tipos de simuladores para SAMD21
Los simuladores son programas informáticos que simulan el comportamiento de un sistema físico. Se utilizan a menudo para la programación de sistemas integrados, ya que permiten probar el código sin necesidad de hardware físico. Entre los simuladores para SAMD21 se incluyen Arduino Create, Proteus y QEMU.
Atmel Studio 7
Atmel Studio 7 es una plataforma de desarrollo integrada (IDP) desarrollada por Atmel, un fabricante líder de microcontroladores. Se trata de un potente entorno de desarrollo que permite a los usuarios escribir, compilar, depurar e implementar aplicaciones para los microcontroladores AVR y ARM de Atmel. Es compatible con una amplia gama de placas de desarrollo y proporciona herramientas de interfaz gráfica de usuario (GUI) para la codificación, la depuración y la programación. También cuenta con un conjunto completo de herramientas para la depuración de software, el análisis de trazas y la simulación. Entre sus características se incluyen la depuración, el emulador en circuito, el editor de código, la programación de dispositivos y los sistemas de control de versiones.
Proteus
Proteus es un simulador que se puede utilizar para simular una gran variedad de sistemas integrados, incluido el SAMD21. Es compatible con una amplia gama de componentes, como sensores, actuadores y pantallas. También proporciona herramientas de depuración y permite la ejecución de código en el hardware simulado.
KVM
QEMU es un simulador de código abierto que se utiliza habitualmente para la programación de sistemas integrados. Es compatible con una amplia gama de arquitecturas, incluida ARM, y se puede utilizar para simular el SAMD21. Proporciona herramientas de depuración y se utiliza a menudo para probar código sin necesidad de hardware físico.
¿Cómo depurar el programa SAMD21 con simuladores?
La depuración es una parte importante de la programación SAMD21. Le permite encontrar y corregir errores en su código antes de que causen problemas en su proyecto. El uso del depurador y el monitor serie puede ser una excelente manera de solucionar problemas de código y encontrar errores en su programa. Es importante asegurarse de que comprende bien cómo funcionan estas herramientas antes de comenzar a depurar su código. A continuación, le ofrecemos un ejemplo en el simulador Atmel Studio 7:
1). Descargue e instale un paquete de software compatible con el microcontrolador SAMD21. Atmel Studio 7 es un ejemplo de este tipo de software y se puede descargar desde el sitio web de Atmel o desde la siguiente URL.
https://atmel-studio.software.informer.com/download/

2). Cree un nuevo proyecto en Atmel Studio 7 seleccionando «Archivo» -> «Nuevo» -> «Proyecto». Elija la opción «Proyecto de placa GCC C ASF» y haga clic en «Aceptar».
3). Elija la placa y el microcontrolador que va a simular. En este ejemplo, utilizaremos la placa SAMD21 Xplained Pro y el microcontrolador ATSAMD21J18A.
4). En el cuadro de diálogo «ASF Wizard», busque y seleccione el controlador «SERCOM USART». A continuación, haga clic en «Apply» para generar el proyecto.
5). Ahora puede comenzar a programar su proyecto. En este ejemplo, escribiremos un programa sencillo que envía y recibe datos a través de la interfaz USART. El programa enviará la cadena «Hello World» y luego esperará los datos entrantes. La ventana del editor de código suele estar situada en el centro de la interfaz de usuario de Atmel Studio. Si no ve la ventana del editor de código, puede abrirla haciendo doble clic en el archivo .c que ha añadido a su proyecto en el panel Explorador de soluciones. También puede seleccionar el archivo en el panel Explorador de soluciones y, a continuación, hacer clic en «Ver» > «Código» en la barra de menú para abrir la ventana del editor de código.
#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). Compile y ejecute el programa en el simulador seleccionando «Debug» -> «Start Debugging and Break» en la barra de menú. A continuación, puede recorrer el código y observar los valores de las variables en la ventana «Watch».
¡Eso es todo! Ahora ya puede utilizar el simulador SAMD21 para probar y depurar sus proyectos de microcontroladores.
Ejemplos adicionales de código SAMD21
En general, se pueden encontrar ejemplos de código samd21 en Atmel Software Framework y Atmel mbed Online Compiler. Además, su funcionamiento normal depende de la placa de desarrollo que se utilice. A continuación se muestran algunos ejemplos básicos:
LED parpadeante:
#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);
}
Lectura de entrada analógica:
#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);
}
Servocontrol:
#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);
}
Ejemplo de interrupción:
#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++;
}
Comparación entre SAMD21 y STM32
Los microcontroladores como el SAMD21 y el STM32 son muy similares en muchos aspectos. Ambos son microcontroladores de 32 bits basados en núcleos ARM® Cortex™-M0+ y cuentan con una amplia gama de funciones periféricas. Sin embargo, también existen algunas diferencias clave entre ambos. Los detalles se muestran en la siguiente tabla:
| 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 |




