Upload
dangbao
View
233
Download
0
Embed Size (px)
Citation preview
CROSSWORKS AVR STUDIO TUTORIAL
1. Giới Thiệu :
Chào các fan hâm mộ AVR, trong bài viết này tôi xin giới thiệu về tool crossworks studio dung cho AVR. Đây là phần mềm biên dịch cũng khá hay với dao diện tương đối đẹp mắt. Thoạt đầu khi mới dùng nó, tôi hơi gặp một chút rắc rối vì nó quá nhiều chức năng, thậm chí đến bây giờ chưa khai thác hết các tính năng của công cụ này. Vì thế, tôi viết bài này nhằm trình bày những gì mình tìm hiểu được, tôi nghĩ không những có ích cho các bác mới làm quen mà còn dành cho các bác có kinh nghiệm trong lĩnh vực vi điều khiển. Và những phần còn lại hy vọng được sự giúp đỡ từ các bác.
Tool Crosswoks AVR có thể download từ trang www.rowley.co.uk.Trong phần hướng dẫn chúng ta sẽ làm với project cụ thể nhằm giảm bớt sự nhàm chán đối với các bạn đọc. Sau đây là project giao tiếp ATMEGA128 với màn hình LCD điện thoại Nokia 7210, 6610.
2. Hiện Thực:
Đầu tiên, chép 4 file source vào thư mục, ví dụ ...\Tutor. Khởi động
Crossworks AVR, vào mục file chọn new -> new project :
Click vào Browse và chỉ đường dẫn đến thư mục có chứa các file source, trong ví dụ này là Tutor, click vào Tutor :
Đặt tên project trong mục name “COLOR_LCD_DISPLAY”
Trỏ chuột đến C Executable sau đó click OK. Bước kế tiếp, thiết lập tham số cho project bao gồm target processor chọn Atmega128, Additional Output Format chọn hex.
Click vào Next để xem thông số bao gồm các file .asm khởi động, hàm main vừa được tạo, sau cùng click Finish, chương trình sẽ hiện ra thông báo do chương trình tạo ra file main trùng với file main trong phần source code, chọn No để kết thúc phần khởi tạo.
Chú ý : Nếu chọn Yes file main sẽ bị ghi đè do đó sẽ mất hết dữ liệu tạo sẵn.
Sau khi kết thúc phần khởi tạo project, trên mục Project Explorer xuất hiện 2 thư mục ảo bao gồm Source và System, hàm main đã được add sẵn vào cây thư mục.
Bước kế tiếp : add các file source còn lại vào cây thư mục, trỏ chuột đến thư mục Source, click chuột phải, chọn mục Add Existing File, cửa sổ Add Exiting Items xuất hiện, đánh dấu vào 3 file Font.h, N6610.h và N6610.c, sau đó click Add.
Trong trường hợp tự viết code, ta sẽ chọn mục Add New File thay cho vì Add Existing File.
Có thể click vào file muốn xem trên cây thư mục trong cửa sổ Project Explorer.
Sau khi xong phần code, click vào button Compile (Ctr+F7) check syntax, tương tự cho Build Active Project (dùng cho project hiện hành) và Build Solution (tương ứng cho multi projects).
Để có thể lập trình cho AVR, crosswork hỗ trợ ISP và JTAG, và tích hợp sẵn các
tool Debug bao gồm RS232 Terminal, JTAG ICE, AVR Simulator…Trong phần ví dụ ta dùng JTAG ICE.
Trước tiên, ta phải thiết lập thông số cho cable JTAG, ở menu View , chọn mục Target (Ctr+Alt+T), trong cửa sổ Target click JTAG ICE:
Trên cửa sổ Properties, chọn thông số thích hợp tùy vào cable JTAGE mình đang
sử dụng, bao gồm cổng giao tiếp, tốc độ baudrate….
Sau khi lắp cable JTAG vào board test, trong mục Target, chọn Connect JTAG
ICE nhằm kết nối với board target. Click vào nút có dấu ”!” (CTR+F5) nếu muốn nạp mà không cần dùng chức năng Debug. Trên cửa sổ Target log thông báo kết quả lập trình thành công hay không. Download completed và verify completed tuong ung cho viec nạp vào VĐK hoàn tất.
Ta có thể Debug bằng cách ấn phím mũi tên bên trái (hoặc F5), màn hình debug xuất hiện, tương tự như Keil 8051, ta có thể dùng cửa sổ Wacth để đối chiếu kết quả của các biến, thanh ghi... các call stack của chương trình con. Có thể chọn cửa sổ ở dạng source code hoặc Diassembly…
Tóm lại, Crossworks AVR là công cụ khá hay đầy đủ các tính năng cần thiết cho việc lập trình VĐK, va` đáng được chúng ta tìm hiểu.
3. Các Hàm:
Chương trình được viết giao tiếp VĐK và LCD Nokia (Driver Epson
S1D15G10) bao gồm : N6610.h : Khai báo các hàm cần thiết. N6610.c : Source giao tiếp LCD. Main.c : Chương trình chính, dùng cho mục đích test. Font.h : Chứa font chữ.
void Wait(UByte m); Hàm delay.
void SPI_Init(void); Khởi động cổng SPI .
void LCD_Init(void); Khởi động LCD.
void SPI_CMD(UByte CMD); Ghi lệnh cho LCD
void SPI_DATA(UByte Data); Ghi dữ liệu cho LCD.
void Put_Pixel(UByte x, UByte y,UByte Color); Put pixel.
void Line(UByte x1,UByte y1,UByte x2,UByte y2,UByte Color); Vẽ đường thẳng nối 2 điểm (x1,y1) và (x2,y2), Color : màu của đường thẳng. void Z_Pixel(UByte x,UByte y,UByte xz,UByte yz,UByte zoom,UByte Color); Hàm zoom pixel, (x,y) toạ độ điểm ban đầu, (xz,yz) toạ độ của điểm zoom. void PRINT_CHAR(Ubyte x,UByte y,UByte Index,UByte zoom,UByte FColor,UByte BColor); In ký tự ra màn hình ở toạ độ (x,y), Index: mã ASCII của ký tự cần in, zoom : hệ số phóng đại , FColor : màu của font chữ, Bcolor : màu back round của font chữ. void Rect(UByte x1,UByte y1,UByte x2,UByte y2,UByte Solid,UByte Color); Vẽ hình chữ nhật (x1,y1) toạ độ góc trên trái, (x2,y2) toạ độ dưới phải, Solid=0 không tô đặc, Solid >0 tô đặc,Color : màu hcn. void Circle(UByte xo,UByte yo,UByte r,UByte Solid,UByte Color); Vẽ đường tròn, (xo,yo) toạ độ tâm, r : bán kính, Solid=0 không tô đặt, Solid>0 tô đặc, Color: màu của hình tròn. void Clear_Display(void);
Xoá màn hình.
4. Kết Nối: LCD pinout :
1 VDD 3V3 5V
2 /Reset PB4
3 SDATA PB2
4 SCLK PB1
5 /CS PB5
6 VLCD 3V3
7 NC
8 GND
9 LED-
10 LED+ (6V-7V)
Chú ý: Dùng cầu phân áp bằng điện trở R1=1k8, R2=3k3 để chuyển mức giao
tiếp 5V 3V3. Xem datasheet S1D15G10 (LCD driver chip).
5. Kết Quả:
Chương trình được chạy thử trên board demo ATMEGA128, các AVR loại khác điều có thể dùng được bằng cách thay đổi “#define” trên file N6610.h cho phù hợp.
Kết nối LCD với board test
Kết nối cable JTAG
AVR ATM128
Kết quả hiển thị