PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 27-03-2011, 12:45 PM   #1
nothing101
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 6
:
Smile Trao đổi lập trình đồ án điều khiển động cơ DC dùng pic16f877a giải thuật PID số

Các bạn cho mình hỏi mình định dùng timer 0 ở chế độ counter để đếm xung encoder đưa về, timer 1 để tạo khoảng thời gian 10ms là tính tốc độ một lần như thế này có được không.Sau khi tính tốc độ mình muốn truyền lên máy tính nhưng chưa biết làm như thế nào và hiển thị tốc độ tức thời lên LCD khi có yêu cầu từ nút nhấn.Các bạn xem giúp mình tính toán có đúng không với.Mình mới lập trình được cho 2 cái timer thôi.Biến so_xung_encoder là mình đưa vào do chưa mua động cơ không biết encoder đếm được bao nhiêu xung trên một vòng
Code:
#include "def_877a.h"
#use delay(clock=20000000)
int16 count,so_vong_phut,int_count1;
int8 So_xung_Encoder
#define INTS_PER_SECOND1 2
#int_rtcc  // Ngat Timer 0
void Timer0_isr() // Dem so xung tu encoder
{
   count++;
}

#INT_TIMER1  // Chuong trinh ngat Timer 1
void Timer1_isr() {   // Ham duoc goi khi Timer1 tran (65536->60536)
                               // 2 lan tran moi tinh toc do mot lan
     // thoi gian tran la  4*(prescaler=1)*(65536-60536)*(count=2)/4/10^6=10ms
    if(--int_count1==0)
    {
      int_count1 = INTS_PER_SECOND1;
      so_vong_phut= (count*255 + get_timer0())/Soxung_Encoder*60/(10*10^-3);
      count = 0;
      set_timer0(0);
    }
                             }

void init()
{ 
int_count1 = INTS_PER_SECOND1;
setup_timer_0 (RTCC_DIV_256|RTCC_EXT_H_TO_L); 
// Timer0 is Counter co thoi gian tran la  255*256/20/10^6=13.1ms>10ms
set_timer0(0);// timer 1 dem tu 0
set_timer1(60536);// Timer 1 dem tu 60536
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); // Timer1 is Timer
enable_interrupts(INT_RTCC);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
count = 0;
}
Hình Kèm Theo
File Type: gif Noname.gif (19.2 KB, 22 lần tải)

thay đổi nội dung bởi: nothing101, 29-03-2011 lúc 01:08 AM.
nothing101 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bà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à 07:27 PM.


Đượ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