1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Học PIC trong 1 ngày - Phần 5 potx

10 246 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 120,72 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Vì vậy, bài học này trang bị cho các bạn một số khái niệm cơ bản về điện tử, để các bạn có thể nắm vững nguyên lý thiết kế mạch và tính toán các giá trị điện trở cần thiết.. Đáng lẽ bài

Trang 1

Điện tử cơ bản

Giới thiệu

Đây là phần rất cơ bản về điện tử, mà các bạn khi bắt đầu làm việc với vi điều khiển cần phải nắm rõ Như đã nói, PIC tạo ra dòng điện khoảng 20mA và điện áp khoảng 5V, tương tự như vậy, nếu dòng ngõ vào quá cao so với 20mA và điện áp ngõ vào quá cao so với 5V, thì PIC sẽ bị hư

Vì vậy, bài học này trang bị cho các bạn một số khái niệm cơ bản về điện tử, để các bạn

có thể nắm vững nguyên lý thiết kế mạch và tính toán các giá trị điện trở cần thiết Đáng

lẽ bài học này cần được thực hiện ngay từ đầu, tuy nhiên, tôi cho rằng bài tập đèn LED quá đơn giản, các bạn chưa biết gì cũng có thể hiểu được, nhưng nay, nếu như các bạn mới học về điện tử và vi điều khiển không được trang bị kiến thức cơ bản này, có thể làm cho các bạn lúng túng vì một số điểm không được làm rõ trong mạch điện tử

Hiện tượng trôi điện áp

Các bạn xem hình sau:

Chúng ta cho rằng ngõ vào của PIC, cũng giống như ngõ vào của một linh kiện điện tử thông dụng là 74HC04 Thay vì vẽ một cái chân PIC, thì chúng tôi vẽ hình một con

Trang 2

74HC04 cho nó đơn giản, và để các bạn dễ hình dung Nếu để một con PIC lên một hình thì quá phức tạp hình ảnh, và lại không cần thiết Hơn nữa, bài viết này được tham khảo

từ tài liệu Very Basic Circuits của Encoder, và trong trang web này, người ta sử dụng 74HC04 để làm thí dụ, tôi tôn trọng ví dụ này nên khi viết lại bài viết cũng sử dụng 74HC04 giống như họ

Các bạn thấy, nếu như nút bấm được nhấn xuống, thì ngõ vào của 74HC04 hay PIC được nối với Mass Như vậy, lúc đó PIC có thể đọc giá trị 0 Tuy nhiên, nếu nút nhấn được thả

ra, chúng ta thấy rằng ngõ vào của PIC chẳng được nối với một linh kiện nào, vậy là điện

áp ở chân của PIC sẽ trôi nổi không xác định được Nếu không may mắn, điện áp trôi nổi này rơi vào vùng logic 0, rồi lại nhảy sang vùng logic 1 thì các bạn thấy rõ ràng chúng

ta không thể xác định được nút bấm có được bấm hay không?!!

Vì vậy, để đảm bảo, nếu khi không bấm nút, PIC phải có điện áp tham khảo là 5V, sau khi bấm nút thì điện áp sẽ giảm xuống 0V, như vậy mức logic mới thật rõ ràng, không thể

để trôi nổi như hình trên Vậy chúng ta có hình dưới đây

Công dụng của điện trở kéo lên

Các bạn lại thấy, nếu bây giờ không bấm nút, thì điện áp ngõ vào của PIC sẽ là 5V Nhưng nếu bấm nút một cái, rõ ràng chúng ta gây ra ngắn mạch khi nối trực tiếp từ nguồn xuống đất

Trang 3

Chính vì vậy, chúng ta phải đưa thêm vào một điện trở giữa đất, nút bấm và nguồn

Có hai vấn đề đặt ra, đó là điện trở sẽ đặt ở đâu, và giá trị của nó bằng bao nhiêu

Chúng ta xem hình này:

Các bạn sẽ bực mình ngay rằng, đúng là thằng ngốc mới đặt điện trở như thế này, bởi vì nếu đặt điện trở như vậy, dù bạn có bấm nút hay không bấm nút thì điện áp ngõ vào vẫn luôn luôn là 5V, vậy nút bấm trở nên vô nghĩa

Thế thì chỉ còn một cách đặt điện trở như hình tiếp theo đây:

Trang 4

Vậy vấn đề còn lại là giá trị điện trở bẳng bao nhiêu?

Các bạn sẽ thấy, PIC hoạt động ở 20mA và 5V trên các chân Vì vậy, khi chưa bấm nút, nguồn 5V được nối với điện trở và đi vào chân của PIC Nếu như trong một trường hợp nào đó chân của PIC chuyển từ chế độ input sang output, thì vấn đề xảy ra là dòng trên chân phải đảm bảo nhỏ hơn hoặc bằng 20mA Như vậy, trong thiết kế trên, chúng ta xem dòng tại chân PIC nếu PIC đặt ở 0V là

I = U/R = 5V/ 10000 Ohm = 5mA

Như vậy, thiết kế này đảm bảo cho hoạt động của PIC được an toàn

Khi đóng nút bấm dòng 5mA này sẽ đi xuống đất, và chân của PIC được nối với đất

Các bạn xem tiếp hình sau:

Trang 5

Trường hợp này, nút bấm được nối với nguồn 5V Điện trở nối giữa chân của PIC với đất

sẽ không làm cho PIC có hiện tượng trôi nổi điện áp, và khi đóng nút bấm thì dòng vẫn ở 5mA

Tổng kết:

Qua bài học này, các bạn đã hiểu được cơ bản về khái niệm điện trở kéo lên (trường hợp điện trở nối với nguồn), và điện trở kéo xuống (trường hợp điện trở nối với đất) Giá trị điện trở được đặt ở đây nhằm loại bỏ hiện tượng ngắn mạch, và đảm bảo ngõ vào của PIC khoảng 20mA Khi an toàn, cần thiết kế sao cho ngõ vào nhỏ

Code:

;===============================================================

=============================

INTERRUPT

; -

;Doan ma bat buoc de vao ngat

Trang 6

; -

MOVWF W_SAVE ;W_SAVE(bank unknown!) = W

remainder of handler

= swap_nibbles( STATUS )

CLRF PCLATH ; PCLATH = 0

here!

; -

;Doan chuong trinh ngat

Trang 7

; -

; cac ban se viet chuong trinh ngat o day

; -

;Doan ma bat buoc de ket thuc ngat

; -

MOVF FSR_SV, W

PCH_SV

MOVWF STATUS ; STATUS = swap_nibbles( STAT_SV )

swap(swap( W_SAVE )) (no change Z bit)

Trang 8

BSF INTCON, GIE

RETFIE

;===============================================================

=====================================

theo em biết thì khi vào chương trình ngắt ta phải lưu lại giá trị của hai thanh ghi :

STATUS và W để sau khi thực hiện trình phục vụ ngắt sẽ khôi phục lại Còn PC thì được

tự động lưu vào STACK Vậy, các tác động vào PCLATH trên đoạn CODE của bác là nhằm mục đích gì vậy ?

còn nữa : CLRF STATUS

thì chưa chắc STATUS = 0 ! vì trong STATUS có một số bit không chịu tác động - giá trị của chúng không đổi ?

em mới học, mong bác chỉ rõ hơn

1) Ngắt có nhiều tác vụ, có thể bị tràn stack, hoặc dùng nhiều ngắt cùng lúc, làm động tác này, khóa cứng tất cả luôn

2) Đã có lệnh SWAPF trước đó để lưu lại giá trị thanh STATUS rồi, chú ý

T,

Dạo này mình hơi bạn, chưa thể viết bài được, hẹn đầu tháng 7 viết tiếp

Chưa thể trả lời chi tiết lúc này, nhưng việc lắp thêm được bao nhiêu dung lượng nhớ, phụ thuộc vào chuẩn giao tiếp với ROM, RAM ngoài

Để đơn giản, tôi lấy thí dụ một con ROM có 2 bit địa chỉ để enable nó Như vậy, trên

Trang 9

mạch, nếu bạn dùng 1 đường nối, bạn chỉ có thể nối tối đa 4 con ROM ngoài Như vậy, điều này giới hạn số lượng ROM, RAM được nối vào PIC

Điều thứ hai, khi truy cập bằng các chuẩn giao tiếp như I2C, SPI, tùy thuộc vào bạn

sử dụng giao tiếp với bao nhiêu bit địa chỉ, thì bạn sẽ có số lượng giới hạn bấy nhiêu thiết bị có thể kết nối với PIC Hiện nay, một số PIC hỗ trợ 2 cổng I2C, và thêm mấy cổng SPI nếu bạn có đủ can đảm dùng hết số cổng này cho việc kết nối vào ROM, thì đúng là tôi cũng chịu thua luôn

Con số 10MB tôi chưa bao giờ tính toán thử khả năng tối đa của nó, nhưng theo ước tính sơ bộ thì là không thể

Nhưng nếu bạn làm cách này, bạn thiết lập chuẩn giao tiếp, và kết nối với các con Flash, thì bạn thích kết nối đến bao nhiêu cũng được Bởi vì theo tôi biết, con Flash lớn nhất hiện nay có dung lượng 1GB

Bạn có bao giờ mở cái USB key của bạn ra chưa? Thực ra trong đó là một con Flash Đáng tiếc, tôi chưa bao giờ thử kết nối với nó, nên không biết trả lời bạn cách nào

Các con ROM thông dụng 512Kbit Bạn có thể tìm trên www.microchip.com

Nếu hiểu nôm na theo cách này, bạn có thể sẽ dễ hiểu nó hơn, một hằng là một giá trị Giá trị đó có thể nằm trong thanh ghi dữ liệu (bộ nhớ dữ liệu), nhưng cũng có thể nằm trong lệnh điều khiển (bộ nhớ chương trình) Điều này khẳng định rằng, hằng là một giá trị

Một khi bạn đặt một tên nào đó, để đại diện cho một hằng số, có nghĩa là thay vì bạn viết cái giá trị đó, thì bạn viết cái tên đại diện đó, để dễ nhớ Chẳng hạn, bạn viết chữ pi, đại diện cho hằng số có giá trị 3.1415926

Trong khi đó, nếu bạn đặt một biến pi, thì có nghĩa là bạn xác định địa chỉ của thanh ghi

Trang 10

dữ liệu nào đó, mà mỗi khi bạn truy xuất đến biến pi, có nghĩa là bạn đang thao tác với thanh ghi ở địa chỉ mà biến pi đại diện Ví dụ: bạn đặt biến pi ở thanh ghi 0x20 chẳng hạn Điều đó có nghĩa là khi ban làm gì với biến pi, chính là bạn đang làm việc với thanh ghi ở địa chỉ 0x20

Nhưng bạn sẽ thấy rằng, vậy biến pi và hằng số pi có gì khác nhau? Bây giờ biến pi và hằng pi cũng đều mang giá trị cả Nhưng các bạn nên nhớ, trong câu lệnh lúc nào vị trí của biến (thanh ghi) F, và vị trí của hằng số k (trong cấu trúc một câu lệnh MPASM, tôi

sẽ post lại bài này từ dddt) có sự phân biệt rõ ràng

Vậy tùy theo vị trí bạn đặt nó ở đâu, nó sẽ là biến, hoặc là hằng Nếu là biến, nó chỉ mang giá trị của dịa chỉ của thanh ghi nằm trong bộ nhớ dữ liệu, nếu là hằng, nó nằm đâu cũng được kể cả ở bộ nhớ dữ liệu và bộ nhớ chương trình

Các bạn cần tham khảo bài viết tập lệnh MPASM và kiến trúc PIC và bài kỹ thuật bảng,

đã được đăng tại www.diendandientu.com

Khi có thời gian, tôi sẽ chuyển bài viết đó về đây để các bạn xem

Ngày đăng: 24/07/2014, 12:21

TỪ KHÓA LIÊN QUAN

w