Thứ Bảy, 15 tháng 12, 2018

LẬP TRÌNH NUVOTON N76E003
BÀI 5: Khảo sát GPIO - Hiêu ứng led dơn, thư viện Delay


File *.h của MCU:



Trong datasheet:

- Trong datashet của bất kỳ MCU nào cũng có phần định nghĩa địa chỉ của các bit. Lý giải cho file *.h của MCU tất cả các bit chúng ta sử dụng điều được định nghĩa trong *.h tuy nhiên một số chân I/O chưa được định nghĩa khi sử dụng các bạn tự định nghĩa thêm nhé. Hay các bạn định nghĩa thành bất cứ tên nào khác mà các bạn dể ghi nhớ.
- Ghi dữ liệu vào các thanh ghi định hướng (I/O mình đã hướng đẫn ở phần trước) các bạn cần ghi 1 byte.

Thư viện delay:

void delay_us(unsigned int us)
{

unsigned int x, y, t;
for(x = 0; x < us; x++)
{
for(y = 0; y < 103; y++);      // Delay 1 us   
}
}

void delay_ms(unsigned int timer)
{
unsigned int x, y, t;
t = timer*10;
for(x = 0; x < t; x++)
{
for(y = 0; y < 105; y++);      // Delay 1 ms   
}
}

** Thư viện này các bạn chỉ cần gọi hàm và dùng thôi nhé. Sẽ có Clip hướng dẫn tạo project và thư viện sau nhé.

Chương trình chớp tắt led đơn:

void main()
{
set_tris_0(0x00);                            // khai báo port0 là output
while(1)
{
P0 = 0X00;            // tat het led port0
delay_ms(500);     // chờ 500ms
P0 = 0XFF;           // bật led port0
delay_ms(500);     // chờ 500ms
}
}


- Sơ đồ nguyên lý kết nối Led:


- Video minh họa:




Hẹn gặp các bạn ở phần sau nhé... !!!





LẬP TRÌNH NUVOTON N76E003
BÀI 4: Khảo sát GPIO - Khai báo I/O

Sơ đồ chân VĐK N76E003
+ Sơ đồ chân:

N76E003 có tối đa 20 chân I/O được chia thành 4 port P0 đến P3 và mỗi port có 1 thanh ghi điều khiển Px.
+ Các chế độ hoạt động của I/O:
  • Quasi-bidirectional

Trong chế độ Quasi-bidirectional mỗi chân có một điện trở treo lên nguồn dương từ 100 đến 300K
  • Push-pull
Chế độ này tương tự như chế độ trên nhưng cho ra dòng điện mạnh hơn, có cấu trúc CMOS nên cho độ ổn định cao. Chúng cũng được ứng dụng trong rất nhiều lĩnh vực (Mấy anh chơi inverter mặt trời, chít cá,... thì rành cái này hơn mình rồi. hi hi). Trên internet có quá nhiều bài viết nói về vấn đề này nên mình không nhắt lại các bạn tự tìm hiểu nhe.
  • Input-only
Trong chế độ này cần có một nguồn bên ngoài để MCU hiểu được mức logic.
  • Open-drain

Chế độ này cũng khá đa dạng và phổ biến trên các loại MCU, chúng cũng có nhiều công dụng khác nhau, và công dụng điển hình là chúng có thể giao tiếp được với nhiều IC có mức điện áp khác nhau 3v3 chẳng hạn,... khi đó ta cần dùng một điện trở treo lên nguồn dương.

Phần 2: Thanh ghi điều khiển I/O

Phần này mình chỉ giới thiệu port P0 thôi nhé các port lại tương tự nhe, bạn nào không hiểu hay có vấn đề gì thì nêu thắt mắt phía dưới nhé. 
Nếu muốn biết sâu hơn về phần cứng các bạn tham khảo thêm trong datasheet của MCU nhé.

Sơ đồ thanh ghi P0M1

Sơ đồ thanh ghi P0M2


Các mode hoạt động của I/O

- Trong phần này các bạn cần nhớ cho mình địa chỉ (VD: Address: B1H thanh ghi của P0M1) của từng thanh ghi nhé nó rất quan trọng đấy. 
- Muốn thiết lặp một I/O ở chế độ vào (Input) hay ra (Output) ta chỉ cần ghi các bit tương ứng trong bảng Các mode hoạt động của I/O vào địa chỉ bit ta cần sử dụng là được nhé.

VD: - Ta quy ước Input = 1. Output = 0 nhé.
        - Chú ý: Khi ghi vào thanh ghi thì ta ghi 1 byte. 

Khai báo port P0 là Input ta cần ghi 0xFF vào P0M1 và ghi 0x00 vào P0M2. ta thấy giá trị cho thanh ghi P0M2 là 0x00 sẽ ngược với giá trị ta quy ước ban đầu nên chỉ cần đảo bit và ghi vào P0M2.
Xây dựng chương trình con cho hàm khai báo I/O nhé:

//===================================================================//
Void set_tris_0(unsigned char dat)    (1)
{
        P0M1 =   dat;         // Ghi giá trị dat vào thanh ghi P0M1                      
        P0M2 = ~dat;       // Ghi giá trị ~dat vào thanh ghi P0M2
}
//===================================================================//

* Giải thích chương trình
(1) Hàm để gọi chương trình con khi khai kháo I/O

void main()
{
               set_tris_0(0xFF);                    // khai báo port0 là input
           
               while(true)
               {
                                                             // Chương trình chính
               }
}

** Các bạn tự tìm hiểu nguôn ngữ lập trình C căn bản nhé. Có thể tham khảo giáo trình lập trình C cơ bản của Phạm Văn Ất có rất nhiều trên internet hay bất cứ tài liệu nào khác.







Thứ Sáu, 14 tháng 12, 2018

LẬP TRÌNH NUVOTON N76E003
BÀI 3: Hướng dẫn sử dụng mạch nạp Nulink - phần mềm ICP Programing


- Icon phần mềm ICP Programing sau khi cày đặt vào máy tính:


- Giao diện ICP khi vừa mở lên:


- Giao diện chính ICP: 

Cấu hình chíp(Chip Option):
 + Lựa chọn nguồn giao động.
 + Lựa chọn vùng nhớ Boot: LDROM hoặc APROM .
 + Enable/Disable Data Flash.
 + Cấu hình địa chỉ vùng nhớ Flash.


- Cấu hình cho phần mêm ICP:



- Các chế độ hiển thị trên phần mềm:

  + Chưa kết nối được với mạch nạp:


 + Kết nối mạch nạch nhưng chưa nhận dạng được chíp:


 + Kết nối được chíp, hiển thị thông tin của MCU:



Hướng dẫn nạp dữ liệu bằng phần mềm Numicro ICP

- Chọn dòng chíp tương ứng:



Nhấn phím “Connect”, phần mềm sẽ hiển thị thông tin MCU:


Lựa chọn file LDROM, APROM, Data Flash nạp xuống MCU, cấu hình bít trong phần Setting:


Trong phần Programming lựa chọn các vùng được nạp dữ liệu: LDROM, APROM, Data Flash, Config:



-  Nhấn phím Start để nạp dữ liệu xuống MCU.
LẬP TRÌNH NUVOTON N76E003
BÀI 2: Giới thiệu Nuvoton N76E003 - kit N76E003


N76E003 là vi điều khiển họ 8051 1T hiệu suất cao, hoàn toàn tương thích với tiêu chuẩn 80C51 của hãng Nuvoton. VĐK có bộ nhớ flash ROM lên đến 18K Bytes, có thể cấu hình bộ nhớ data flash và hỗ trợ IAP; làm việc dưới mức điện áp rộng 2.4- 5.5V; chống nhiễu cao; làm việc dưới mức điện áp rộng 2.4- 5.5V; chống nhiễu cao (7KV ESD, 4KV EFT); ngoài ra còn tích hợp 3 nguồn xung clock: clock nội tốc độ thấp 10KHz, clock nội tốc độ cao 16MHz ± 1% (VDD=5V), ± 2% (điều kiện khác) và clock ngoại;…

Tính Năng Chính:



Kit N76E003

- Ảnh minh họa Kit N76E003:

- Sơ đồ nguyên lý Kit N76E003:

+ Chắc hơi mờ rồi mình sẽ cho các bạn link tải về nhé:
https://www.mediafire.com/file/9t3r3nja5fx7z3b/N76E003AT20_Board.PDF/file
+ Lưu ý khi dùng kit, các bạn tháo bỏ ic ổn áp 3v3 (lm1117 3.3v) trên kit ra lắp loại 5v vào nhé. Còn nếu dùng nguồn 5v thì các bạn cấp nguồn vào PIN 3v3 trên kit.

- Mạch nạp Nu-link: các bạn có thể mua ở link bên dưới
http://www.proe.vn/mach-nap-va-debug-nu-link-n76e003_p1_1-1_2-1_3-693_4-615_9-2_11-20_12-1_13-15.html


Ảnh minh họa mạch nạp Nu-Link

Nếu có điều kiện các bạn nên mua mạch nạp Nu-Link Pro để dùng cho nhiều dòng chip khác nhau để khi qua lập trình các dòng chip khác các bạn tận dụng được tài nguyên sẵn có.

** Các bạn tự tìm hiểu cách tạo Project trên keil-c nhé, cỏ rát nhiều bài viết trên internet hướng dẫn vấn đề này. Các bạn sẽ thực hành trên kit thật nhé vì VĐK này không có công cụ để mô phỏng, các thư viện mình up lên là thư viện chuẩn đã chạy thực tế. Có vấn đề gì cần thì pm bên dưới mình sẽ rep nhé.... 

Công cụ để học lập trình:
- Trình biên dịch keil-c:

- Driver mạch nạp: 
- Trình điều khiển mạch nạp:
http://www.mediafire.com/file/x3d1td59908nk2e/NuMicro_ICP_Programming_Tool_2.05.6815.exe/file

--- Chúc các bạn buổi tối vui vẻ, hẹn gặp ở bài sau ---


Thứ Năm, 13 tháng 12, 2018



LẬP TRÌNH NUVOTON N76E003
Bài 1: Giới thiệu VĐK Nuvoton N76E003 và các công cụ cần thiết để lập trình

Hãng Nuvoton là Công ty con được tách ra (spin-off) từ Tập đoàn Điện tử Winbond – một hãng điện tử bán dẫn đứng hàng đầu Đài Loan. Hãng này có cả 3 dòng chip vi điều khiển (MCU) 4-bit, 8-bit và 32-bit (ARM Cortex). Nội dung trình bày sau đây sẽ tập trung chủ yếu vào giới thiệu dòng chip MCU 8-bit lõi 8051 của Nuvoton.
Hãng Nuvoton có cả loại chip hoàn toàn tương thích với MCU lõi 80C51 chuẩn lẫn loại MCU lõi 8051 được tuỳ biến theo cấu hình của người dùng và các tích hợp đặc tính kỹ thuật hiện đại như: 

Phân loại dòng sản phẩm MCU core 8051 của Nuvoton:
Các Công Cụ Phát Triển và Hỗ Trợ Sản Xuất:
- Phát triển phần mềm & thiết kế mạch: MCU 8051 của Nuvoton tương tích với tập lệnh 8051 chuẩn (MCS-51) cho nên mọi môi trường phát triển, trình biên dịch, phần mềm mô phỏng dùng được cho chip MCU 8051 chuẩn thì đều dùng được cho chip Nuvoton; Với thiết kế mạch (PCB) thì hoàn toàn tương tự như với dòng 8051 của các hãng khác; Thí dụ các phần mềm Keil C (uVision), IAR, Hi-Tech, Proteus, Eagle, Orcat, Protel… tuy nhiên trong loạt bài viết dưới đây tôi sẽ giới thiệu đến các bạn trình biên dịch Keil C.
- Công cụ nạp (mạch nạp): MCU 8051 của Nuvoton được hỗ trợ giải thuật nạp bởi hầu hết các máy nạp rom đa năng của các hãng sản xuất bộ nạp rom nổi tiếng trên Thế giới như Xeltek, Elnec, Hilosystems hoặc Leap Electronics… Ngoài ra hãng Nuvoton cũng chế tạo riêng các mạch nạp có kích thước nhỏ gọn, rẻ tiền mà hỗ trợ khả năng nạp được toàn bộ các chip MCU lõi 8051 của hãng, giúp tiện dùng cả trong quá trình phát triển lẫn sản xuất. Lưu ý: hầu hết các chip 8051 của Nuvoton đều hỗ trợ nạp ICP và/ hoặc ISP nên rất tiện lợi, dễ dàng cho tiếp cận và phát triển ứng dụng.

Công cụ để học lập trình:
- Trình biên dịch:
- Driver mạch nạp: 
- Trình điều khiển mạch nạp:
- Kit Nuvoton N76E003:
- Mạch nạp Nu-link: