1. Pendahuluan
Dalam bagian ini akan dibahas tentang General Purpose Input / Output (GPIO) dan konfigurasinya. DSP TMS320F28335 memiliki 88 pin GPIO, namun pada board F28335 Delfino Experimenter Kit ini hanya terdapat 47 pin GPIO saja. Masing-masing pin GPIO memiliki 4 macam fungsi yang berbeda yang dapat dipilih oleh user / programmer. GPIO dikelompokkan menjadi 3 port yakni port A (GPIO0 – GPIO31), port B (GPIO32 – GPIO63) dan port C (GPIO64 – GPIO87). Tegangan keluaran maksimum dan tegangan masukan maksimum pin GPIO adalah +3,3V. Tegangan masukan ke pin input GPIO yang melebihi +3,3V dapat merusak experimenter kit ini.
2. GPIO Register
Untuk konfigurasi GPIO, register-register yang perlu untuk dideklarasikan dalam program utama seperti yang digambarkan dalam Gambar 1. Secara umum, register GPIO dikelompokkan menjadi 2 group register yakni register kontrol (GpioCtrlRegs) dan register data (GpioDataRegs) seperti yang digambarkan pada bagan register GPIO pada Gambar 2 dan 3. Masing-masing register kontrol dan register data GPIO merupakan register 32 bit.
Gambar 1. Register GPIO
Gambar 2. Register Kontrol GPIO
Gambar 3. Register Data GPIO
A. REGISTER KONTROL
- GPxMUX
GPxMUX digunakan untuk pemilihan fungsi digital I/O dan peripheral. Terdapat 4 fungsi berbeda pada masing-masing pin GPIO dan group port. Konfigurasi GPxMUX terbagi 2 bagian yakni GPxMUX1 dan GPxMUX2 yang masing-masingnya merupakan register 32 bit untuk mengatur fungsi 15 pin GPIO pada setiap group port. Tabel 1 menunjukkan konfigurasi fungsi pin GPIO pada register GPxMUX1 dan GPxMUX2. Sebagai contoh cara konfigurasi register kontrol GPAMUX1 adalah sebagai berikut : untuk menggunakan pin GPIO0 sebagai digital I/O maka bit 0 dan bit 1 pada register GPAMUX1 harus diberi nilai 00 (biner), bila digunakan sebagai EPWM1A maka harus diberi nilai 01. Untuk syntax perintah dalam program utama dapat dilihat pada tabel interaktif * , Tabel 2 (* Catatan : ubah nilai bit register kontrol GPAMUX1 pada tabel). Syntax program untuk mengkonfigurasikan GPxMUX dapat dilakukan dengan cara global (keseluruhan 15 pin GPIO) atau dapat pula dikonfigurasikan per masing-masing pin GPIO. Dalam tutorial bagian ini, pin GPIO difungsikan sebagai output digital untuk menyalakan lampu LED pada papan rangkaian pengujian. Oleh karena itu register GPxMUX dideklarasikan sebagai fungsi input / output digital (I/O).
Keterangan : GPIO yang ditandai dengan warna biru pada Tabel 1 adalah pin GPIO yang tidak tersedia dalam F28335 Delfino Experimenter Board.
Tabel 2 : Tabel Interaktif Konfigurasi Register Kontrol GPAMUX1 dan Syntax Perintah Program Utama
- GPxDIR
GPxDIR merupakan register kontrol pengaturan arah data (sebagai input atau output). Pada kondisi default, pin GPIO akan berfungsi sebagai input data ketika dikonfigurasikan sebagai Digital I/O pada GPxMUXn. Untuk menjadikan pin GPIO sebagai output data, maka pin GPxDIR ini dikonfigurasikan dengan nilai 1. Register ini tidak berpengaruh pada pin GPIO ketika dikonfigurasikan sebagai peripheral (1, 2, atau 3). Sebagai contoh pin GPIO0 dijadikan sebagai output dengan cara sebagai berikut :
GpioCtrlRegs. GPAMUX1.bit.GPIO0 = 0; // GPIO0 sebagai I/O digital
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // GPIO0 sebagai output
Syntax perintah diatas merupakan contoh konfigurasi per masing-masing pin GPIO (deklarasi individual). Untuk deklarasi register secara global dapat menggunakan syntax perintah sebagai berikut :
GpioCtrlRegs. GPAMUX1.all = 0; // GPIO0-15 sebagai I/O digital
GpioCtrlRegs.GPADIR.bit.all= 0xFFFF0000; // GPIO0-7 sebagai output, GPIO8-15 sebagai input
Catatan : Bilangan hexadecimal menggunakan "0x" di depannya sedangkan bilangan desimal dituliskan langsung.
- GPxPUD
Register kontrol ini digunakan untuk internal pull-up pada pin GPIO0 – 31dimana kondisi default internal pull-up GPIO0-11 “disable” dan GPIO12-31 “enable”
- GPxQSEL1, GPxQSEL2 dan GPxCTRL
Register GPxQSEL1, GPxQSEL2 dan GPxCTRL digunakan sebagai filter sinyal noise ketika pin GPIO (GPIO0 – GPIO63) digunakan sebagai input data.
B. REGISTER DATA
- GPxDATA
Pembacaan data (sebagai input) atau penulisan data (sebagai output) pada pin GPIO menggunakan register data GPxDATA. Selain itu ada 3 register data lainnya yang dapat digunakan untuk penulisan data (sebagai output) yakni : GPxSET, GPxCLEAR dan GPxTOGGLE
- GPxSET
Output pin GPIO akan menjadi aktif “tinggi” ketika register data GPxSET bernilai 1. Sebagai contoh, untuk membuat output pin GPIO1 aktif tinggi adalah dengan menggunakan instruksi perintah pada program utama sebagai berikut :
GpioDataRegs.GPASET.bit.GPIO1 = 1;
- GPxCLEAR
Register ini merupakan kebalikan fungsi dari GPxSET, output pin GPIO akan aktif “rendah” ketika register data ini bernilai 1. Sebagai contoh :
GpioDataRegs.GPACLEAR.bit.GPIO1 = 1;
- GPxTOGGLE
GPxTOGGLE merupakan register data untuk menjadikan output pin GPIO yang pada kondisi awalnya aktif “tinggi” menjadi aktif “rendah” dan sebaliknya. Contoh penggunaan register GPxTOGGLE (asumsi kondisi awal : pin GPIO1 aktif “tinggi”) :
GpioDataRegs. GPASET.bit.GPIO1 = 1; // Kondisi awal GPIO1 aktif “tinggi”
GpioDataRegs. GPATOGGLE.bit.GPIO1 = 1; // pin GPIO1 menjadi aktif “rendah”
GpioDataRegs. GPATOGGLE.bit.GPIO1 = 1; // pin GPIO1 kembali menjadi aktif “tinggi”
3. Modul Clock F28335
DSP TMS320F28335 pada Control card F28335 release 2.2 ini menggunakan pembangkit sinyal clock eksternal yang digerakkan oleh crystal oscillator 30 MHz. Secara internal, frekuensi clock ini dapat dinaikkan hingga 150MHz (frekuensi maksimum TMS320F28335) dengan menyesuaikan setting konfigurasi pada kontrol register PLL (PLLCR). Modul clock dan registernya diilustrasikan pada gambar 4. Distribusi sinyal clock seperti yang terlihat pada gambar 5.
Gambar 4. Modul Clock F28335
Gambar 5. Domain Clock dan Reset
REGISTER MODUL CLOCK F28335
- PLLCR (Phase-Locked Loop Control Register)
- PLLSTS (Phase-Locked Loop Status)
- PCLKCR (Peripheral Clock Control Register)
4. Modul Watchdog Timer
Modul watchdog (watchdog timer) merupakan sebuah timer/counter yang bekerja secara independen. Fungsi dari watchdog adalah mendeteksi dan memulihkan CPU dari kegagalan sistem (hardware atau software). Pada kondisi normal, CPU akan me-restart counter pada watchdog timer secara berkala. Namun ketika terjadi gangguan/kegagalan sistem hardware atau software, CPU akan mengalami kegagalan untuk me-restart counter pada watchdog timer. Akibatnya, hitungan counter watchdog timer melimpah (overflow) dan watchdog timer akan mengirimkan sinyal reset ke CPU agar sistem dapat kembali ke kondisi normal. Pada control card F28335, sinyal clock watchdog timer diperoleh langsung dari oscillator (OSCCLK) sedangkan clock CPU diperoleh modul clock (CLKIN). Watchdog timer secara sederhana seperti yang diilustrasikan pada gambar 6. Modul watchdog timer beserta register-registernya digambarkan pada gambar 7.
Gambar 6. Watchdog Timer
Gambar 7. Modul Watchdog Timer dan Register
REGISTER MODUL WATCHDOG TIMER
- WDCR (Watchdog Control Register)
- WDKEY (Watchdog Key Register)
5. Latihan
Tujuan utama dari latihan ini adalah untuk mempelajari penggunaan dan konfigurasi dari GPIO, modul clock dan watchdog timer. Latihan terdiri dari 3 bagian yakni : Project_1: 8-Bit Binary Counter, Project_2: Running Light dan Project_3: 8-Bit Binary Counter dengan Tombol Start-Stop.
A. Project_1: 8-Bit Binary Counter
Pada latihan “Project_1”, 8 pin GPIO dikonfigurasikan sebagai output untuk menyalakan LED (binary counter). Pin GPIO yang digunakan adalah pin GPIO0 – GPIO7. Koneksi hardware seperti yang terlihat pada Gambar 8.
Gambar 8. Koneksi Hardware
1. Hubungkan pin GPIO0-7 ke LED, pin 3V3 dan Ground seperti terlihat pada gambar 8. Sambungkan kabel USB pada Docking station ke PC.
2. Double click icon Code Composer Studio pada desktop, buat project CCS baru.
3. Pilih target processor: 2833x Delfino >> Experimenter’s Kit – Delfino F28335, beri nama “Project_1”, gunakan lokasi direktori default lalu click “Finish” (lihat Gambar 9).
Gambar 9. New Project
4. Pada project explorer, click kanan “Project_1 [Active – Debug]”, click “Properties” (Gambar 10).
Gambar 10. Properties Project
5. Pilih Build >> C2000 Linker >> Basic Options. Ubah stack size menjadi 0x400 lalu click “OK” (Gambar 11).
Gambar 11. Basic Option C2000 Linker
6. Click kanan “Project_1 [Active – Debug]” pada project explorer, pilih Build >> C2000 Compiler >> Include Options. Pada bagian “Add dir to #include search path”, click tombol add (lihat Gambar 12). Tambahkan direktori :
“C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\include”, kemudian click “OK”. Hasil penambahan direktori file header seperti yang terlihat pada Gambar 13, kemudian click “OK”. Langkah ini bertujuan untuk mengarahkan pencarian lokasi file header (DSP28335_Device.h). File header ini dibutuhkan untuk inisialisasi perangkat dan penggunaan peripheral dalam chip processor.
(a)
(b)
Gambar 12. (a) Include Options (b) Directory Path
Gambar 13. Hasil Penambahan Direktori File header
7. Click kanan “Project_1 [Active – Debug]” pada project explorer, pilih “Add Files” (lihat Gambar 14). Arahkan ke direktori :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\source
Caranya dengan copy dan paste direktori di atas pada isian “File Name”, lalu click “Open” (lihat Gambar 15) atau dengan cara mencari folder tersebut pada kolom navigasi folder pada bagian sebelah kiri. Click “DSP2833x_GlobalVariableDefs” lalu click “Open”. Pilih “Link to Files”, lalu click “OK” (lihat Gambar 16). File “DSP2833x_GlobalVariableDefs” ini mendefinisikan semua nama variabel global untuk mengakses memory map register peripheral.
Gambar 14. Penambahan File
(a)
(b)
Gambar 15. (a) Direktori Penambahan File (b) File yang Diperlukan
Gambar 16. Link Files
8. Ulangi langkah 8, untuk penambahan file berikut :
• DSP2833x_CodeStartBranch.asm
Direktori :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_common\source
• DSP2833x_Headers_nonBIOS.cmd
Direktori :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\cmd
Hasil dari langkah 6 - 8 dapat dilihat pada project explorer Code Composer Studio seperti Gambar 17.
CATATAN :
Pastikan header file (langkah 6) dan link file tambahan (langkah 7 dan 8) menggunakan versi yang sama. Versi file dapat dilihat dari nama sub folder yakni “v142” seperti yang terlihat pada list dibawah (warna merah). Penggunaan versi yang berbeda akan menyebabkan error pada saat compile (Debug).
List versi file header dan file link :
- Header :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\include
- DSP2833x_GlobalVariableDefs :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\source
- DSP2833x_CodeStartBranch.asm :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_common\source
- DSP2833x_Headers_nonBIOS.cmd :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\cmd
- Header :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\include
- DSP2833x_GlobalVariableDefs :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\source
- DSP2833x_CodeStartBranch.asm :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_common\source
- DSP2833x_Headers_nonBIOS.cmd :
C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\cmd
Gambar 17. Include File dan Penambahan Link File
9. Buat settingan konfigurasi target baru (Gambar 18). Click kanan “Project_1 [Active – Debug]” pada project explorer, pilih dan click New >> Target Configuration File. Beri nama file Target Configuration : “F28335Target.ccxml” kemudian click “Finish”. Kemudian pilih Connection : “Texas Instruments XDS100v1 USB Debug Probe”, centang pilihan “Experimenter’s Kit – Delfino F28335” lalu “Save” (Gambar 19).
Gambar 18. New Target Configuration
Gambar 19. Setup Target Configuration
10. Click “main.c” pada project explorer, hapus semua baris perintah yang tertulis. Ketik dan lengkapi bagian yang diberi tanda "?" pada source code berikut lalu “Save”
Source Code:
Source Code:
1 //==================================================================
2 // Source Code
3 // Project_1 : Digital Output (8‐Bit Binary Counter)
4 //==================================================================
5
6 #include "DSP2833x_Device.h"
7
8 // Prototype statements for functions found within this file.
9 void Gpio_select(void); // GPIO Function Selection Subroutine
10 void InitSystem(void); // Basic Core
Initialization Subroutine
11 void delay_loop(long); // Delay
Subroutine
12
13 // Main Subroutine
14 void main(void)
15 {
16 int counter=0; // Binary Counter
for Digital Output
17 InitSystem(); // Basic Core Initialization Subroutine
18 DINT; // Disable All Interrupts
19 Gpio_select(); // GPIO Function Selection Subroutine
20
21 while(1)
22 {
23 counter++;
24
25 // Write your 8‐Bit binary counter code here
26 // if bit 0 of counter = 1, set GPIO0 to 1
else clear GPIO0 to 0
27 // if bit 1 of counter = 1, set GPIO1 to 1
else clear GPIO1 to 0
28 // if bit 2 of counter = 1, set GPIO2 to 1
else clear GPIO2 to 0
29 // if bit 3 of counter = 1, set GPIO3 to 1
else clear GPIO3 to 0
30 // if bit 4 of counter = 1, set GPIO4 to 1
else clear GPIO4 to 0
31 // if bit 5 of counter = 1, set GPIO5 to 1
else clear GPIO5 to 0
32 // if bit 6 of counter = 1, set GPIO6 to 1
else clear GPIO6 to 0
33 // if bit 7 of counter = 1, set GPIO7 to 1
else clear GPIO7 to 0
34
35 delay_loop(1500000);
36 }
37 }
38
39 // Delay Subroutine
40 void delay_loop(long end)
41 {
42 long i;
43 for (i = 0; i < end;
i++)
44 {
45 asm(" NOP");
46 // EALLOW;
47 // SysCtrlRegs.WDKEY = 0x55; //WD counter will reset on next
AAh write
48 // SysCtrlRegs.WDKEY = 0xAA; //WD counter
is reset
49 // EDIS;
50 }
51 }
52
53 // GPIO Function Selection Subroutine
54 void Gpio_select(void)
55 {
56 EALLOW;
57
58 // GPAMUX1 >> for GPIO15 ... GPIO0
59 // GPAMUX2 >> for GPIO31 ... GPIO16
60 // GPBMUX1 >> for GPIO47 ... GPIO32
61 // GPBMUX2 >> for GPIO63 ... GPIO48
62 // GPCMUX1 >> for GPIO79 ... GPIO64
63 // GPCMUX2 >> for GPIO87 ... GPIO80
64 // Setting GPIO as Digital I/O function
65 // Individual GPIO function declaration
66 GpioCtrlRegs.GPAMUX1.bit.GPIO0 = ?;
67 GpioCtrlRegs.GPAMUX1.bit.GPIO1 = ?;
68 GpioCtrlRegs.GPAMUX1.bit.GPIO2 = ?;
69 GpioCtrlRegs.GPAMUX1.bit.GPIO3 = ?;
70 GpioCtrlRegs.GPAMUX1.bit.GPIO4 = ?;
71 GpioCtrlRegs.GPAMUX1.bit.GPIO5 = ?;
72 GpioCtrlRegs.GPAMUX1.bit.GPIO6 = ?;
73 GpioCtrlRegs.GPAMUX1.bit.GPIO7 = ?;
74 // Global GPIO function declaration
75 // GpioCtrlRegs.GPAMUX1.all = 0x????????;
76
77 // GPIADIR >> for GPIO31 ... GPIO0
78 // GPIBDIR >> for GPIO63 ... GPIO32
79 // GPICDIR >> for GPIO87 ... GPIO64
80 // Setting GPIO as output
81 // Individual GPIO direction declaration
82 GpioCtrlRegs.GPADIR.bit.GPIO0 = ?; // LED D1 at
GPIO0
83 GpioCtrlRegs.GPADIR.bit.GPIO1 = ?; // LED D2 at
GPIO1
84 GpioCtrlRegs.GPADIR.bit.GPIO2 = ?; // LED D3 at
GPIO2
85 GpioCtrlRegs.GPADIR.bit.GPIO3 = ?; // LED D4 at
GPIO3
86 GpioCtrlRegs.GPADIR.bit.GPIO4 = ?; // LED D5 at
GPIO4
87 GpioCtrlRegs.GPADIR.bit.GPIO5 = ?; // LED D6 at
GPIO5
88 GpioCtrlRegs.GPADIR.bit.GPIO6 = ?; // LED D7 at
GPIO6
89 GpioCtrlRegs.GPADIR.bit.GPIO7 = ?; // LED D8 at
GPIO7
90 // Global GPIO direction declaration
91 // GpioCtrlRegs.GPADIR.all = 0x????????;
92
93 EDIS;
94 }
95
96 // Basic Core Initialization Subroutine
97 void InitSystem(void)
98 {
99 EALLOW;
100 SysCtrlRegs.WDCR = 0x????; //Watchdog
enabled, 4.3 milliseconds
101 SysCtrlRegs.PLLSTS.bit.DIVSEL = ?;
102 SysCtrlRegs.PLLCR.bit.DIV = ??; //CLKIN = 30MHz *
10 / 2 = 150 MHz
103 EDIS;
104 }
105 //================================================================
106 // End of SourceCode.
107 //================================================================
11. Compile / cek error pada source code, click “Debug” pada toolbar (Gambar 20). Jika tidak ditemukan error pada source code, lanjutkan ke langkah berikut di bawah.
Gambar 20. Debug Toolbar
12. Click “CPU Reset” (Gambar 21), kemudian click “Restart” (Gambar 22) pada toolbar.
Gambar 21. CPU Reset Toolbar
Gambar 22. Restart Toolbar
13. Untuk mengeksekusi program yang telah di-compile, click “Resume” (Gambar 23) pada toolbar atau tekan tombol “F8” pada keyboard. Amati nyala lampu LED pada papan rangkaian pengujian. LED akan menyala sesaat menunjukkan bahwa counter pada watchdog timer overflow sebelum semua perintah pada source code selesai dieksekusi oleh CPU.
Gambar 23. Resume Toolbar
14. Untuk mengakhiri eksekusi program, click “Suspend” pada toolbar (Gambar 24) atau dengan menekan tombol “Alt + F8” pada keyboard secara bersamaan. Lalu click “CPU Reset” >> “Restart” dan terakhir click “Terminate” (Gambar 25) atau tekan tombol “Ctrl + F2” secara bersamaan pada keyboard.
Gambar 24. Suspend Toolbar
Gambar 25. Terminate Toolbar
B. Project_2: Running Light
15. LED menyala sesaat akibat counter watchdog timer selalu overflow. Oleh karena itu, hapus tanda "//" pada baris perintah 46 - 49 sehingga baris perintah tersebut tidak lagi menjadi sebuah comment dan perintah tersebut akan dieksekusi oleh CPU. Baris perintah tersebut merupakan langkah untuk me-reset counter pada watchdog timer agar tidak terjadi overflow. Setelah menghapus tanda "//" tersebut, "Save" source code dan lakukan compile / debug kembali (Ulangi langkah 11-13). Amati nyala LED. LED akan menyala sesuai dengan hitungan counter biner 8 bit. Jika anda mengalami kesulitan dalam melengkapi / modifikasi source code diatas, source code lengkap dapat anda lihat disini.
B. Project_2: Running Light
Project_2 merupakan modifikasi dari Project_1, dimana 8 LED akan menyala dengan diawali nyala LED paling tepi, menuju ke tengah dan kembali lagi ke tepi. Proses urutan nyala LED seperti yang terlihat pada gambar berikut:
Gambar 26. Urutan Nyala LED: Running Light
Langkah-langkah pemrograman:
1. Buka file source code Project_1 (main.c).
2. Lakukan modifikasi source code "main.c" ini sesuai dengan proses urutan penyalaan LED pada Gambar 26. Modifikasi source code hanya dilakukan pada bagian perulangan perintah while(1), seperti yang terlihat pada potongan source code:
Source Code:
while(1)
{
for(i=0;i<6;i++)
{
switch (i)
{
case 0: // LEDs:
10000001
{
GpioDataRegs.GPADAT.all = 0x81;
break;
}
case 1: // LEDs:
01000010
{
GpioDataRegs.GPADAT.all = 0x42;
break;
}
case 2: // LEDs:
00100100
{
GpioDataRegs.GPADAT.all = 0x24;
break;
}
case 3: // LEDs:
00011000
{
GpioDataRegs.GPADAT.all = 0x18;
break;
}
case 4: // LEDs:
00100100
{
GpioDataRegs.GPADAT.all = 0x24;
break;
}
case 5: // LEDs:
01000010
{
GpioDataRegs.GPADAT.all = 0x42;
break;
}
default: // LEDs:
00000000
{
GpioDataRegs.GPADAT.all = 0x00;
break;
}
}
//
end switch
delay_loop(1500000);
}
}
3. Lalu "Save As" sebagai "Project_2.c". Source code lengkap dapat dilihat pada link ini. Seperti yang terdapat pada source code diatas, variabel counter tidak diperlukan dan diganti dengan variabel baru yakni : "i" dengan tipe data unsigned interger.
Gambar 27. "Save As" File
4. Sebelum melakukan compile terhadap "Project_2.c", exclude file source code Project_1 dengan cara click kanan "main.c" pada "Project Explorer" lalu pilih dan click "Exclude from Build" (lihat Gambar 28 dan 29). Langkah ini dilakukan agar "main.c" tidak ikut serta di-compile / build oleh Code Composer Studio.
5. Compile "Project_2.c" (lihat Langkah 11). Jika tidak ditemukan error, lanjutkan ke langkah 12 - 14.
6. Amati urutan nyala LED apakah telah sesuai dengan yang diinginkan seperti Gambar 26.
C. Project_3: 8-Bit Binary Counter (with Start-Stop Button)
Project_3 adalah pengembangan dari Project_1 dimana terdapat penambahan 2 input tombol (push-button) untuk memulai dan menghentikan eksekusi perintah. GPIO60 dan GPIO62 difungsikan sebagai digital input dan pin GPIO tersebut dihubungkan ke pin tombol yang terdapat pada papan pengujian. Koneksi hardware dengan penambahan koneksi tombol (push-button) ke GPIO seperti yang ditunjukkan pada Gambar 30.
Langkah pemrograman:
1. Buka source code Project_1 "main.c". Tepat dibawah #include "DSP2833x_Device.h", tambahkan definisi START dan STOP berikut:
#define START GpioDataRegs.GPBDAT.bit.GPIO60 // Start Push‐Button SW1
#define STOP GpioDataRegs.GPBDAT.bit.GPIO62 // Stop Push‐Button SW2
C. Project_3: 8-Bit Binary Counter (with Start-Stop Button)
Project_3 adalah pengembangan dari Project_1 dimana terdapat penambahan 2 input tombol (push-button) untuk memulai dan menghentikan eksekusi perintah. GPIO60 dan GPIO62 difungsikan sebagai digital input dan pin GPIO tersebut dihubungkan ke pin tombol yang terdapat pada papan pengujian. Koneksi hardware dengan penambahan koneksi tombol (push-button) ke GPIO seperti yang ditunjukkan pada Gambar 30.
Gambar 30. Koneksi Hardware Project_3
Langkah pemrograman:
1. Buka source code Project_1 "main.c". Tepat dibawah #include "DSP2833x_Device.h", tambahkan definisi START dan STOP berikut:
#define STOP GpioDataRegs.GPBDAT.bit.GPIO62 // Stop Push‐Button SW2
REFERENSI
[1] SPRUFB0D, TMS320x2833x, 2823x System Control and Interrupts (Reference Guide)
<< Sebelumnya Berikutnya >>
















































No comments:
Post a Comment