Uji blinking led STM8 STM8S103F3P6

Di post sebelumnya telah memuat catatan uji coba dan setup untuk keluarga mikrokontroler produksi dari TI (Texas Instrument); MSP430, MSP432 dan Tiva C.  Pada catatan ini akan dipaparkan uji coba untuk mikrokontroler produksi dari STMicroelectronics (ST) yaitu salah satu anggota keluarga STM8, tepatnya μC STM8S103F3. Mikrokontroler STM8S103F3P6 adalah mirkokontroler 8-bit, sama dengan keluarga ATmega8535 (ATmega) dan ATtiny85 (ATtiny). Dan sama pula dengan keluarga AVR, STM8S103F3 dapat diprogram dengan software di sistem GNU/Linux seperti Ubuntu, Mint, BlankOn.

wp-1470912333051.jpegGambar 1. Uji pemrograman STM8 di GNU/Linux.

Untuk melakukan pemrograman singkat dan sederhana pada STM8 hanya diperlukan sebuah text editor seperti nano atau gedit dan terminal untuk mengunggah kode ke STM8.

ashampoo_snap10.pngGambar 2. Pemrograman pada terminal di GNU/Linux

 

Perangkat compiler yang dipergunakan untuk melakukan pemrograman pada STM8 (STM8S103F3P6) yang tersedia gratis tanpa batasan adalah SDCC. SDCC (Small Device C Compiler) dapat dipergunakan di sistem GNU/Linux maupun MS Windows. Untuk memprogram STM8 diperlukan SDCC dari versi yang sudah memiliki fasilitas untuk pemrograman STM8, misalnya di atas versi 3.5.0. Saya sendiri mempergunakan versi yang lebih baru:

$ sdcc -v
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.6.0 #9615 (Linux)
published under GNU General Public License (GPL)

 

Sebagaimana prinsip dasar saat mencoba mempelajari sesuatu yang intinya meminimalkan sedapat mungkin berbagai sumber/faltor masalah/kesalahan maka untuk menguji sistem ini pun sebaiknya mempergunakan contoh yang diperkirakan lebih dapat dipercaya akan menghasilkan pengujian yang baik. Atau setidaknya mengambil dari sumber yang sudah pernah melaporkan hasil pengujian dan melakukan modifikasi untuk memperbaiki bug atau kesalahan. Untuk uji coba ini, contoh yang dapat dipakai bersumber dari: http://technologyrealm.blogspot.co.id/2015/07/getting-started-with-stm8-development.html atau http://www.cnx-software.com/2015/04/13/how-to-program-stm8s-1-board-in-linux/. Keduanya mengacu pada sumber kode asli (stm8-examples-sdcc) yang sama yang kemudian dimodifikasi.

#include "stm8l.h"

int main() 
{
	int d;
	// Configure pins
	PB_DDR = 0x20; //ganti dari 0x80 ke 0x20
	PB_CR1 = 0x20; //ganti dari 0x80 ke 0x20
	// Loop
	do 
	{
		PB_ODR ^= 0x20; //ganti dari 0x80 ke 0x20
		for(d = 0; d < 29000; d++) { }
	} while(1);
}

Dalam file contoh yang sama dapat dilihat isi dari makefile. Konfigurasi berikut adalah hasil modifikasi dari pengaturan aslinya;

SDCC=sdcc
SDLD=sdld
OBJECTS=blinky.ihx
 
.PHONY: all clean flash
 
all: $(OBJECTS)
 
clean:
    rm -f $(OBJECTS)
 
flash: $(OBJECTS)
    stm8flash -c stlinkv2 -p stm8s103f3 -w $(OBJECTS)
 
%.ihx: %.c
 
    $(SDCC) -lstm8 -mstm8 --out-fmt-ihx $(CFLAGS) $(LDFLAGS) $<

Adapun isi lengkap dari file  asli  contoh terlihat di Gambar 1.

Gambar 3.

Untuk kompilasi tunggal, bisa dilakukan dengan perintah:

$ sdcc -lstm8 -mstm8 --out-fmt-ihx blinky.c

Berikutnya, untuk melakukan upload ke mikrokontroler STM8S103F3P6 diperlukan program stm8flash. Ada dua cara agar program ini dapat diinstalasi di komputer. Pertama dengan cara mengunduh (download) dari dengan alamat; https://github.com/vdudouyt/stm8flash/archive/master.zip. Cara lain adalah dengan mempergunakan git ($ sudo apt-get install git). Perintah yang dengan mempergunakan git adalah; git clone https://github.com/vdudouyt/stm8flash.git. Perintah lengkapnya adalah:

git clone https://github.com/vdudouyt/stm8flash.git

cd stm8flash
make
sudo make install

Perintah untuk mengunggah ke mikrokontroler dengan stm8flash dapat dilakukan dengan cara;

$ stm8flash -c stlinkv2 -p stm8s103f3 -w blinky.ihx

 

Saya mempergunakan versi papan sistem yang murah dari mikrokontroler STM8S103F3P6 sebagaimana yang telah dilaporkan di dua situs ini;

http://www.cnx-software.com/wp-content/uploads/2015/01/STM8S_Board_Schematics.png
Gambar 4. [image credit: cnx-software.com]

Papan yang saya miliki hampir serupa dengan tampilan pada Gambar 4. Tetapi posisi led untuk pengguna berbeda. Pada papan terdapat dua led, led yang berwarna biru adalah indikator catu daya dan memiliki tulisan penanda PWR. Sedangkan led yang berwarna merah dengan tulisan penanda TEST adalah led yang dapat dipergunakan oleh programer. Led merah pada papan yang saya miliki terhubung pada pin PB5 (port B5) dan bukan pada Port D atau Port E. Tampilan yang lebih tepat seperti pada Gambar 5.

Image

Gambar 5. [image credit:  forum.hobbycomponents.com]

Untuk papan yang saya miliki ada saat pertama mikrokontroler tidak berhasil diprogram. Seperti umumnya solusi permasalahan teknis seperti ini sudah pernah dikemukakan [link]. Caranya pertama adalah dengan mengunduh (download) file berikut; optdefault.bin . Jalu menjalankan perintah;

$ stm8flash -c stlinkv2 -p stm8s103f3 -s opt -w optdefault.bin

Setelah itu baru jalankan perintah;

$ stm8flash -c stlinkv2 -p stm8s103f3 -w blinky.ihx

 

Cara lain untuk melakukan pemrograman adalah dengan menggunakan make dan makefile. Tentang tutorial mengenai makefile sendiri sudah saya cantumkan daftar urutan tutorial pada bagian akhir catatan sebelumnya. Misalnya untuk contoh ini pemanggilan make dapat dilakukan sesuai tujuan. Untuk menghasilkan file intel hex, cukup dengan memanggil make dari dalam direktori file C sumber.

$ make

Untuk melakukan uploading ke mikrokontroler, bisa dilakukan dengan perintah yang sesuai isi penamaan di dalam makefile. Misalnya untuk contoh ini;

$ make flash

 

wp-1470913902302.jpegGambar 6.

 

Saya mempergunakan ST-Link V2 compatible dongle. Untuk keperluan ini hanya bagian satu sisi dari header yang dipergunakan. Jalur untuk sinyal RST (untuk NRST), SWIM, GND, 3.3V. Hubungan dari dongle ini ke papan mikrokontroler tidaklah lurus. Hubungan antara GND dan SWIM tidak lurus akibat letak pin yang berbeda.

wp-1470808435627.jpegGambar 7.

 

img_20160810_020354.jpgGambar 8. Hasil pengukuran pada pin PB5

img_20160810_020654.jpgGambar 9.

Dari situs STMicroelectronics terdapat beberapa dokumen yang bisa dipakai untuk sember belajar. Diantaranya saya urutkan sebagai berikut;

  • AN2752: Getting started with the STM8S and STM8A [download]
  • RM0016: STM8S series and STM8AF series 8-bit microcontrollers
    [download]
  • DS6120: STM8S103F3 datasheet [download]
  • PM0051: How to program STM8S and STM8A Flash program memory and data EEPROM
    [download]
  • PM0044: STM8 CPU programming manual [download]

Leave a Comment