Pemrograman dan debugging menggunakan simulator dapat menjadi cara yang tepat untuk memulai penggunaan mikrokontroler SAMD21. Hal ini menyediakan platform yang sangat baik bagi mereka yang baru mengenal sistem tertanam dan ingin memahami cara kerjanya dengan lebih baik. Dengan memanfaatkan berbagai simulator, Anda dapat mengembangkan proyek dan aplikasi dengan cepat dan mudah. Melalui kombinasi tutorial dan pengalaman praktis, Anda dapat menguasai dasar-dasar pemrograman SAMD21 dalam waktu singkat. Dalam posting ini, Anda akan mempelajari jenis-jenis simulator SAMD21, cara mendebug program di simulator, contoh kode SAMD21, dan banyak lagi.
Apa itu SAMD21 Simulator?
SAMD21 Simulator adalah program komputer yang memungkinkan pengguna mensimulasikan perilaku mikrokontroler SAMD21. Simulator ini dapat digunakan untuk menguji program pada prosesor SAMD21 atau mengembangkan aplikasi tertanam. Simulator ini menyediakan lingkungan untuk men-debug dan menguji program pada mikrokontroler SAMD21, tanpa memerlukan perangkat keras fisik. Simulator ini mencakup berbagai periferal, seperti UART, SPI, I2C, timer, dan modulasi lebar pulsa. Simulator ini juga dilengkapi dengan IDE yang mencakup assembler, compiler, dan debugger. Misalnya, jika seorang pengguna sedang mengembangkan program untuk perangkat berbasis SAMD21, mereka dapat menggunakan simulator ini untuk menguji program dan melakukan debugging tanpa perlu perangkat keras fisik.
Jenis-jenis Simulator untuk SAMD21
Simulator adalah program komputer yang mensimulasikan perilaku suatu sistem fisik. Simulator sering digunakan dalam pemrograman sistem tertanam, karena memungkinkan pengujian kode tanpa perlu perangkat keras fisik. Simulator untuk SAMD21 antara lain Arduino Create, Proteus, dan QEMU.
Atmel Studio 7
Atmel Studio 7 adalah platform pengembangan terintegrasi (IDP) yang dikembangkan oleh Atmel, produsen mikrokontroler terkemuka. Ini merupakan lingkungan pengembangan yang canggih yang memungkinkan pengguna untuk menulis, mengkompilasi, men-debug, dan menerapkan aplikasi untuk mikrokontroler Atmel AVR dan ARM. Platform ini mendukung berbagai macam papan pengembangan dan menyediakan alat antarmuka pengguna grafis (GUI) untuk penulisan kode, debugging, dan pemrograman. Atmel Studio 7 juga dilengkapi dengan rangkaian lengkap alat untuk debugging perangkat lunak, analisis jejak, dan simulasi. Contoh fitur-fiturnya meliputi debugging, emulator dalam sirkuit, editor kode, pemrograman perangkat, dan sistem kontrol versi.
Proteus
Proteus adalah simulator yang dapat digunakan untuk mensimulasikan berbagai sistem tertanam, termasuk SAMD21. Simulator ini mendukung beragam komponen, seperti sensor, aktuator, dan layar. Selain itu, Proteus juga menyediakan alat debugging dan memungkinkan eksekusi kode pada perangkat keras yang disimulasikan.
KVM
QEMU adalah simulator sumber terbuka yang umum digunakan dalam pemrograman sistem tertanam. Simulator ini mendukung berbagai arsitektur, termasuk ARM, dan dapat digunakan untuk mensimulasikan SAMD21. QEMU menyediakan alat debugging dan sering digunakan untuk menguji kode tanpa perlu perangkat keras fisik.
Bagaimana Cara Melakukan Debugging Program SAMD21 Menggunakan Simulator?
Debugging merupakan bagian penting dalam pemrograman SAMD21. Hal ini memungkinkan Anda untuk menemukan dan memperbaiki kesalahan dalam kode Anda sebelum menimbulkan masalah pada proyek Anda. Menggunakan debugger dan serial monitor dapat menjadi cara yang efektif untuk mengidentifikasi masalah pada kode dan menemukan kesalahan dalam program Anda. Penting untuk memastikan bahwa Anda memahami dengan baik cara kerja alat-alat ini sebelum mulai melakukan debugging pada kode Anda. Berikut ini kami berikan contoh pada simulator Atmel Studio 7:
1). Unduh dan instal paket perangkat lunak yang kompatibel untuk mikrokontroler SAMD21. Atmel Studio 7 adalah salah satu contoh perangkat lunak tersebut dan dapat diunduh dari situs web Atmel atau tautan berikut.
https://atmel-studio.software.informer.com/download/

2). Buat proyek baru di Atmel Studio 7 dengan memilih "File" -> "New" -> "Project". Pilih opsi "GCC C ASF Board Project", lalu klik "OK".
3). Pilih papan dan mikrokontroler yang akan Anda simulasikan. Dalam contoh ini, kita akan menggunakan papan SAMD21 Xplained Pro dan mikrokontroler ATSAMD21J18A.
4). Pada kotak dialog "ASF Wizard", cari dan pilih driver "SERCOM USART". Kemudian klik "Apply" untuk membuat proyek.
5). Sekarang Anda dapat mulai membuat kode untuk proyek Anda. Dalam contoh ini, kita akan menulis program sederhana yang mengirim dan menerima data melalui antarmuka USART. Program ini akan mengirimkan string "Hello World" dan kemudian menunggu data yang masuk. Jendela editor kode biasanya terletak di tengah antarmuka pengguna Atmel Studio. Jika Anda tidak melihat jendela editor kode, Anda dapat membukanya dengan mengklik dua kali pada berkas .c yang telah Anda tambahkan ke proyek Anda di panel Solution Explorer. Atau, Anda dapat memilih berkas tersebut di panel Solution Explorer, lalu klik "View" > "Code" dari bilah menu untuk membuka jendela editor kode.
#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). Bangun dan jalankan program di simulator dengan memilih "Debug" -> "Mulai Debugging dan Hentikan" dari bilah menu. Anda kemudian dapat menelusuri kode baris demi baris dan memantau nilai variabel di jendela "Watch".
Itu saja! Sekarang Anda bisa menggunakan simulator SAMD21 untuk menguji dan men-debug proyek mikrokontroler Anda.
Contoh Kode SAMD21 Tambahan
Secara umum, contoh kode samd21 dapat ditemukan di Atmel Software Framework dan Atmel mbed Online Compiler. Selain itu, apakah kode tersebut berfungsi dengan normal atau tidak bergantung pada papan pengembangan yang digunakan. Berikut ini beberapa contoh dasar:
LED berkedip:
#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);
}
Pembacaan Masukan Analog:
#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);
}
Kontrol Servo:
#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);
}
Contoh Interupsi:
#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++;
}
Perbandingan SAMD21 dengan STM32
Mikrokontroler seperti SAMD21 dan STM32 memiliki banyak kesamaan. Keduanya merupakan mikrokontroler 32-bit yang didasarkan pada inti ARM® Cortex™-M0+ dan dilengkapi dengan beragam fitur periferal. Namun, terdapat pula beberapa perbedaan utama di antara keduanya. Rinciannya ditampilkan pada tabel di bawah ini:
| 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 |




