Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

Berkenalan Dengan Board STM8S103F3P6 Yang Mungil

Board STM8S103F3P6 pertama kali saya beli karena ingin lebih fokus mempelajari mikrokontroler STM8S103F3P6. Sebelumnya, saya mempelajari STM8S003F3P6 yang ada dalam modul ESP-14 ( baca tulisan: ESP-14 – DUET ASIK ANTARA ESP8266 DAN STM8S003F3P6 ). Karena merasa ribet dengan modul ESP-14, akhirnya saya membeli board STM8S103F3P6 sehingga bisa lebih fokus dan nyaman mempelajari mikrokontrolernya.

Perlu diketahui bahwa STM8S003 hanya berbeda sedikit saja dengan STM8S103, yakni kapasitas EEPROM. STM8S003 memiliki kapasitas EEPROM 128 byte, sedangkan STM8S103 memiliki kapasitas EEPROM 640 byte.

 

Penampakan Board STM8S103F3P6

Gambar di bawah ini adalah foto penampakan board STM8S103F3P6. Board ini dapat disuplai dengan tegangan DC 5V melalui port mini USB atau melalui pin 5V dan GND dibagian bawah (pin ketiga dan keempat dari kanan).

Selain DC 5V, board juga bisa disuplai menggunakan tegangan dengan rentangan 4,5V – 15V DC. Suplai tegangan ini dapat dihubungkan pada pin + dan pin – yang berada di pojok kiri-atas dan kiri-bawah board.

IMG_20171010_161826

Untuk keperluan pemrograman, board ini juga telah menyediakan port yang terdiri pin-pin 3V3, SWIM, GND dan NRST. Kita dapat langsung menghubungkan pin-pin tersebut ke pin-pin USB Programmer ST-LINK V2.

 

Kelengkapan Minimal Bereksperimen STM8S103F3P6

Untuk bereksperimen dengan STM8S103F3P6 dibutuhkan beberapa komponen tambahan antara lain: programmer ST-LINK V2 dan konverter USB-to-Serial.

Programmer ST-LINK V2 mutlak diperlukan karena untuk komponen ini berfungsi untuk memasukkan program ke dalam memori mikrokontroler.

Konverter USB-to-Serial dibutuhkan untuk melakukan komunikasi serial antara komputer dengan board STM8S103F3P6. Dan jika kita menggunakan Forth untuk memrogram STM8S, maka USB-to-Serial ini akan sangat dibutuhkan.

Berikut ini adalah gambar komponen-komponen yang dibutuhkan untuk bereksperimen dengan board STM8S103F3P6.

stm8s+stlink

Beberapa komponen lain yang tidak masuk dalam foto di atas adalah Power Supply dan Project Board beserta kabel jumper.

 

Memrogram Memori STM8S103F3P6

Untuk memrogram memori (flash dan eeprom) mikrokontroler STM8S103F3P6, kita bisa menggunakan program stm8flash. Program ini bisa kita download dari situs https://github.com/vdudouyt/stm8flash.

Hubungkan programmer ST-LINK V2 dengan board STM8S103F3P6. Ada 4 pin yang perlu dihubungkan yakni: 3V3, SWIM, GND dan NRST.

IMG_20171012_072314

Penggunaan program ini cukup mudah, berikut adalah beberapa contoh penggunaannya.

stm8flash -c stlinkv2 -p stm8s103f3 -w demoled.bin
stm8flash -c stlinkv2 -p stm8s003f3 -w demoled.bin
stm8flash -c stlinkv2 -p stm8s103f3 -s eeprom -w eep.bin

 

Bahasa Pemrograman STM8S103F3P6

Untuk menyusun program mikrokontroler STM8S, kita bisa menggunakan bahasa Assembly, bahasa C atau bahasa Forth.

Untuk bahasa Assembly dan C, kita bisa menggunakan assembler dan kompiler yang disediakan oleh SDCC. Tidak semua versi SDCC mendukung mikrokontroler STM8S, oleh karenanya pilih versi SDCC yang mendukung mikrokontroler STM8S.

Versi SDCC yang saya gunakan adalah versi 3.6.3

Contoh Pemrograman Dengan SDDC

Berikut adalah contoh program STM8S menggunakan bahasa C yang dikompilasi menggunakan kompiler SDCC 3.6.3. Simpan kode program berikut dengan nama file led.c.

#include <stdint.h>

#define CLK_DIVR	(*(volatile uint8_t *)0x50c6)
#define CLK_PCKENR1	(*(volatile uint8_t *)0x50c7)

#define TIM1_CR1	(*(volatile uint8_t *)0x5250)
#define TIM1_CNTRH	(*(volatile uint8_t *)0x525e)
#define TIM1_CNTRL	(*(volatile uint8_t *)0x525f)
#define TIM1_PSCRH	(*(volatile uint8_t *)0x5260)
#define TIM1_PSCRL	(*(volatile uint8_t *)0x5261)

#define PB_ODR	(*(volatile uint8_t *)0x5005)
#define PB_DDR	(*(volatile uint8_t *)0x5007)
#define PB_CR1	(*(volatile uint8_t *)0x5008)


unsigned int clock(void)
{
	unsigned char h = TIM1_CNTRH;
	unsigned char l = TIM1_CNTRL;
	return((unsigned int)(h) << 8 | l);
}

void main(void)
{
	CLK_DIVR = 0x00; // Set the frequency to 16 MHz

	// Configure timer
	// 1000 ticks per second
	TIM1_PSCRH = 0x3e;
	TIM1_PSCRL = 0x80;
	// Enable timer
	TIM1_CR1 = 0x01;

	PB_DDR = 0x20;
	PB_CR1 = 0x20;

	for(;;)
		PB_ODR = clock() % 1024 < 256 ? 0x20 : 0;
}

Untuk mengompilasi kode program di atas dan meng-upload ke memori flash STM8S103F3P6, kita gunakan perintah sbb:

sdcc -mstm8 --std-c99 led.c 
stm8flash -c stlinkv2 -p stm8s103f3 -w led.ihx

 

Pemrograman STM8S Dengan Forth

Sebelum dapat memrogram menggunakan Forth, terlebih dahulu mikrokontroler kita isi dengan program Forth. Untuk keperluan tersebut, kita bisa menggunakan stm8ef, yakni versi eForth untuk mikrokontroler STM8S.

Software stm8ef bisa didownload dari situs: https://github.com/TG9541/stm8ef.

Selanjutnya, kita bisa mengisi mikrokontroler STM8S103F3P6 dengan program Forth yang telah tersedia dengan perintah:

make flash BOARD=MINDEV

Setelah program stm8ef masuk ke dalam mikrokontroler, kita dapat menghubungkan board STM8S103F3P6 dengan komputer menggunakan konverter USB-to-Serial.

IMG_20171012_093815

Selanjutnya, kita dapat menggunakan program terminal seperti Hyperterminal, picocom atau yang lain untuk memrogram board STM8S103F3P6 melalui port serial.

Untuk keperluan ini, saya menggunakan program e4thcom yang dapat di download dari situs: https://wiki.forth-ev.de/doku.php/en:projects:e4thcom.

Berikut adalah foto interaksi antara program e4thcom dengan board STM8S103F3P6 yang sudah saya tanami dengan stm8ef yang sudah saya modifikasi.

IMG_20171012_095319

Nah, demikianlah tulisan singkat “Berkenalan Dengan Board STM8S103F3P6 Yang Mungil” yang bisa saya sampaikan. Semoga bermanfaat.

Selamat berkarya.