Nguyên văn bởi youaremylife
Xem bài viết
Thông báo
Collapse
No announcement yet.
PIC đo tần số: Lý do sai số 2.4%.
Collapse
X
-
Chuẩn ! nếu bạn sai 1 chu kỳ máy ... khi dùng bộ chia 128 ... nó sẽ sai thành 128 chu kỳ !Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
-
Đó cũng là theo datasheet hoặc tài liệu nào đó thôi. 200MHz cũng có thể do con PIC đó bị "khìn" nhưng đó là kết quả thực nghiệm ( chưa test với con khác) được xác định là đúng vì so sánh với kết quả của máy đo tần cho nên không tin cũng không đượcNguyên văn bởi queduong Xem bài viếtnếu pic mà chịu được 200mhz thì đã giàu to rồi ! ( còn theo thuyết mà đếm direct counter ... thì lên đến cả nghìn MHZ )
nếu pic mà đếm direct được 200mhz thì :
- NEC chết vì không tiêu thụ được prescaler
- philips chết vì không bán được PLL
- Analog device móm vì không bán được DDS nữa
mình có đọc đâu đó giới hạn độ chính xác tầm <60Mhz ... PIC AXE lên đến 70MHz đã là khủng khiếp lắm rồi.
Comment
-
tất cả mọi người đang nói là đo trực tiếp ( tức là chỉ dùng PIC thôi - không thêm linh kiện nữa) thì giới hạn là 50 mhz - bạn nói là đo được 200 mhz thì bạn thuộc loại THÁNH rồi -> bạn bị ném gạchNguyên văn bởi duong_act Xem bài viếtCũng chưa chắc đâu bác. Em đo nó hiển thị 220MHz trên LCD. Cứ nghĩ là số ảo nhưng vác máy đo tần ra đo thì nó cũng hiện 215MHz.
nếu bạn vẫn khẵng định thì cứ biểu diễn thử coi - đừng nói là cái máy hiện sóng 215 MHz cũng của bạn làm luôn thì sai + sai = đúng đóĐang thất nghiệp 0988-010-486
Comment
-
Tớ nghe đồn là PIC sẽ ứng xử như nhau trong những tình huống như nhau.
Ví dụ:
Phải thực hiện các lệnh sau và cài đặt cho phép ngắt CCP1 trước khi có thể sử dụng hàm ngắtCode://Định nghĩa biến toàn cục dùng cho việc đếm tần int16 Count0; int16 Time; #define ccp_int_cycle 50000 //50ms //Hàm xử lý ngắt CCP1, chu kỳ ngắt cố định và được cài đặt trước qua ccp_int_cycle #int_CCP1 void isrCCP1() { int16 Count; Count=read_counter(); Time++; if(Time>=1000000/ccp1_int_cycle) //ccp1_int_cycle là chu kỳ ngắt CCP1, 1000000 là clock vào Timer { Freq=Count-Count0; //kết xuất tần số Count0=Count; //reset bộ đếm xung vào Time=0; //reset bộ đếm thời gian } }
Code:setup_timer_1(T1_internal|T1_div_by_8); //to set 1MHz clock-in setup_ccp1(CCP_Compare_reset_timer); //CCP mode and reset Timer on match CCPR1=ccp_int_cycle; //defined above Time=-1; //lần ngắt CCP1 đầu tiên sẽ coi như đếm xong, xuất kết quả sai và reset biến cho lần đếm tiếp
Sự trễ của quá trình vào ra ngắt tự bù nhau nên coi như không ảnh hưởng.
Ngắt CCP1 (đếm thời gian) nên là ngắt duy nhất được cho phép hoặc là ngắt ưu tiên cao.
Comment
-
bạn cho biết đó là dòng pic nào không ? mình mua về thay thế làm luôn mạch cao tần đỡ phải mua mấy con PLLNguyên văn bởi duong_act Xem bài viếtĐó cũng là theo datasheet hoặc tài liệu nào đó thôi. 200MHz cũng có thể do con PIC đó bị "khìn" nhưng đó là kết quả thực nghiệm ( chưa test với con khác) được xác định là đúng vì so sánh với kết quả của máy đo tần cho nên không tin cũng không được
... mình chỉ làm được đến hơn 50mhz tí tẹo là đã vớ vỉn rồi !
chắc trình viết code kém quá hay do pic dỏm mà không thể lên được nữa
Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
bác nghĩ 16mhz thì 1 cycle lệnh mất 0,25us trong khi tần số cần đo là 1khz = 1000usNguyên văn bởi vietthanh123 Xem bài viếtuhm. Nhưng mình dùng thạch anh 16Mhz nên thời gian thực hiện các lệnh là rất nhanh(so với tần số mình cần đo là 1Khz). Việc bố trí dòng lệnh thì mình cũng đã cố gắng sao cho hợp lý nhất rồi (theo mình). MÌnh cũng dùng C nhưng nếu viết trên KeilC cho 8051 thì sai số chỉ nhỏ hơn 1% mà thôi.MOng bạn và mọi người cho thêm ý kiến.
như vậy 0,25 << 1000 vì vậy cách viết của bác như thế đã ổn rồi hả. Bác phải biết rằng tuy 0,25us là nhỏ nhưng thời gian của cái sai nhỏ đó là bao lâu.
cái tạo trễ 1s của bác như thế chỉ đúng khi timer0 nó chạy liên tục tức là không mất 1 cycle nào khác để đặt lại cho nó. Còn thực tế ở đây bác tính cho timer lý tưởng nhưng thực tế lại không phải như thế.
Khi timer0 tràn thì sẽ xảy ra ngắt lúc này bác thực hiện các hàm xử lý rồi đặt lại giá trị cho timer0, vậy bác có tính đến cái thời gian trế này không.
em ví dụ một cái đơn giản thế này
void interrupt_timer0() // Da du 500us
{
// 1 cycle vào ngắt
// lưu cách thanh ghi SFR
count=count+1; // mất 2 cycle
set_timer0(6); // mất 1 cycle
}
// tổng cộng mất đi 4 cycles lệnh 4x0,25 = 1us chả có vấn đề gì
nhưng thực tế là có đến 2000 lần sai như thế
kết quả là 1x2000 = 2000us
thời gian đếm xung thực tế là 1002ms.
chính xác là nó còn lớn hơn nữa nhé bác cái đó là em ví dụ thôi.
Comment
-
PIC18F4431 (PDIP 40) đó bác. Lấy trong đống mạch Robot cũ ra. Thạch anh dùng 20MHz, đếm bằng timer 1.Nguyên văn bởi queduong Xem bài viếtbạn cho biết đó là dòng pic nào không ? mình mua về thay thế làm luôn mạch cao tần đỡ phải mua mấy con PLL
... mình chỉ làm được đến hơn 50mhz tí tẹo là đã vớ vỉn rồi !
chắc trình viết code kém quá hay do pic dỏm mà không thể lên được nữa 
Comment
-
TABLE 28-13:TIMER0 AND TIMER1 EXTERNAL CLOCK REQUIREMENTSNguyên văn bởi duong_act Xem bài viếtPIC18F4431 (PDIP 40) đó bác. Lấy trong đống mạch Robot cũ ra. Thạch anh dùng 20MHz, đếm bằng timer 1.
47 Tt1P T13CKI Input Period
Synchronous : Greater of: 20ns or (T + 40)/N N = prescale value (1, 2, 4, 8)
Asynchronous: Min 60ns
tính ra thì đầu vào tối đa cũng chỉ 64Mhz thôi, bác đo đếm 200Mhz hệ số an toàn của nó = 3 lần
Chắc tần số làm việc của chip có thể hơn 40mhz đó mấy bác thử giúp em cái.
Comment
-
Tiếp đi bác, đó là nguyên nhân, vậy còn cách khắc phục (hạn chế tối đa sai số )?. Nghe bác nói em vỡ ra khá nhiều điều, mọi khi cứ sồn sồn làm đúng theo nguyên lý thôi, chưa quan tâm nhiều tới mấy cái này. Sai số ầm ầm là phải. hi.Nguyên văn bởi youaremylife Xem bài viếtbác nghĩ 16mhz thì 1 cycle lệnh mất 0,25us trong khi tần số cần đo là 1khz = 1000us
như vậy 0,25 << 1000 vì vậy cách viết của bác như thế đã ổn rồi hả. Bác phải biết rằng tuy 0,25us là nhỏ nhưng thời gian của cái sai nhỏ đó là bao lâu.
cái tạo trễ 1s của bác như thế chỉ đúng khi timer0 nó chạy liên tục tức là không mất 1 cycle nào khác để đặt lại cho nó. Còn thực tế ở đây bác tính cho timer lý tưởng nhưng thực tế lại không phải như thế.
Khi timer0 tràn thì sẽ xảy ra ngắt lúc này bác thực hiện các hàm xử lý rồi đặt lại giá trị cho timer0, vậy bác có tính đến cái thời gian trế này không.
em ví dụ một cái đơn giản thế này
void interrupt_timer0() // Da du 500us
{
// 1 cycle vào ngắt
// lưu cách thanh ghi SFR
count=count+1; // mất 2 cycle
set_timer0(6); // mất 1 cycle
}
// tổng cộng mất đi 4 cycles lệnh 4x0,25 = 1us chả có vấn đề gì
nhưng thực tế là có đến 2000 lần sai như thế
kết quả là 1x2000 = 2000us
thời gian đếm xung thực tế là 1002ms.
chính xác là nó còn lớn hơn nữa nhé bác cái đó là em ví dụ thôi.Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
http://diencongnghiep360.com/
http://tudienhathe.vn/
Comment
-
chắc lại đếm kiểu 16 bit counter 1 như cái project gì đó trên mạng .. thì vứt *** nó đi .Nguyên văn bởi duong_act Xem bài viếtPIC18F4431 (PDIP 40) đó bác. Lấy trong đống mạch Robot cũ ra. Thạch anh dùng 20MHz, đếm bằng timer 1.
... không muốn nói thêm nữa !
nhưng mà 200Mhz thì đúng là mình cũng chịu thật ... mình làm mãi chỉ dưới 60Mhz là ngon thôi !
mấy con của analog device cũng chỉ 100mhz ... dùng chia 10 để làm những máy đo 1GHz , .... những con của Maxim làm máy đo tần số cũng phổ biến cũng ở 250Mhz
( biết con máy đo 250Mhz nó mấy tiền hem ???
)
Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
32 bít bác ạNguyên văn bởi queduong Xem bài viếtchắc lại đếm kiểu 16 bit counter 1 như cái project gì đó trên mạng .. thì vứt *** nó đi .
... không muốn nói thêm nữa !
nhưng mà 200Mhz thì đúng là mình cũng chịu thật ... mình làm mãi chỉ dưới 60Mhz là ngon thôi !
mấy con của analog device cũng chỉ 100mhz ... dùng chia 10 để làm những máy đo 1GHz , .... những con của Maxim làm máy đo tần số cũng phổ biến cũng ở 250Mhz
( biết con máy đo 250Mhz nó mấy tiền hem ???
)
. Dĩ nhiên dùng timer 16 bit nhưng có sử dụng ngắt timer để tính thêm lần tràn và giá trị lưu lại là 32 bit.
Còn sao nó đếm dc 200MHz thì mềnh chịu ko giải thích. Nó hiện vậy thì báo cáo với các bác vậy thôi
Comment
-
Ối dời ôi bác này lập trình PIC gì mà đo được 200Mhz...amator quá. nếu vậy thì cái máy đo siêu cao tần chỉ có 100$ thôi nhỉ, rẻ thế thì mất uy tín quá...Nguyên văn bởi duong_act Xem bài viếtCũng chưa chắc đâu bác. Em đo nó hiển thị 220MHz trên LCD. Cứ nghĩ là số ảo nhưng vác máy đo tần ra đo thì nó cũng hiện 215MHz. Còn sai số là đương nhiên vì dùng thêm cả ngắt timer.ĐT : 01676455880
Comment
-
Tôi đâu có lập trình để đo 200 MHz ?Nguyên văn bởi quanghuy_125 Xem bài viếtỐi dời ôi bác này lập trình PIC gì mà đo được 200Mhz...amator quá. nếu vậy thì cái máy đo siêu cao tần chỉ có 100$ thôi nhỉ, rẻ thế thì mất uy tín quá...
Comment
Bài viết mới nhất
Collapse
-
bởi theidiotcatViệc lựa chọn một chiếc laptop gaming phù hợp với nhu cầu, ngân sách chưa bao giờ là dễ dàng. Và điều đó càng khó hơn trong năm 2026 khi mà mức giá liên tục tăng.
Nếu bạn chưa biết nên chọn một chiếc laptop gaming như thế nào...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:29 -
-
bởi theidiotcatVới mức ngân sách 20 - 30 triệu đồng trong năm 2026, các bạn sinh viên và dân văn phòng có thể tìm thấy nhiều lựa chọn cao cấp, mạnh mẽ, pin “trâu”, đặc biệt là các mẫu laptop AI hỗ trợ cho học tập và làm việc.
Trong phân...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:25 -
-
bởi theidiotcatDưới đây là một số mẫu laptop nổi bật trong phân khúc dưới 20 triệu giúp các bạn văn phòng, sinh viên và đặc biệt là tân sinh viên có thể dễ dàng lựa chọn được mẫu laptop phù hợp với nhu cầu và ngân sách của mình.
Thị...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:07 -
-
bởi theidiotcatViệc chọn mua một bộ máy tính phục vụ cho các nhu cầu làm việc văn phòng và sử dụng cơ bản hàng ngày đang trở nên dễ dàng và tiết kiệm hơn bao giờ hết. Thay vì phải đau đầu trích ngân sách để mua cả vi xử lý lẫn card đồ họa rời...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:23 -
-
bởi theidiotcatViệc nâng cấp từ một dàn máy tính cũ lên cấu hình mới luôn khiến nhiều người đắn đo về mức chi phí bỏ ra. Nếu bạn đang tìm kiếm một sự lột xác hoàn toàn về hiệu năng mà vẫn cân đối được dòng tiền, combo giữa vi xử lý Ryzen...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:06 -
-
Trả lời cho Lực dọc trục làm hỏng ổ bi.bởi nguyendinhvanVí dụ một trang như thế này
...-
Channel: Điện tử công suất
24-06-2026, 19:57 -
-
Trả lời cho Lực dọc trục làm hỏng ổ bi.bởi nguyendinhvanỔ bi có loại chịu lực dọc, loại chịu lực ngang.
Bạn kiếm một quyển Data cũng một hãng vòng bi nào đó. Họ sẽ cấp cho bạn đủ thông số kỹ thuật.
Khi lựa chọn được mã sản phẩm, bạn chỉ việc tìm mua mã đó, hoặc đặt hàng....-
Channel: Điện tử công suất
24-06-2026, 19:52 -
-
bởi GargiChào mọi người, tôi đang gặp một vấn đề kỹ thuật và muốn được nghe ý kiến của mọi người.
Tôi đã lắp một đĩa xích vào trục đầu ra của hộp số hành tinh bánh răng xoắn dùng cho truyền động xích. Sau vài tháng hoạt động, ổ bi đầu ra bị hỏng.
Bản thân...-
Channel: Điện tử công suất
24-06-2026, 13:22 -
-
bởi vi van phamSau hàng chục năm, không biết có ai còn nghĩ gì về tôi? Riêng tôi, nhớ nhiều về dientuviet nam. net. Ngày ấy tìm 1 người bạn đam mê về điện từ khó như trúng số độc đăc. Tôi đã trúng số độc đắc khi được mời về dientuvietnam.net...
-
Channel: Tâm tình dân kỹ thuật
23-06-2026, 22:43 -
-
bởi FotiniChào mọi người.
Cấu trúc khung giàn của tôi sử dụng một động cơ servo tích hợp trên mỗi trục (https://www.oyostepper.es/category-8...integrado.html), với một dây nối đất chung.
Việc kích hoạt từng trục riêng lẻ hoạt động tốt, nhưng...-
Channel: Điện tử dành cho người mới bắt đầu
18-06-2026, 14:03 -
. Mày mang đo thử tao 1hz coi sao mày?


Comment