PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 02-05-2009, 10:24 PM   #1
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Pwm

Thôi ko làm phiền các bác nữa nha. Mình nâng tần số thạch anh trong bài của mình lên 40MHz (bằng bài của anh Nam), đồng thời tính lại bảng sin cho khớp với thạch anh 40MHz này thì kết quả mô phỏng đã đúng rồi. Hi. Nhưng ko hiểu vì sao với thạch anh 4MHz thì kq mô phỏng ko đúng, với thạch anh 40MHz thì lại đúng, mà chắc ko cần quan tâm điều này làm j cho tốn calo. Hi. Sắp tới làm mạch thực rồi kiếm cái oscillo đo xem thế nào.
Chúc cả nhà vui.

//PS; nhân tiện cho mình hỏi: trong datasheet 18F4431 (hình dưới) ko đưa ra việc dùng thạch anh 40MHz, ko biết mình lắp mạch với 40MHz có được ko?

Trích:
Theo anh Nam:
Tôi dùng thạch anh 10 MHz và PLL, do đó tần số clock của PIC là 40 MHz
Cho em hỏi khai báo trong CCS để sử dụng đựoc tần số này anh Nam nha.
Hình Kèm Theo
File Type: jpg 18f.JPG (113.6 KB, 30 lần tải)
__________________
Trường.
http://vn.myblog.yahoo.com/nguyenvantruongqt

thay đổi nội dung bởi: truongqt, 02-05-2009 lúc 10:36 PM. Lý do: hỏi về thạch anh
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-05-2009, 01:38 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi truongqt View Post
...
Cho em hỏi khai báo trong CCS để sử dụng đựoc tần số này anh Nam nha.
Tôi không dùng CCS C, mà tài liệu hướng dẫn của trình dịch này cũng không đề cập đến chế độ HSPLL của một số PIC18. Dựa vào tập tin header của PIC18F4431, tôi đoán là bạn sẽ dùng giá trị H4 khi thiết lập cấu hình bộ dao động cho PIC trong CCS C. Bạn cũng có thể đọc thêm phần ví dụ của directive #use delay về một cách mô tả khác cho chế độ HSPLL.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-06-2009, 12:14 PM   #3
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
pwm

2 đoạn mã sau là tuơng đuơng, nhưng khi chạy mạch thật thì không biết vì sao mà đoạn mã tạo PWM (mã 2) lại không làm việc (ko chạy hoặc chạy sai gậy ngắn mạch cầu H), còn mã 1 thì chạy bình thường?


------------Mã 1-------------

Code:
#include <18f4331.h>
#fuses  HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20000000)

void main()
{
while (1)
    {
       output_B(0B00001001);   delay_us(21);
       output_B(0X00);   delay_us(2);       
       output_B(0B00000110);   delay_us(21);
       output_B(0X00);   delay_us(2); 
    }
 }

-------------Mã 2( dùng chức năng PWM)------------
Code:
#include <18f4331.h>
#fuses  HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20000000)

#bit TBInt_pin = 0xfa4.4
#byte PTCON0 = 0XF7F
#byte PTCON1 = 0XF7E
#byte PTMRL = 0XF7D
#byte PTMRH = 0XF7C
#byte PTPERL = 0XF7B
#byte PTPERH = 0XF7A
#byte PDC0L = 0XF79
#byte PDC0H = 0XF78
#byte PDC1L = 0XF77
#byte PDC1H = 0XF76
#byte PDC2L = 0XF75
#byte PDC2H = 0XF74
#byte PDC3L = 0XF73
#byte PDC3H = 0XF72
#byte SEVTCMPL = 0XF71
#byte SEVTCMPH = 0XF70
#BYTE PWMCON0 = 0XF6F
#BYTE PWMCON1 = 0XF6E
#BYTE DTCON = 0XF6D
#byte FLTCONFIG = 0XF6C
#byte OVDCOND = 0XF6B
#byte OVDCONS = 0XF6A
#byte ANSEL0 = 0XFB8

void main()
{ setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_COMPLEMENTARY,PWM_OFF,PWM_OFF);
setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,249,0,1,30);//20KHz
      set_power_pwm0_duty(498);
      set_power_pwm2_duty(498);
 while (1)
    {
      if (TBINT_PIN == 1 && PTMRL >= 50)
      {
      set_power_pwm0_duty(498);
      set_power_pwm2_duty(498);
         TBINT_PIN= 0;
      }
    }
 }

------------------
Mong các cao nhân chỉ giùm, em cần gấp lắm.
__________________
Trường.
http://vn.myblog.yahoo.com/nguyenvantruongqt

thay đổi nội dung bởi: namqn, 14-06-2009 lúc 12:17 PM. Lý do: định dạng code
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-06-2009, 08:44 PM   #4
tienminh
Đệ tử 3 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 50
:
Đoạn mã 1 của bạn không thể gọi là PWM đúng nghĩa, không thể hiện được ưu điểm gì của 18F4431, Tôi nghĩ bạn không nên dùng cách này cho các ứng dụng công suất.
Còn đoạn 2 thì...Tôi cũng không biết giải thích thế nào nhưng tôi từng sử dụng CCS như trên và không được, có lẽ do hàm viết sẵn của nó nhiều khi dở hơi mình không kiểm soát được nội dung.
Chuyển sang dùng C18 và cấu hình cụ thể đến từng thanh ghi giúp cho chúng ta hiểu vấn đề hơn, kết quả là tôi tạo ra được PWM rất tốt.
tienminh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-06-2009, 09:01 PM   #5
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Trích:
Nguyên văn bởi tienminh View Post
Đoạn mã 1 của bạn không thể gọi là PWM đúng nghĩa, không thể hiện được ưu điểm gì của 18F4431, Tôi nghĩ bạn không nên dùng cách này cho các ứng dụng công suất.
Còn đoạn 2 thì...Tôi cũng không biết giải thích thế nào nhưng tôi từng sử dụng CCS như trên và không được, có lẽ do hàm viết sẵn của nó nhiều khi dở hơi mình không kiểm soát được nội dung.
Chuyển sang dùng C18 và cấu hình cụ thể đến từng thanh ghi giúp cho chúng ta hiểu vấn đề hơn, kết quả là tôi tạo ra được PWM rất tốt.
Anh tienminh dùng C18 chạy được rồi à, vậy anh cho em xin đoạn code luôn được ko anh. Em viết đoạn mã 1 để kiểm tra xem portB có bị hỏng không thôi, vì thấy PWM nó ko chạy. Cảm ơn anh đã trả lời sớm. Thanks much much...
__________________
Trường.
http://vn.myblog.yahoo.com/nguyenvantruongqt
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-06-2009, 12:32 AM   #6
tienminh
Đệ tử 3 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 50
:
Bạn xem lại trang 1 có đoạn mã anh Namqn đã cho , có thể chạy trên 18F4431 và tạo được ra sin.
tienminh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 11:17 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam