Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download các bài tập lớn với đề tài: Đo tốc độ động cơ dùng 8051, cho các bạn có thể tham khảo
Những ứng dụng của PLC dành cho những ai muốn theo đổi ngành tự động hóa.
Mọi thông tin chi tiết và cấu trúc của các dòng máy bế hộp, máy cán màng nhiệt, máy xén giấy,...
các bạn truy cập vào website: http://sieuthimaynganhin.com/
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download các bài tập lớn với đề tài: Đo tốc độ động cơ dùng 8051, cho các bạn có thể tham khảo
Những ứng dụng của PLC dành cho những ai muốn theo đổi ngành tự động hóa.
Mọi thông tin chi tiết và cấu trúc của các dòng máy bế hộp, máy cán màng nhiệt, máy xén giấy,...
các bạn truy cập vào website: http://sieuthimaynganhin.com/
Bluetooth is a wireless technology standard for exchanging data over short distances between fixed and mobile devices. It was created in 1994 by Ericsson to provide a wireless alternative to RS-232 data cables. Bluetooth allows devices to connect and communicate without wires or cables, forming personal area networks. It uses short-wavelength radio transmissions to transmit data and can connect several devices simultaneously.
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...tcoco3199
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Một Chiều Điều Chỉnh Tốc Độ Dùng Bộ Điều Khiển Vạn Năng Sử Dụng Vi Điều Khiển Psoc, các bạn tham khảo thêm tại tài liệu, bài mẫu điểm cao tại luanvantot.com
Hướng dẫn viết bài tập làm văn số 3 – văn tự sựThùy Linh
Hướng dẫn viết bài tập làm văn số 3 - Văn tự sự,bài viết số 3 lớp 9, bài viết văn lớp 9 só 3,Văn tự sự
xem:http://vanmau.net/bai-viet-so-3-lop-10-bai-hay.html
Banana fiber-reinforced polypropylene composites: A study of the physico-mech...Thùy Linh
This document summarizes a study on banana fiber-reinforced polypropylene composites. The composites were prepared by compression molding banana fibers with polypropylene matrix. Both fibers and matrix were irradiated with UV radiation at different intensities to improve mechanical properties. The fibers were also treated with 2-hydroxyethyl methacrylate solutions and cured at different temperatures and times. The treated composites showed better mechanical properties than untreated ones. The composites' water uptake and weathering performance were also evaluated.
56 câu hỏi tự luạn và đáp án môn tư tưởng hồ chính minh - tincanban.comThùy Linh
56 cau hoi tu tuong ho chi minh, 56 cau hoi va dap an mon tthcm, 56 cau hoi va dap án mon tu tuong, 56 cau tu tuong hcm, 56 câu hỏi tự luận và đáp án môn tư tưởng hồ chí minh
Biểu cảm về một loài cây em yêu thích - vanmau.netThùy Linh
Đề bài: Biểu cảm về một loài cây em yêu thích - văn mẫu lớp 7 , văn biểu cảm lớp 7, bài viết số 2 văn biểu cảm, văn biểu cảm, tổng hợp văn biểu cảm hay nhất
Xem:http://vanmau.net/bieu-cam-ve-mot-loai-cay-em-yeu-thich.html
Biểu cảm về cây tre việt nam - vanmau.netThùy Linh
Đề bài: Biểu cảm về cây tre Việt Nam,bieu cam ve cay tre,cay tre viet nam van bieu cam,van bieu cam,tả cây tre văn biểu cảm,làm bài văn biểu cảm về cây tre
Xem:http://vanmau.net/bieu-cam-ve-cay-tre-viet-nam.html
Bài viết số 2 lớp 9 (văn tự sự) - vanmau.netThùy Linh
Viết bài viết số 2 lớp 9 thuộc loại văn tự sự,bai viet so 2 lop 9, bài viết số 2 lớp 9,bài viết số 2 văn mẫu lớp 9
Xem:http://vanmau.net/bai-viet-so-2-lop-9-van-tu-su.html
Kể lại những kỉ niệm ngày đầu tiên đi học - vanmau.netThùy Linh
Kể lại những kỉ niệm ngày đầu tiên đi học,Ngày đầu tiên đi học với biết bao kỉ niệm đẹp, có bạn thì nấp sau lưng mẹ, có bạn thì chơi đùa gọi nhau í ới, có bạn thì khóc lóc
Xem thêm:http://vanmau.net/ke-lai-nhung-ki-niem-ngay-dau-tien-di-hoc.html
Tổng hợp các dạng toán về phương trình đường thẳng trong các đề thi (có lời ...Thùy Linh
Tổng hợp các dạng toán về phương trình đường thẳng trong các đề thi (có lời giải) (hệ trục Oxy). được Sưu tầm & biên soạn: Lộc Phú Đa – Việt Trì – Phú Thọ . Tài liệu có 59 trang file word. Các bài toán đều có hướng dẫn giải rõ ràng và chi tiết. Đây là tài liệu không thể thiếu cho các em đang ôn thi THPT quốc gia môn Toán
http://giavienb.net/
Tài liệu ôn phần biến đổi câu của cô Mai PhươngThùy Linh
The document provides instruction on sentence transformation structures in English. It lists numerous patterns for sentence constructions using common structures like "to be" + adjective, too/enough structures, passive voice, wish structures, etc. Examples are provided to illustrate how to transform sentences from one structure to another, such as changing "too adjective for..." to "so adjective that..." or adding "it is" to change "to verb is adjective" to "it is adjective to verb". The document aims to help students better understand and apply different sentence patterns in English.
Cấu trúc ngữ pháp ôn thi Đại học môn Anh năm 2015Thùy Linh
This document provides an overview of grammatical structures for the Vietnamese university entrance exam. It discusses 18 different grammatical points including tense usage, passive voice, conditional sentences, relative clauses, question tags, and more. The key points are summarized as follows:
1) It discusses the use of tenses such as present continuous, present perfect, and past habitual actions.
2) It covers passive voice constructions like "be/get V3ed" and causative forms with "have/get something done".
3) It explains conditional sentences using "if", "unless", and inversion structures.
4) Other topics covered include question tags, relative clauses, adjective clauses, purpose clauses, and reduced relative
1. TinCanBan.Com – VanMau.Net
Hướng dẫn làm quen với STM8F103
Trước khi bắt đầu với những bài viết hướng dẫn các bạn tiếp cận với từng ngoại vi cụ
thể trên chip STM8. Bài viết hôm nay Ano xin được giới thiệu tới các bạn cấu trúc
phần cứng của STM8. Từ đó sẽ giới thiệu mục lục các bài viết hướng dẫn sử dụng các
ngoại vi trên STM8 để các bạn tiện theo dõi.
Mục tiêu cụ thể : Có cái nhìn tổng quát về cấu trúc phần cứng của chip STM8. Những
vấn đề cần lưu ý trong thiết kế phần cứng ứng dụng chip STM8.
Ok ! chúng ta bắt đầu thôi.
Central Processing Unit (CPU) : được thiết kế với kiến trúc 8-bit, bao gồm 6 thanh
ghi cho phép thực thi hiệu quả 80 lệnh trong tập lệnh của CPU. 6 thanh ghi của CPU
bao gồm :
• Accumulator (A).
• Index Registers (X and Y).
• Program Counter (PC).
• Stack Pointer (SP).
• Codition Code Register(CC).
Bootloader : vi chương trình hỗ trợ bootloader của STM 8 được nạp sẵn trong ROM
nội (dung lượng 2Kbyte ) của STM8 . cũng giống như các trình bootloader khác,
chương trình bootloader trên STM8 có nhiệm vụ nạp chương trình ứng dụng của
người dùng vào bộ nhớ flash /eeprom (nằm trong chip) thông qua các chuẩn giao tiếp
SPI,UART, CAN.
Cấu trúc bộ nhớ : sử dụng bộ nhớ flash để chứa chương trình thực thi và bộ nhớ
EEPROM để chứa dữ liệu. Người dùng hoàn toàn có thể sử dụng các lệnh tác động
vào các thanh ghi điều khiển để thực hiện các thao tác đọc ghi vào các bộ nhớ này.
Debug Module : thông qua module giao tiếp đơn dây SWIM (single wire interface
module) STM8 hỗ trợ người dùng các thanh ghi điều khiển cho phép người dùng tác
động trực tiếp vào các thanh ghi của CPU để có thể thực hiện debug chương trình ứng
dụng trên phần cứng đang hoạt động.
Bộ điều khiển ngắt (ITC) : Đây là khối quản lý ngắt tập trung trên chip STM8. Cho
phép quản lý các ngắt phần cứng (các yêu cầu ngắt từ các chân I/O hay từ các ngoại
vi) và các ngắt phần mềm (TRAP). Có thể phân chia thành 4 cấp ưu tiên với tổng cộng
32 ngắt. Các ngắt này được quản lý bởi các thanh ghi sau :
• Bit I1 và I0 trong thanh ghi CCR.
• Thanh ghi software priority registers (ITC_SPRx).
Power Supply : Sử dụng 4 khối nguồn sau :
• VDD/VSS : điện áp cung cấp 3V- 5.0V , đây là khối nguồn nuôi chính cho MCU
2. TinCanBan.Com – VanMau.Net
hoạt động.
• VDDO/VSSO : điện áp từ 3V – 5V, đây là khối nguồn dùng cho các chân I/O (tùy
thuộc vào từng package mà sẽ có 1 hay 2 cặp chân VDDO/VSSO).
• VDDA/VSSA : nguồn nuôi cho các khối analog bên trong MCU.
• VREF+/VREF- : điện áp tham chiếu cho khối ADC.
Tín hiệu RESET (RST): Hỗ trợ các tín hiệu reset sau:
• Reset ngoài thông qua chân NRST.
• Power-on reset (POR).
• Brown-out reset (BOR).
• Independent watchdog reset (IWDG).
• Window watchdog reset (WWIG).
• Software reset.
• SWIM reset.
• Illegal opcode reset.
• EMC reset.
Clock Control :
Được thiết kế cho phép ứng dụng của bạn được thực hiện với hiệu suất cao tiết kiệm
công suất tiêu thụ của CPU. Cho phép bạn có thể quản lý nguồn tần số xung clock
cung cấp cho từng ngoại vi từ tần số xung clock chính dựa vào các bộ chia tần số. Có
4 nguồn xung clock có thể được sử dụng để tạo ra tần số xung clock chính cung cấp
cho CPU :
• Nguồn xung clock thạch anh bên ngoài(HSE) : 1 – 24Mhz
• Nguồn xung user-external HSE user-ext: 24Mhz
• Bộ dao động nội RC tốc độ cao (HSI): 16Mhz
• Bộ dao động nội RC tốc độ thấp (LSI): 18Khz
Quản lý năng lượng :
Sau khi reset, CPU sẽ chạy vào chế độ Run Mode. Trong chế độ này, tần số xung
clock của CPU sẽ là fCPU và thực thi chương trình. Trong chế độ Run Mode thì
chúng ta có thể có một số cách để giảm điện áp tiêu thụ :
• Giảm tốc độ xung clock của hệ thống.
• Tập hợp các tần số xung clock của các ngoại vi riêng lẻ khi không sử dụng chúng
• Tắt các ngoại vi analog khi không sử dụng đến chúng.
Tuy nhiên không phải lúc nào cũng chạy ở chế độ Run Mode, để giảm điện năng tiêu
thụ cho CPU chúng ta có thể cho CPU chạy ở các chế độ khác tiêu thụ điện năng thấp
hơn như :
• Wait.
• Active- Halt.
3. TinCanBan.Com – VanMau.Net
• Halt.
Tiếp theo sau đây là danh sách các bài viết hướng dẫn giao tiếp ngoại vi tiếp theo
trong series này:
• UART.
• Ngắt
• Timer.
• ADC.
Bước đầu làm quen với STM8 - Creating Project GPIO
Chào các bạn . Hy vọng các bạn đều thành công với bài viết trước của mình.
Hôm nay, bài viết tiếp theo trong series này sẽ hướng dẫn các bạn cách tạo 1 project
với STVD + Cosmic. Chúng ta sẽ thực hiện tạo project sử dụng thư viện ngoại vi
GPIO. Ở đây, ta sẽ thực hiện ứng dụng điều khiển led LD1 trên KIT STM8s
Discovery nhấp nháy.
Để thuận tiện cho việc tiếp cận, Ano có xây dựng sẵn 1 project_template (trong file
đính kèm). Các bạn download file này về và tiến hành giải nén nó ra desktop nha.
Bây giờ chúng ta bắt đầu với project đầu tiên của mình.
Mở chương trình STVD lên (cách mở thì các bạn tham khảo bài viết trước của mình
nha).
Click File > Open workspace Hộp thoại Open workspace hiện ra và bạn chọn
đường dẫn tới STVD_workspace.stw trong thư mục project_template của mình. Cụ
thể đường dẫn ở đây như sau :
DesktopProject_templateProjectSTVDCosmicSTVD_ workspace.stw chonj vào
file STVD_workspace.stw và click open.
Sau khi chúng ta đã mở thành công worspace. Chúng ta làm tiếp bước tiếp theo là add
các thư viện ngoại vi vào chương trình, như đã nói ở trên, trong ví dụ này chúng ta sẽ
sử dụng thư viện ngoại vi GPIO của STM8. Cách add thư viện ngoại vi GPIO nhu sau
:
Bước 1 : add header file stm8s_gpio.h của thư viện GPIO, cách thực hiện như sau :
Trong cửa sổ worksapce của chương trình, bạn Right click vào Include Files sau đó
Left click vào Add Files to Folder như hình sau :
cửa sổ open mở ra, bạn chọn đường dẫn tới file stm8s_gpio.h của thư viện GPIO trong
thư mục project_template, cụ thể đường dẫn như sau:
Desktopdemo_gpioLibrariesSTM8S_StdPeriph_Drive rincstm8s_gpio.h
click vào chọn file stm8s_gpio.h và click vào open.
Bước 2 :add source file stm8s_gpio.c của thư viện GPIO, cách thực hiện như sau :
Trong cửa sổ worksapce của chương trình, bạn Right click vào Source Files sau đó
Left click vào Add Files to Folder như hình sau :
4. TinCanBan.Com – VanMau.Net
cửa sổ open mở ra, bạn chọn đường dẫn tới file stm8s_gpio.c của thư viện GPIO trong
thư mục project_template, cụ thể đường dẫn như
sau:Desktopdemo_gpioLibrariesSTM8S_StdPeriph_Drive rsrcstm8s_gpio.c
click vào chọn file stm8s_gpio.c và click vào open.
Sau khi tiến hành add file xong. Bây giờ chúng ta bắt đầu viết code cho file main.c
trong thư mục Source Files của cửa sổ workspace.
Đầu tiên ta khai báo thư viện ngoại vi được sử dụng :
Code:
#include "stm8s.h"
#include "stm8s_gpio.h"
Ở đây :
#include "stm8s.h" là có sẵn trong file main.c bạn không cần chỉnh sửa gì cả.
#include "stm8s_gpio.h" đây là header của thư viện ngoại vi GPIO mà mình sẽ dùng
trong ví dụ này, sau này bạn muốn dùng thư viện ngoại vi nào thì chỉ cẩn add file của
thư viện đó (như trên) và tiến hành khai báo trong main.c
Tiếp theo define chân dùng để điều khiển led. Theo thiết kế thì led LD1 trên KIT được
điều khiển bởi chân(pin) 0 của cồng (port) D , vì vậy ta tiến hành khai báo như sau :
Code:
#define LED_GPIO_PORT (GPIOD)
#define LED_GPIO_PINS (GPIO_PIN_0)
Khai báo prototype cho hàm con Delay(). Hàm này dùng để tạo thời gian delay giữa
các lần nhấp nháy của led.
Code:
void Delay (uint16_t nCount);
Tiếp theo, ta edit code cho hàm void main() như sau :
Code:
void main(void)
{
/* Initialize I/Os in Output Mode */
GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS,
GPIO_MODE_OUT_PP_LOW_FAST);
while (1)
{
/* Toggles LEDs */
GPIO_WriteReverse(LED_GPIO_PORT,
(GPIO_Pin_TypeDef)LED_GPIO_PINS);
Delay(0xFFFF);
5. TinCanBan.Com – VanMau.Net
}
}
Nói một chút về chương trình trên nhỉ.
_ Hàm GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS,
GPIO_MODE_OUT_PP_LOW_FAST); có tác dụng sẽ khởi động và thiết lập chân 0
của cổng D(chân dùng để điều khiển Led LD1) theo kiểu : Output push-pull, low
level, 10MHz (chi tiết cụ thể về các mode của GPIO các bạn tham khảo reference
manual).
_Hàm GPIO_WriteReverse(LED_GPIO_PORT,
(GPIO_Pin_TypeDef)LED_GPIO_PINS); sẽ thưc hiện thao tác đọc trạng thái hiện tại
của chân 0 cổng D, sau đó đảo trạng thái đó lại và xuất ngược trở lại chân 0 cổng D.
Cụ thể :
Nếu trạng thái hiện tại là 1 thì nó sẽ chuyển sang giá trị 0 và xuất ra.
Nếu trạng thái hiện tại là 0 thì nó sẽ chuyển sang giá trị 1 và xuất ra.
_ Hàm Delay (): tạo thời gian delay giữa các lần chuyển trạng thái của chân 0 cổng D.
Viết code cho hàm Delay() như sau :
Code:
void Delay(uint16_t nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount ;
}
}
Sau đó ta lưu lại code vừa viết. Kết nối kit vào PC và tiến hành compile và debug
chương trình. (Cách thực hiện tham khảo bài viết trước của mình).
Cách bạn có thể thử thay đổi thời gian delay, hoặc dùng các hàm khác trong thư viện
ngoại vi để thực hiện điều khiển nhấp nháy led.
Bước đầu làm quen với STM8 - TIMER và Interrupt
Chào các bạn !
Hôm nay Ano xin tiếp tục series hướng dẫn sử dụng ngoại vi trên STM8.
Trong bài viết hôm nay mình xin hướng dẫn các bạn thực hiện một demo nhỏ sử dụng
ngoại vi Timer của SMT8. Đồng thời cũng trong bài viết này, mình sẽ hướng dẫn cách
sử dụng interrupt trong SMT8s bằng việc sử dụng interrupt của Timer.
Cấu trúc bài viết của ngày hôm nay như sau :
Phần 1 :
6. TinCanBan.Com – VanMau.Net
• Giới thiệu về Timer trong STM8
• Giới thiệu về bộ quản lý interrupt trong SMT8
Phần 2 :
Thực hiện demo như sau : thiết lập Timer 2 chạy ở chế độ Timming. Khi có ngắt xảy
ra
thì thực hiện bật tắt led LD1 trên kit.
Vậy là xong khúc dạo đầu, mình vào phần chính nhá. Hihi
Phần 1 :
Giới thiệu về Timer trong STM8 :
Các bộ timer trong STM8S và STM8A hỗ trợ đầy đủ 3 loại sau :
• Advanced Control : TIM1
• Gerenal purpose : TIM2/TIM3/TIM5
• Basic timer : TIM4/TIM6
Tất cả các timer này đều có chung một cấu trúc, tuy nhiên mỗi loại sẽ có một số thiết
kế đặc trưng nhất định.
Về cấu trúc chung của các timer sẽ bao gồm một số thanh ghi với các chức năng cơ
bản của bộ timer giúp người dùng dễ dàng phát triển nhanh các thiết kế.
Thông tin chi tiết về cấu trúc cũng như hoạt động của các bộ TIMER, các bạn có thể
tham khảo trong các tài liệu kỹ thuật được cung cấp bởi ST.
Sau đây là bảng tóm tắt chức năng chính của các bộ TIMER trong STM8.
Giới thiệu về bộ quản lý interrupt trong chip STM8 :
Bộ quản lý interrupt cho phép quản lý ngắt phần cứng cũng như các ngắt phần mềm
phát sinh. Được thiết kế theo kiểu ngắt lồng nhau, với nhiều cấp và mức ưu tiên khác
nhau bao gồm :
• 4 cấp ưu tiên cho các ngắt phần mềm.
• 32 ngắt phần cứng.
• 2 ngắt che mặt nạ : RESET, TRAP
• 1 ngắt không che mặt nạ
Cấu trúc chung cho bộ quản lý ngắt :
• ITC dựa trên các bit : I0 và I1 trong thanh ghi CCR.
• Thanh ghi quản lý ưu tiên ngắt phần mềm
Phần 2 :
Các bạn thực hiện lần lượt từng bước sau :
Mở project_template , thực hiện add các header và source file :
- stm8s_gpio.c
- stm8s_tim2.c
- stm8s_gpio.h
7. TinCanBan.Com – VanMau.Net
- smt8s_tim2.h
Theo mẫu sau:
Sau khi add các thư viện vào như trên, chúng ta bắt đầu edit code:
Trong file main.h
Thực hiện add các header file của thư viện vào hàm main :
Code:
#include "stm8s.h"
#include "stm8s_tim2.h"
#include "stm8s_gpio.h"
#include "stm8s_it.h"
Define chân GPIO cho ứng dụng, ở đây sử dụng led LD1.
Code:
#define LED_GPIO_PORT (GPIOD)
#define LED_GPIO_PINS (GPIO_PIN_0)
Trong file main.c
Thực hiện edit code như sau :
Các khai báo
Biến toàn cục
Code:
uint16_t CCR1_Val = 500;
Thực hiện edit hàm void main () như sau :
Code:
void main(void)
{
int i;
GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS,
GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_WriteHigh(LED_GPIO_PORT,
(GPIO_Pin_TypeDef)LED_GPIO_PINS);
/* Time base configuration */
//TIM2_TimeBaseInit(TIM2_PRESCALER_1, 999);
TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 999);
/* Prescaler configuration */
TIM2_PrescalerConfig(TIM2_PRESCALER_2048,
TIM2_PSCRELOADMODE_IMMEDIATE);
/* Output Compare Active Mode configuration: Channel1 */
/*
8. TinCanBan.Com – VanMau.Net
TIM2_OCMode = TIM2_OCMODE_INACTIVE
TIM2_OCPolarity = TIM2_OCPOLARITY_HIGH
TIM2_Pulse = CCR1_Val
*/
TIM2_OC1Init( TIM2_OCMODE_TIMING,
TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH);
TIM2_OC1PreloadConfig(ENABLE);
/* ARRPreload Enable */
TIM2_ARRPreloadConfig(ENABLE);
/* Update Interrupt Enable */
TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
/* Enable TIM1 */
TIM2_Cmd(ENABLE);
enableInterrupts();
while (1)
{
}
}
Giải thích code một chút nha :
Ở đây ta sẽ bắt đầu giải thích code cho phần TIM và interrupt, phần GPIO các bạn
tham khảo trong bài viết trước của mình.
Code:
TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 999);
Thiết lập thông số cơ bản của bộ TIM2 với giá trị ARR = 999 và giá trị prescale =
2048
Code:
/* Prescaler configuration */
TIM2_PrescalerConfig(TIM2_PRESCALER_2048,
TIM2_PSCRELOADMODE_IMMEDIATE);
Thiết lập định dạng prescale config.
Code:
TIM2_OC1Init( TIM2_OCMODE_TIMING,
TIM2_OUTPUTSTATE_ENABLE,CCR1_Val, TIM2_OCPOLARITY_HIGH);
Thiết lập giá trị cho cho channel 1 của TIM2.
Code:
TIM2_OC1PreloadConfig(ENABLE);
/* ARRPreload Enable */
9. TinCanBan.Com – VanMau.Net
TIM2_ARRPreloadConfig(ENABLE);
Cho phép reload các giá trị trong các thanh ghi OC và ARR.
Code:
TIM2_ITConfig(TIM2_IT_UPDATE , ENABLE);
Thiết lập ngắt cho TIM2 khi TIM2 thực hiện update lại các giá trị
Code:
TIM2_Cmd(ENABLE);
Cho phép TIM2 chạy
Code:
enableInterrupts();
Cho phép hoạt động bộ quản lý ngắt.
Thực hiện edit code cho file stm8_it.c như sau :
Tìm tới phần khai báo cho ngát TIM2 update:
Code:
INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
Và edit code như sau :
Code:
static uint8_t cnt = 0;
if(++cnt == 20)
{
GPIO_WriteReverse(LED_GPIO_PORT,
(GPIO_Pin_TypeDef)LED_GPIO_PINS);
cnt = 0;
}
Nội dung như sau : khi xảy ra ngắt update trên timer 2 20 lần thì sẽ chuyển trạng thái
led LD1
Code:
TIM2_ClearITPendingBit(TIM2_IT_UPDATE);
Xóa cờ ngắt tim2_update.
Sau khi thực hiện code các bạn có thể biên dịch và cho chạy thử ứng dụng
Bước đầu làm quen với STM8 - ADC + Interrupt
Chào các bạn !
Hôm nay Ano xin trở lại series hướng dẫn các bạn tiếp cận dòng vi điều khiển STM8
của hãng ST với bài viết về ADC.
ADC là gì và chức năng ra sao thì chắc mọi người cũng đã rõ. Vì vậy, Ano sẽ không
nói tới vấn đề này nữa, trong bài viết hôm nay Ano xin trình bày những ý sau
Phần 1 : Giới thiệu về cấu trúc khối ADC trong STM8
10. TinCanBan.Com – VanMau.Net
Phần 2: Thực hiện ứng dụng với khối ADC, trong bài viết này, Ano cũng sử dụng
ngắt cho việc cập nhật giá trị ADC. Mong rằng cùng với bài viết về timer trước các
bạn có thể sử dụng các ngắt của STM8 thành thạo (vai trò của ngắt trong lập trình vi
điều khiển quan trọng như thế nào thì chắc các bác cũng đã rõ).
Chúng ta bắt đầu thôi !
Phần 1 : Giới thiệu cấu trúc khối ADC trong STM8
Hiện tại, trên các sản phẩm dòng STM8 của ST hỗ trợ tối đa 2 khối ADC là : ADC1
và ADC2. Với các thông số chính như sau :
• Độ phân giải 10 bit.
• Có thể hoạt động ở 2 mode : Single or Continuous.
• Cho phép xác lập tần số hoạt động của bộ ADC.
• Tầm điện áp hoạt động : VSSA < Vin < VDDA.
Ở đây, chúng ta sẽ nói thêm một số tính năng nổi bật trên khối ADC1 là khối ADC
được hỗ trợ trên tất cả các sản phẩm STM8. Khối ADC1 có một số tính năng nổi bật
như sau :
• Hỗ trợ bộ nhớ đệm cho trường hợp sử dụng ADC ở Continuous mode (kích thước
của bộ nhớ đệm này phụ thuộc vào từng dòng sản phẩm).
• Hỗ trợ Scan mode cho cả 2 chế độ hoạt động là Single or Continuous.
• Analog watchdog, bao gồm cả ngưỡng trên và ngưỡng dưới.
• Tạo ra xung ngắt cho mỗi sự kiện analog watchdog.
Phần 2 : Thực hiện demo với ADC + Interrupt.
Mở project_template và thưc hiện add các file thư viện vào như hình sau :
Chú ý ở đây chúng ta sẽ add vào 2 file :
stm8s_adc1.h : header file
stm8_adc1.c : source file
Sau khi add các file vào như trên, chúng ta tiến hành edit code trong các file sau :
Trong file main.c thực hiện :
Code:
#include "stm8s.h"
#include "stm8s_adc2.h"
#include "stm8s_it.h"
Include các thư viện được dùng.
Code:
/* Private define */
uint16_t Conversion_Value = 0;
define biến toàn cục
Sau đõ tiến hành edit hàm void main() như sau :
11. TinCanBan.Com – VanMau.Net
Code:
/* Init GPIO for ADC1 */
GPIO_Init(GPIOE, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);
/* De-Init ADC peripheral*/
ADC1_DeInit();
/* Init ADC2 peripheral */
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_9,
ADC1_PRESSEL_FCPU_D2,
ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT,
ADC1_SCHMITTTRIG_CHANNEL9,
DISABLE);
/* Enable EOC interrupt */
ADC1_ITConfig(ADC1_IT_AWS9,ENABLE);
/* Enable general interrupts */
enableInterrupts();
/*Start Conversion */
ADC1_StartConversion();
/* The LEDs state is changed in the interrupt routine */
while (1);
Giải thích 1 chút nha :
Code:
/* Init GPIO for ADC1 */
GPIO_Init(GPIOE, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);
Ở đây ta sử dụng chanel 9 của ADC 1, chân ngõ vào tín hiệu của chanel 9 là chân
PE6, vì vậy đoạn code trên được sử dụng để config cho chân PE6 làm ngõ vào tín hiệu
cho khối ADC1.
Code:
/* De-Init ADC peripheral*/
ADC1_DeInit();
/* Init ADC2 peripheral */
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_9,
ADC1_PRESSEL_FCPU_D2,
ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT,
ADC1_SCHMITTTRIG_CHANNEL9,
DISABLE);
12. TinCanBan.Com – VanMau.Net
Khởi động và thiết lập các thông số cho Channel 9 của ADC1. Cụ thể các thông số đó
có ý nghĩa như thế nào. Các bạn có thể tham khảo trong bộ file stm8s_adc1.h của thư
viện giao tiếp ngoại vi STM8s.
Code:
/* Enable EOC interrupt */
ADC1_ITConfig(ADC1_IT_AWS9,ENABLE);
/* Enable general interrupts */
enableInterrupts();
Cho phép thực hiện ngắt với ADC1 channel 9.
Code:
/*Start Conversion */
ADC1_StartConversion();
Cho phép bộ ADC bắt đầu hoạt động.
Trong file stm8s_it.c :
Thực hiện edit code như sau :
Code:
extern uint16_t Conversion_Value;
Khai báo biến , biến này đã khai báo ở file main, cho nên chúng ta có tiền tố extern
phía trước.
Code:
INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
/* Get converted value */
Conversion_Value = ADC1_GetConversionValue();
ADC1_ClearITPendingBit(ADC1_IT_AWS9);
}
Nội dung đoạn code này là cập nhật giá trị của ADC vào biến Conversion_Value, và
xóa cờ ngắt.
Sau khi thực hiện các đoạn code trên chúng ta lưu lại và tiến hành dịch chương trình,
nạp vào kit STM8S_Discovery để tiến hành debug,để có thể debug các bạn có thể làm
1 module nhỏ thay đổi được giá trị điện áp và kết nối nó vào kit. Sau đó cho chương
trình chạy và debug.