![]() |
|
Tài trợ cho PIC Vietnam |
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 |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 | |
Đệ tử 3 túi
Tham gia ngày: Oct 2006
Bài gửi: 50
: |
Trích:
Tôi cũng tranh thủ hỏi luôn các bạn thành thạo về PWM của PIC8F4431: - Chương trình này dùng cặp PWM0-1 của chip, tra bảng sin để đặt dutycycle . - Khi chạy chương trình thì dạng sóng đầu ra biến đổi độ rộng theo chu kỳ sine , tuy nhiên sau khi chạy 1-2 phút thì nó tịt, không phát xung nữa, không biết tại sao?????????? sau đây là code viết trong C18 Code:
#include<p18f4431.h> #include<delays.h> #pragma config OSC=HS /* #pragma config FCMEN = ON #pragma config PWRTEN = ON #pragma config BOREN = ON #pragma config BORV = 42 #pragma config WDTEN = OFF #pragma config WINEN = OFF #pragma config WDPS = 64 #pragma config T1OSCMX = OFF #pragma config STVREN = OFF #pragma config LVP = OFF #pragma config CP3 = ON */ const rom unsigned int sine[800]={ 400 , 403 , 406 , 409 , 412 , 415 , 418 , 421 , 425 , 428 , 431 , 434 , 437 , 440 , 443 , 447 , 450 , 453 , 456 , 459 , 462 , 465 , 468 , 471 , 474 , 478 , 481 , 484 , 487 , 490 , 493 , 496 , 499 , 502 , 505 , 508 , 511 , 514 , 517 , 520 , 523 , 526 , 529 , 532 , 535 , 538 , 541 , 544 , 547 , 550 , 553 , 555 , 558 , 561 , 564 , 567 , 570 , 573 , 575 , 578 , 581 , 584 , 587 , 589 , 592 , 595 , 598 , 600 , 603 , 606 , 608 , 611 , 614 , 616 , 619 , 622 , 624 , 627 , 630 , 632 , 635 , 637 , 640 , 642 , 645 , 647 , 650 , 652 , 654 , 657 , 659 , 662 , 664 , 666 , 669 , 671 , 673 , 676 , 678 , 680 , 682 , 685 , 687 , 689 , 691 , 693 , 695 , 697 , 700 , 702 , 704 , 706 , 708 , 710 , 712 , 714 , 716 , 717 , 719 , 721 , 723 , 725 , 727 , 729 , 730 , 732 , 734 , 736 , 737 , 739 , 741 , 742 , 744 , 745 , 747 , 748 , 750 , 752 , 753 , 754 , 756 , 757 , 759 , 760 , 761 , 763 , 764 , 765 , 767 , 768 , 769 , 770 , 771 , 773 , 774 , 775 , 776 , 777 , 778 , 779 , 780 , 781 , 782 , 783 , 784 , 784 , 785 , 786 , 787 , 788 , 788 , 789 , 790 , 791 , 791 , 792 , 792 , 793 , 794 , 794 , 795 , 795 , 796 , 796 , 796 , 797 , 797 , 797 , 798 , 798 , 798 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 800 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 799 , 798 , 798 , 798 , 797 , 797 , 797 , 796 , 796 , 796 , 795 , 795 , 794 , 794 , 793 , 792 , 792 , 791 , 791 , 790 , 789 , 788 , 788 , 787 , 786 , 785 , 784 , 784 , 783 , 782 , 781 , 780 , 779 , 778 , 777 , 776 , 775 , 774 , 773 , 771 , 770 , 769 , 768 , 767 , 765 , 764 , 763 , 761 , 760 , 759 , 757 , 756 , 754 , 753 , 752 , 750 , 748 , 747 , 745 , 744 , 742 , 741 , 739 , 737 , 736 , 734 , 732 , 730 , 729 , 727 , 725 , 723 , 721 , 719 , 717 , 716 , 714 , 712 , 710 , 708 , 706 , 704 , 702 , 700 , 697 , 695 , 693 , 691 , 689 , 687 , 685 , 682 , 680 , 678 , 676 , 673 , 671 , 669 , 666 , 664 , 662 , 659 , 657 , 654 , 652 , 650 , 647 , 645 , 642 , 640 , 637 , 635 , 632 , 630 , 627 , 624 , 622 , 619 , 616 , 614 , 611 , 608 , 606 , 603 , 600 , 598 , 595 , 592 , 589 , 587 , 584 , 581 , 578 , 575 , 573 , 570 , 567 , 564 , 561 , 558 , 555 , 553 , 550 , 547 , 544 , 541 , 538 , 535 , 532 , 529 , 526 , 523 , 520 , 517 , 514 , 511 , 508 , 505 , 502 , 499 , 496 , 493 , 490 , 487 , 484 , 481 , 478 , 474 , 471 , 468 , 465 , 462 , 459 , 456 , 453 , 450 , 447 , 443 , 440 , 437 , 434 , 431 , 428 , 425 , 421 , 418 , 415 , 412 , 409 , 406 , 403 , 399 , 396 , 393 , 390 , 387 , 384 , 381 , 378 , 374 , 371 , 368 , 365 , 362 , 359 , 356 , 352 , 349 , 346 , 343 , 340 , 337 , 334 , 331 , 328 , 325 , 321 , 318 , 315 , 312 , 309 , 306 , 303 , 300 , 297 , 294 , 291 , 288 , 285 , 282 , 279 , 276 , 273 , 270 , 267 , 264 , 261 , 258 , 255 , 252 , 249 , 246 , 244 , 241 , 238 , 235 , 232 , 229 , 226 , 224 , 221 , 218 , 215 , 212 , 210 , 207 , 204 , 201 , 199 , 196 , 193 , 191 , 188 , 185 , 183 , 180 , 177 , 175 , 172 , 169 , 167 , 164 , 162 , 159 , 157 , 154 , 152 , 149 , 147 , 145 , 142 , 140 , 137 , 135 , 133 , 130 , 128 , 126 , 123 , 121 , 119 , 117 , 114 , 112 , 110 , 108 , 106 , 104 , 102 , 99 , 97 , 95 , 93 , 91 , 89 , 87 , 85 , 83 , 82 , 80 , 78 , 76 , 74 , 72 , 70 , 69 , 67 , 65 , 63 , 62 , 60 , 58 , 57 , 55 , 54 , 52 , 51 , 49 , 47 , 46 , 45 , 43 , 42 , 40 , 39 , 38 , 36 , 35 , 34 , 32 , 31 , 30 , 29 , 28 , 26 , 25 , 24 , 23 , 22 , 21 , 20 , 19 , 18 , 17 , 16 , 15 , 15 , 14 , 13 , 12 , 11 , 11 , 10 , 9 , 8 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 4 , 3 , 3 , 3 , 2 , 2 , 2 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 7 , 7 , 8 , 8 , 9 , 10 , 11 , 11 , 12 , 13 , 14 , 15 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 28 , 29 , 30 , 31 , 32 , 34 , 35 , 36 , 38 , 39 , 40 , 42 , 43 , 45 , 46 , 47 , 49 , 51 , 52 , 54 , 55 , 57 , 58 , 60 , 62 , 63 , 65 , 67 , 69 , 70 , 72 , 74 , 76 , 78 , 80 , 82 , 83 , 85 , 87 , 89 , 91 , 93 , 95 , 97 , 99 , 102 , 104 , 106 , 108 , 110 , 112 , 114 , 117 , 119 , 121 , 123 , 126 , 128 , 130 , 133 , 135 , 137 , 140 , 142 , 145 , 147 , 149 , 152 , 154 , 157 , 159 , 162 , 164 , 167 , 169 , 172 , 175 , 177 , 180 , 183 , 185 , 188 , 191 , 193 , 196 , 199 , 201 , 204 , 207 , 210 , 212 , 215 , 218 , 221 , 224 , 226 , 229 , 232 , 235 , 238 , 241 , 244 , 246 , 249 , 252 , 255 , 258 , 261 , 264 , 267 , 270 , 273 , 276 , 279 , 282 , 285 , 288 , 291 , 294 , 297 , 300 , 303 , 306 , 309 , 312 , 315 , 318 , 321 , 325 , 328 , 331 , 334 , 337 , 340 , 343 , 346 , 349 , 352 , 356 , 359 , 362 , 365 , 368 , 371 , 374 , 378 , 381 , 384 , 387 , 390 , 393 , 396 }; unsigned int index=0; void set_duty0(unsigned int duty); void setupPWM(void) { PTCON0=0x00; //Postscale 1:1, Prescale 1:1, Free Running PTCON1=0xC0;//PWM time base is on, count up PWMCON0=0x20;//Enable PWM0-1, Complementary PWMCON1=0x40; DTCON=0x00; PTMRH=0; PTMRL=0; PTPERH=0; PTPERL=0xC7; // 20KHz PWM PDC0H=0x00; PDC0L=0x00;//duty /* PDC1H=0; PDC1L=0; PDC2H=0; PDC2L=0; PDC3H=0; PDC3L=0; OVDCOND=0; OVDCONS=0; FLTCONFIG=0; SEVTCMPH=0; SEVTCMPL=0; */ } void set_duty0(unsigned int duty) { PTCON1=0x00; PDC0H=duty/256; PDC0L=duty%256; PTCON1=0xC0; } void main() { TRISA=0x00; ANSEL0=0x00; setupPWM(); while(1) { set_duty0(sine[index]); index++; if(index==800)index=0; Delay1KTCYx(1); } } thay đổi nội dung bởi: namqn, 27-08-2008 lúc 06:40 PM. |
|
![]() |
![]() |
![]() |
#2 |
Đệ tử 3 túi
Tham gia ngày: Oct 2006
Bài gửi: 50
: |
Với chương trình cấu trúc như trên tôi chạy trên AT90PWM2 thì thấy chạy tốt , ra sine hoàn hảo. Còn trên PIC18F4431 thì có vấn đề gì đó trong update dutycycle làm cho độ rộng xung ra chỉ chạy được một chút rồi nó cố định duty cycle luôn không biết đổi nữa.
Có thể đây thể hiện sự yếu kém của 18F4431 chăng? |
![]() |
![]() |
![]() |
#3 | |
Trưởng lão PIC bang
|
Trích:
Có thể kết luận gì khi nhiều người làm thành công và một người không thành công? 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 |
|
![]() |
![]() |
![]() |
#4 | |
Đệ tử 3 túi
Tham gia ngày: Oct 2006
Bài gửi: 50
: |
Trích:
Tôi không thích cách gợi ý xỏ xiên của người được mệnh danh là bang chủ PIC, đây là cách lôi kéo người khác đến với PIC của picvietnam? |
|
![]() |
![]() |
![]() |
#5 | |
Đệ tử 4 túi
Tham gia ngày: Dec 2006
Bài gửi: 79
: |
Trích:
http://www2.hcmut.edu.vn/~nxbac/data/ tìm đến tài liệu có tên: QUANG_LVTN_hoanchinh.pdf |
|
![]() |
![]() |
![]() |
#6 | |
Đệ tử 3 túi
Tham gia ngày: Oct 2006
Bài gửi: 50
: |
Trích:
Hiện nay chỉ thấy có PIC và AVR là tạo deadtime tin cậy mà lại phổ biến . Tôi làm mạch thực tế và thấy thời gian update dutycycle của hai loại là khác nhau, với PIC4431 thời gian update 50us là chạy không ổn định lắm , sau một lúc sẽ đứng im không phát xung nữa. Một chút so sánh của tôi trong trường hợp tạo SPWM giữa hai loại: - PIC18F4431 có 4 kênh PWM , AT90PWM có 2 hoặc 3 bộ - Clock đầu vào cực đại PWM của PIC4431 là 10MHz (PLLx4) và của AT90 là 60MHz - Đều có tạo deadtime linh động Tôi thực sự rất muốn dùng PIC4431 trong trường hợp này, và tôi nghĩ rằng chương trình tôi viết cơ bản là đúng, có bác nào nhìn thấy sai sót mong các bác chỉ bảo trên cơ sở giúp đỡ thực sự .thanks |
|
![]() |
![]() |
![]() |
#7 | |
Trưởng lão PIC bang
|
Trích:
Chương trình bạn viết có những chỗ sai cơ bản, tôi thử nghiệm code sửa đổi xong sẽ post lên cho bạn xem. 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 |
|
![]() |
![]() |
![]() |
#8 | |
Đệ tử 2 túi
Tham gia ngày: Jan 2007
Bài gửi: 34
: |
Trích:
thay đổi nội dung bởi: cuongthinh, 25-02-2009 lúc 10:25 AM. |
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 2 túi
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
: |
![]() Bảng Sin được nêu trong bài này là làm thế nào mà có được vậy các bạn, ai biết ko chỉ giúp mình với, hay là chỉ cóp rồi sửa lại cái có sẵn. Ví dụ như ở trang 1, trong chuơng trình CCS có bảng sin 800 phần tử, vậy cách tìm ra chúng theo đúng yêu cầu, chẳng hạn với tuơng ứng tần số fx nào đó của sóng sin, thì thế nào? Mong các cao thủ chỉ giáo. Thanks. // ý mình là cách tìm ra các giá trị của bảng đó, 1 cách chính xác (vì nếu ko chính xác thì e...).
thay đổi nội dung bởi: truongqt, 21-04-2009 lúc 11:41 PM. |
![]() |
![]() |
![]() |
#10 | |
Trưởng lão PIC bang
|
Trích:
Nếu nhiều người đã làm thành công mà một người nào đó làm không thành công thì khả năng rất lớn là người không thành công đó làm chưa đúng, và khả năng rất nhỏ là chip được dùng có sự yếu kém về vấn đề đó. Tôi sẽ rất vô lý nếu tôi kết luận rằng một vi điều khiển nào đó là yếu kém, vì chương trình của tôi viết cho nó không chạy đúng ý đồ của tôi, trong khi nhiều người khác đã làm được việc đó. Nếu bạn thích làm việc với PIC, hoan nghênh bạn gia nhập PICVietnam, nếu bạn không thích làm việc với PIC, chúng tôi không hề ghét bạn. Về vấn đề của bạn, tôi không có sẵn PIC18F4431 để kiểm tra code mà tôi đã sửa lại (và tôi có thói quen chỉ post những code đã được thử nghiệm), do đó bạn hãy chờ một vài ngày để tôi tìm con PIC18F4431 và mạch thử nghiệm trong đống linh kiện lộn xộn của tôi. 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 |
|
![]() |
![]() |
![]() |
#11 | |
Nhập môn đệ tử
Tham gia ngày: Oct 2007
Bài gửi: 1
: |
Trích:
|
|
![]() |
![]() |
![]() |
|
|