SAMD21 Simülatörleri: Programlama ve Hata Giderme

İçindekiler

Download Atmel Studio 7 from the Atmel website

Simülatörlerle programlama ve hata ayıklama, SAMD21 mikrodenetleyicisine başlamak için harika bir yol olabilir. Bu, gömülü sistemlere yeni başlayan ve bunların nasıl çalıştığını daha iyi anlamak isteyenler için mükemmel bir platform sunar. Çeşitli simülatörlerden yararlanarak, projeleri ve uygulamaları hızlı ve kolay bir şekilde geliştirmek mümkündür. Öğreticiler ve uygulamalı deneyimlerin birleşimi sayesinde, SAMD21 programlamasının temellerini kısa sürede öğrenebilirsiniz. Bu yazıda, SAMD21 simülatörlerinin türlerini, simülatörlerde hata ayıklama programlarını, SAMD21 kod örneklerini ve daha fazlasını öğreneceksiniz.

SAMD21 Simülatörü nedir?

SAMD21 Simülatörü, kullanıcıların bir SAMD21 mikrodenetleyicisinin davranışını simüle etmelerine olanak tanıyan bir bilgisayar programıdır. Bu simülatör, SAMD21 işlemcisi için programları test etmek veya gömülü uygulamalar geliştirmek amacıyla kullanılabilir. Fiziksel donanıma ihtiyaç duymadan SAMD21 mikrodenetleyicisi üzerinde programları hata ayıklamak ve test etmek için bir ortam sağlar. UART, SPI, I2C, zamanlayıcılar ve darbe genişlik modülatörleri gibi çeşitli çevre birimleri içerir. Simülatör ayrıca bir assembler, derleyici ve hata ayıklayıcı içeren bir IDE'ye sahiptir. Örneğin, bir kullanıcı SAMD21 tabanlı bir cihaz için bir program geliştiriyorsa, simülatörü kullanarak programı test edebilir ve fiziksel donanıma ihtiyaç duymadan hata ayıklama yapabilir.

SAMD21 için Simülatör Türleri

Simülatörler, fiziksel bir sistemin davranışını taklit eden bilgisayar programlarıdır. Fiziksel donanıma ihtiyaç duymadan kodların test edilmesini sağladıkları için genellikle gömülü sistem programlamasında kullanılırlar. SAMD21 için kullanılan simülatörler arasında Arduino Create, Proteus ve QEMU bulunmaktadır.

Atmel Studio 7

Atmel Studio 7, önde gelen mikrodenetleyici üreticisi Atmel tarafından geliştirilen bir entegre geliştirme platformudur (IDP). Kullanıcıların Atmel AVR ve ARM mikrodenetleyicileri için uygulamalar yazmasına, derlemesine, hata ayıklamasına ve dağıtmasına olanak tanıyan güçlü bir geliştirme ortamıdır. Çok çeşitli geliştirme kartlarını destekler ve kodlama, hata ayıklama ve programlama için grafik kullanıcı arayüzü (GUI) araçları sunar. Ayrıca yazılım hata ayıklama, izleme analizi ve simülasyon için eksiksiz bir araç setine sahiptir. Özelliklere örnek olarak hata ayıklama, devre içi emülatör, kod düzenleyici, cihaz programlama ve sürüm kontrol sistemleri verilebilir. 

Proteus

Proteus, SAMD21 dahil olmak üzere çeşitli gömülü sistemleri simüle etmek için kullanılabilen bir simülatördür. Sensörler, aktüatörler ve ekranlar dahil olmak üzere çok çeşitli bileşenleri destekler. Ayrıca hata ayıklama araçları sunar ve simüle edilen donanım üzerinde kod çalıştırılmasına olanak tanır.

KVM

QEMU, gömülü sistem programlamasında yaygın olarak kullanılan açık kaynaklı bir simülatördür. ARM dahil olmak üzere çok çeşitli mimarileri destekler ve SAMD21'i simüle etmek için kullanılabilir. Hata ayıklama araçları sunar ve genellikle fiziksel donanıma ihtiyaç duymadan kodları test etmek için kullanılır.

SAMD21 Programını Simülatörlerle Nasıl Hata Ayıklayabilirim?

Hata ayıklama, SAMD21 programlamasının önemli bir parçasıdır. Bu işlem, kodunuzdaki hataları projenizde sorunlara yol açmadan önce bulmanızı ve düzeltmenizi sağlar. Hata ayıklayıcıyı ve seri monitörü kullanmak, koddaki sorunları gidermek ve programınızdaki hataları bulmak için harika bir yol olabilir. Kodunuzda hata ayıklamaya başlamadan önce bu araçların nasıl çalıştığını iyi bir şekilde anladığınızdan emin olmanız önemlidir. Burada Atmel Studio 7 simülatöründe bir örnek sunuyoruz:

1). SAMD21 mikrodenetleyici için uyumlu bir yazılım paketini indirin ve kurun. Atmel Studio 7 bu tür yazılımların bir örneğidir ve Atmel web sitesinden veya aşağıdaki URL'den indirilebilir.

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'de "Dosya" -> "Yeni" -> "Proje" seçeneklerini seçerek yeni bir proje oluşturun. "GCC C ASF Kart Projesi" seçeneğini seçin ve "Tamam" düğmesine tıklayın.

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). Simüle edeceğiniz kartı ve mikrodenetleyiciyi seçin. Bu örnekte, SAMD21 Xplained Pro kartını ve ATSAMD21J18A mikrodenetleyiciyi kullanacağız.

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

4). "ASF Sihirbazı" iletişim kutusunda "SERCOM USART" sürücüsünü bulun ve seçin. Ardından projeyi oluşturmak için "Uygula" düğmesine tıklayın.

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). Artık projenizi kodlamaya başlayabilirsiniz. Bu örnekte, USART arabirimi üzerinden veri gönderen ve alan basit bir program yazacağız. Program, "Hello World" dizesini gönderecek ve ardından gelen verileri bekleyecektir. Kod düzenleyici penceresi genellikle Atmel Studio kullanıcı arayüzünün ortasında bulunur. Kod düzenleyici penceresini görmüyorsanız, Solution Explorer bölmesinde projenize eklediğiniz .c dosyasına çift tıklayarak pencereyi açabilirsiniz. Alternatif olarak, Solution Explorer bölmesinde dosyayı seçip menü çubuğundan "View" > "Code" seçeneğine tıklayarak kod düzenleyici penceresini açabilirsiniz.

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). Menü çubuğundan "Hata Ayıklama" -> "Hata Ayıklamayı Başlat ve Durdur" seçeneklerini seçerek programı derleyin ve simülatörde çalıştırın. Ardından kodu adım adım inceleyebilir ve "İzleme" penceresinde değişkenlerin değerlerini görebilirsiniz.

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"

İşte bu kadar! Artık mikrodenetleyici projelerinizi test etmek ve hata ayıklamak için SAMD21 simülatörünü kullanabilirsiniz.

Ek SAMD21 Kod Örnekleri

Genel olarak, samd21 kod örnekleri Atmel Yazılım Çerçevesi ve Atmel mbed Çevrimiçi Derleyicisi'nde bulunabilir. Ayrıca, bu örneklerin düzgün çalışıp çalışmayacağı, kullanılan geliştirme kartına bağlıdır. İşte bazı temel örnekler:

Yanıp sönen 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);
}

				
			

Analog Giriş Değeri:

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

				
			

Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo Servo

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

				
			

Kesme Örneği:

				
					#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 ile STM32'nin Karşılaştırılması

SAMD21 ve STM32 gibi mikrodenetleyiciler birçok açıdan birbirine çok benzemektedir. Her ikisi de ARM® Cortex™-M0+ çekirdeklerine dayanan 32 bit mikrodenetleyicilerdir ve çok çeşitli çevresel özelliklere sahiptir. Bununla birlikte, ikisi arasında bazı önemli farklılıklar da bulunmaktadır. Ayrıntılar aşağıdaki tabloda gösterilmiştir:

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

Abone ol

Aylık blog güncellemeleri, teknoloji haberleri ve vaka analizleri almak için abone listemize katılın. Asla spam göndermeyeceğiz ve istediğiniz zaman aboneliğinizi iptal edebilirsiniz.

Scroll to Top

Instant Quote