1. Trang chủ
  2. » Giáo án - Bài giảng

giáo trình codevisionavr ard 2.5 cho người mới học

11 1,3K 4
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 214,5 KB

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

Nội dung

giáo trình hướng dẫn sử dụng codevisionavr

Trang 1

Khởi tạo Project mới.

Để bắt đầu một dự án mới (project) đối với CodeVision cần có 1 thư mục mới để lưu toàn bộ các tệp tin có trong dự án Có nhiều cách để bắt đầu một dự án mới trong CodeVision, nhưng sử dụng trình hỗ

trợ CodeWinzardAVR giúp người dùng tiết kiệm khá

nhiều thời gian set bit cho các thanh ghi

Trong các cách set bit tuyền thống người lập trình khi cần dùng đến tài nguyên nào của chip cần xem datasheet về các thanh ghi của chip Sau đó sử dụng đến bit nào thì set bit đó Tiếp đến là tính toán các thông

số cho phù hợp Điều này có thể dễ gây nhầm lẫn cho người lập trình Nhìn chung set bit theo cách truyền thống khá phức tạp, đòi hỏi người lập trình phải am hiểu

về cấu trúc chip AVR Nên trong phạm vi đề tài chỉ giới thiệu cách khởi tạo một dự án mới đơn giản bằng cách

sử dụng trình hỗ trợ CodeWinzardAVR Trong trình hỗ

trợ này tất cả các tài nguyên của chip đuợc xắp xếp khoa học, khi người dùng cần đến tài nguyên nào chỉ cần chọn trong các bảng thông số, trình hỗ

trợ CodeWinzardAVR sẽ tự động tính toán và ghi vào các

thanh ghi Ngoài ra trình hỗ trợ còn có các thư viện viết sẵn cho việc ứng dụng các chuẩn giao tiếp khác nhau như: I2C, SPI, UART… và các thiết bị ngoại vi như: LCD, đồng hồ thời gian thực,… Sau khi thiết lập trình hỗ trợ đưa ra cho người dùng một đoạn code mẫu, nếu đoạn nào thừa không cần thiết người dùng có thể xoá đi hoặc thêm vào theo cách truyền thống Nhưng khi sử

dụng trình hỗ trợ CodeWinzardAVR người dùng dễ tạo

thói quen không am hiểu sâu về cấu trúc của chip Vì vậy nên sử dụng trình hỗ trợ này sau khi đã thành thạo cách làm truyển thống

Khởi tạo một dự án mới.

Trang 2

Mở trình dịch CodeVision -> chọn New -> tích vào project -> chọn OK -> Tiếp tục chọn OK -> Chọn OK Sau

đó xuất hiện một hộp giao diện như hình… Sau đó chọn loại chíp cần sử dụng và giá trị thạch anh tại vùng vòng tròn đỏ

Trong trình hỗ trợ có hỗ trợ thiết lập các tài nguyên trên chip như:

External IRQ: Ngắt ngoài.

Timers: Khởi tạo timer, counter, xung PWM.

USART0, USART0: Giao diện nối tiếp USART

(tương thích chuẩn nối tiếp RS-232)

Analog Comparator:

ADC: Chuyển đổi tương tự sang số.

SPI: Giao diện nối tiếp 4 dây do hãng Motorola

đề xướng

Trang 3

I2C: Giao diện nối tiếp 2 dây do hãng Intel đề

xướng

1 Wire: Giao diện nối tiếp 1 dây.

TWI (I2C): Truyền thông đã chip chủ dựa trên

giao diện nối tiếp 2 dây

Alphanumeric LCD: Hỗ trợ LCD 16x2 hoặc 8x2 Project Information: Thông tin về dự án.

External SRAM: Ngắt khi tràn SRAM (giới hạn

tràn SRAM do người lập trình quy định)

Chip: Chọn loại chíp, giá trị thạch anh.

Ports: Chọn đầu ra xuất nhập I/O cho các

PORT

Khởi tạo PORT xuất nhập I/O.

Trong AVR trên bất kì một chân nào, khi người lập trình muốn sử dụng chân đó

là nhập hay xuất cũng cần phải khai báo Khi muốn sử dụng đến PORT nào chỉ cần chọn PORT đó, sau đó nếu chân nào là chân nhập (đưa tín hiệu vào) thì vẫn để nguyên (In), nếu là chân xuất (đưa tín hiệu ra) chỉ cần kích vào đó và chọn là Out

Sang cột bên phải, nếu là Out: Có 2 mức là 0 hoặc 1, là mức mặc định của chân đó Nếu là In: Có 2 mức là T và P

T là không sử dụng điện trở kéo nội, nguợc lại P là sử dụng điện trở kéo nội

Khởi tạo PWM.

Trang 4

Trên chip Atmega 128 gồm

có 4 bộ timer và một bộ định thời Watchdog

Trong ví dụ về Timer1:

Clock Source: Nguồn cấp xung

Clock Value: Giá trị xung clock đưa vào bộ timer là 1000 kHz

Mode: Chế độ Fast PWM giá trị top đuợc lấy từ thanh ghi ICR1 (các mode có trong datasheet của chip)

Out A: Xung ra trên chân OCR1A là xung không đảo, OCR1A càng lớn t-on càng lớn

Out B: Xung ra trên chân OCR1B là xung đảo, OCR1B càng lớn t-on càng nhỏ

Input Capt: Chống nhiễu PWM

Interupt on: Ngắt tràn timmer

Comp A,B,C: Ngắt so sánh

Khởi tạo ngắt.

Trang 5

Chip Atmega 128 gồm có 8 ngắt ngoài

INT0, INT1,…, INT7

Mỗi ngắt có các Mode sau:

+ Falling Edge: Ngắt suờn xuống

+ Rising EDGE: Ngắt suờn lên + Low level: Ngắt khi ở mức thấp

Ví dụ đọc encoder bằng ngắt ngoài:

interrupt [EXT_INT0] voidext_int0 _isr(void) {

if(ngat1==0) { if(IN1==0) encoder_phai ; else encoder_phai++;

ngat0=0;

ngat1=1;

}}

Khởi tạo LCD.

Trang 6

Kích chọn Enable Alphanumeric LCD Support Sau

đó chọn số kí tự trên 1 hàng

Trong các phiên bản CodeVision cũ chỉ cho phép chọn một PORT cố định Nhưng trong những phiên bản đời cao hơn ví dụ v2.05.0 cho phép chọn từng bit Điều này giúp việc thiết

kế mạch thuận tiện hơn, và tận dụng được những chân đơn lẻ

Cột bên trái là kí hiệu các chân trên LCD, cột giữa để chọn PORT trên vi điều khiển, cột bên phải để chọn chân tương ứng trên mỗi PORT

Thư viện alcd: Trong thư viện này đã có những

hàm hiển thị lcd được trình hỗ trợ viết sẵn Khi người dùng muốn sử dụng chỉ cần lấy ra và điền các thông số thích hợp sau và hiển thị lên lcd

- Cách sử dụng các hàm trong thư viện alcd:

void char lcd_init

(unsigned

char lcd_columns)

Khởi tạo số kí tự trên 1 hàng

void lcd_clear

void lcd_gotoxy

(unsigned char x,

unsigned char y)

Dịch chuyển con trỏ đến 1 vị

trí trên màn hình

x: Hàng(0,1), y: cột(0-15)

(2 hàng, 16 cột)

void lcd_putchar

(char c)

Hiển thị một kí tự trong bảng

mã ASCII

VD hiển thị số “1”:

lcd_putchar(1+48);

Trang 7

void lcd_puts

(char *str)

Hiển thị một chuỗi kí tự đuợc

lưu trongSRAM void lcd_putsf

(char flash *str)

Hiển thị một chuỗi kí tự được

lưu trong bộ nhớ flash

void lcd_putse

(char eeprom *str)

Hiển thị một chuỗi kí tự được

lưu trong bộ nhớ eeprom

VD: hiển thị chương trình: “ VDNT Group!” đếm ngược từ 1000 đến 0:

#include <mega128.h>

#asm

.equ lcd_port=0x15 ;PORTC

#endasm

#include <alcd.h>

#include <delay.h>

unsigned int z;

unsigned char MyName []={“VDNT Group!”}; //

Lưu từ “VDNT Group!” vào chuỗi MyName trong SRAM

////////////////// Hàm hiển thị 4 số///////////////////

void lcd_putnum(long so){

unsigned int j,t;

unsigned char s[9];

long so1, so2, so3;

so1 = so/10000;

so2= so-(so1*10000);

for(j=1;j<=8;j++){

if(j<5) {so3=so1, t=0;}

else {so3=so2; t=4;}

s[1+t]= so3/1000;

s[2+t]= (so3%1000)/100;

s[3+t]= ((so3%1000)%100)/10;

s[4+t]= ((so3%1000)%100)%10;}

for(j=0;j<8;j++){

lcd_putchar(s[j+1]+48);

}}

Trang 8

void main(void){

lcd_init(16);

while (1){

lcd_gotoxy(0,0); // Di chuyển con trỏ đến đầu dòng thứ nhất

lcd_puts(MyName[]); // xuất chữ “VDNT Group!”

từ trong SRAM

lcd_gotoxy(1,0); // Di chuyển con trỏ đến đầu dòng thứ hai

for(z=1000; z>0;z ){

lcd_putnum(z); // Hiển thị giá trị hiện thời của biến

z lên LCD

delay_ms(10);}

}

}

Khởi tạo ADC:

Trang 9

Điện áp tham chiếu cho ADC trên AVR có thể được tạo bởi 3 nguồn: dùng điện áp tham chiếu nội 2.56V (cố định), dùng điện áp AVCC hoặc điện

áp ngoài đặt trên chân VREF

Kích vào ADC Enabled thấy bảng như hình bên cạnh

Interupt: Cho phép ngắt, một ngắt sẽ xảy ra khi một quá trình chuyển đổi ADC kết thúc và các giá trị chuyển đổi đã được cập nhật (các giá trị chuyển đổi chứa trong 2 thanh ghi ADCL và ADCH)

Use 8 bits: Chọn độ phân giải 10bits hoặc 8 bits

Volt Ref: Chọn điện

áp tham chiếu

Clock: Chọn tần số xung đưa vào ADC

Automâticlly Scan Inputs: Chế độ tự động chuyển đổi nếu giá trị ADC vượt giới hạn đuợc thiết lập trong ô First và Last

Ngoài ra còn khá nhiều chức năng của ADC

mà trình hỗ trợ không đề cập đến có trong

Trang 10

datasheet của chip.

Dưới đây là ví dụ chương trình đọc ADC đơn kênh

sử dụng trong robot tự động 1, khi cần đọc đến kênh ADC nào chỉ cần truyền vào hàm như sau: ADC=read_adc(0); khi này giá trị của ADC ở kênh 0 sẽ được lưu vào biến ADC

unsigned int read_adc(char cb)

{

ADMUX = 0x20 | cb;// Dich ket qua sang ben trai, Chon sensor doc

delay_us(10);

ADCSRA |= 0x40; // Toc do doc ADC chia cho 16

while((ADCSRA&0x10)==0);// Cho den khi doc

compelete

Trang 11

ADCSRA|=0x10;

return ADCH; // Doc gia tri 8 bit ADC tu thanh

ADCH

}

Sau khi hoàn tất quá trình khởi tạo với trình hỗ trợ Code Winzard AVR:

Chọn program -> Genarate, Save and Exit -> Tiếp tục nhấn OK đến khi hiện ra bảng “Save C Compliler Source File” -> Tạo tiệp tin mới để lưu dự án -> Vào trong tập tin mới -> Đặt tên cho tệp tin C (.c) -> Đặt tên cho dự án (.prj) -> Đặt tên cho tệp tin lưu quá trình khởi tạo với trình hỗ trợ CodeWinzardAVR (.cwp) -> Bắt đầu viết chương trình

Chương trình có thể có những chú thích hoặc những tài nguyên không cần sử dụng đến, người dùng

có thể xoá hoặc thiết lập lại theo ý muốn

Ngày đăng: 23/05/2014, 11:54

TỪ KHÓA LIÊN QUAN

w