PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Thắc mắc về xung clock ngoài của TIMER1 (http://www.picvietnam.com/forum/showthread.php?t=33942)

nhanh0112 01-12-2014 11:13 AM

Thắc mắc về xung clock ngoài của TIMER1
 
Trong hầu hết các PIC, timer1 đều có 2 mode chọn nguồn xung clock (bit 1). Trong đó mode chọn xung nội (internal) thì cũng như các timer khác rồi. Còn mode chọn nguồn xung ngoài (external) thì có 2 chế độ nhỏ:
0 = Synchronize external clock input
1 = Do not synchronize external clock input
Qua đọc và hiểu nôm na là đồng bộ/ bất đồng bộ với nguồn xung clock ngoài. Nhưng đồng bộ/ bất đồng bộ với cái gì và như thế nào thì... không hiểu.

Bác nào đã nghiên cứu hay làm và rõ về tính năng này có thể giải thích giúp rõ hơn được không. Cảm ơn các bác trước!

berom 02-12-2014 10:50 PM

timer cũng đang rối đây có ai giúp đỡ không
 
1 Attachment(s)
co ai cứu vớik hông?
đang cần băm xung như thến nayf mà chưa làm ra
ai có cao kiếng giúp với
đang định dùng 2 bộ timer mà chưa thành công
timer0 ngắt sau 500ms
vào ngắt sẽ set timer1 băm xung nhỏ ra
khi timer0 ngắt tiếp sẽ set timer1=0 ai có cao kiến gì giúp với đang gấp

nhanh0112 03-12-2014 10:23 AM

Đầu bài của bạn ko rõ ràng, nếu như bạn nói thì 2 timer sử dụng clock nội rồi. Cấu hình timer0 với chu kỳ ngắt 500ms. Cấu hình timer1 với chu kỳ ngắt nhỏ hơn. viết đại loại sẽ là (CCS):
Code:

#INT_TIMER0
void isr0()
{
static int1 togle;
if(toggle)
  {
  toggle=0;
  disable_interrupt(INT_TIMER1)
  //read timer1
  }
else
  {
  togle=1;
  enasable_interrupt(INT_TIMER1)
  set_timer1(0);
  }
}
#INT_TIMER1
void isr1()
{
output_toggle(PIN_X);
}

Trường hợp bạn muốn dùng clock ngoài cho timer 1 thì cấu hình lại cho timer1 là đc.

minhsmile 14-12-2014 05:28 PM

Các bác cho em hỏi chút. Em dùng timer0 của pic 16f676 tạo xung 125khz tại chân C0 mà chưa được. không biết em tính toán có sai gì không. Mong các bác giúp em với. Đây là code của em:

#include <16F676.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOCPD //No EE protection
#FUSES PUT //Power Up Timer
#FUSES BANDGAP_HIGH
#FUSES RESERVED //Used to set the reserved FUSE bits
#use delay(clock=20000000)

#int_TIMER0
void TIMER0_isr(void)
{
output_toggle(PIN_C0);
setup_timer_0(236);

}

void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
setup_timer_0(236);
set_tris_c(0x00);

while(true){

}

}

nhanh0112 25-12-2014 05:18 PM

Trích:

Nguyên văn bởi minhsmile (Post 85124)
Các bác cho em hỏi chút. Em dùng timer0 của pic 16f676 tạo xung 125khz tại chân C0 mà chưa được. không biết em tính toán có sai gì không. Mong các bác giúp em với.

Bạn không thể dùng ngắt của timer để tạo xung tần số cao được, mà phải dùng pwm cứng của chip để tạo. Bạn tham khảo luồng sau.
http://www.picvietnam.com/forum/showthread.php?t=4015


Múi giờ GMT. Hiện tại là 04:07 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam