• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts




Re: 請問I2C & UART 同時使用時的鮑率設定
資深會員
資深會員


了解
謝謝

我也想用87xA, 可是沒辦法ㄚ......
8x 的庫存還不少, 只好繼續用啦.

發表於: 2005/3/7 11:43
頂部


Re: About A/D sample frequency and resolution
資深會員
資深會員


采样频率 不是 Tad,Tad 是轉換一個 bit 所需的時間,
采样频率 是每秒鐘採樣的次數。

以下是用 CCS 公司的 C-compiler 寫的範例

// AD_DA.c --------------------------------------------------------------------
//
// Function:
//
// 1. 10-bit ADC, Sampling Frequency:  20 Hz, take sample every 50 msec
//                convert 0 ~ 5 volt into 0 ~ 1023
//
// 2. PWM DA at PIN_C2 using 19.53 kHz PWM with R-C low-pass, 1 kohm - 10 uF
//                convert 0 ~ 1023 into 0 ~ 100% duty PWM signal
//
// 3. RS232 printout at 115200 baud rate
//
#include <16F877.h>
#device  ADC=10            // select 10 bit AD, or, ADC=8 for 8 bit AD

#fuses   HS, NOLVP, PUT, NOWDT

#use delay(clock=20000000) // 20 MHz X'tal
#use rs232(baud=115200,xmit=PIN_C6,rcv=PIN_C7)

void main()
{
   
int16 ad_data;
   
   
printf("rnn PIC16F877 ADC and PWM_DAC test ... rn ");
   
   
setup_adc_portsAN0 );          // set PIN_RA0/AN0 as analog input
   
setup_adcADC_CLOCK_DIV_32 );   // Tad= 32*T_osc= 1.6 usec/bit at 20 MHz
                                    // Tconv= (10 bit + 2)* 1.6 = 19.2 usec

   
setup_ccp1CCP_PWM );           // configure CCP1 (RC2) as PWM1
   
setup_timer_2(T2_DIV_BY_1,255,1);// 19.53 kHz PWM with 20 MHz X'tal

   
while(1)
   {
      
set_adc_channel);   // select channel, S/H Cap. start charging
      
delay_us 60 );        // wait for S/H Cap. reach 1/2 LSB accuracy
      
ad_data read_adc();   // open S/H, start ADC, T_conversion ~ 20 us,

      
set_pwm1_duty(ad_data); // send AD data to PWM output at PIN_C2
                              // set_pwm1_duty(1023) will generate 100% duty
                              
      
printf("%lu ",ad_data); // print out data to TTL-RS232 at PIN_C6

      
delay_ms50 );         // delay loop, set sampling freq ~ 20 Hz
   
}
}

發表於: 2005/3/7 11:20
頂部


Re: About A/D sample frequency and resolution
版主
版主


1. 如果你要用C來編輯會比較簡單,PIC16F877A可以用 Hi-Tech PICC or CCS , PIC18Fxxxx則可以用MPLAB C18來編譯。 MPLAB C18 可以在"www.microchip.com"下載。

2. 16F877 及 18F452 的 ADC resoutions 是 10-bits, 最快轉換時間為19.2us ( 12Tad * 1.6uS), sampling time are 20uS
therefore the totally conversion time are 39.2uS (19.2uS+20uS。 如果要更快一點可考慮PIC18F4520 轉換速度為 10uS。

3. 有關固定取樣轉換的機制,是可以用Timer來驅動的。例如有一聲音需以 8KHz的頻率取樣,則可以設定Timer 每隔 125uS 來中斷並啟動AD轉換,這樣AD就會成為8KHz的轉換。

4. PIC 的硬體 PWM 輸出最高解析度為 10-bits , 最高輸出頻率為 19.5KHz,你只要在加入一個 RC low pass filter 就可以成為一個具有10-bits的 DAC.

5. 有關範例程式可參考右邊 "教育訓練" 裡的講義 W410 教材



發表於: 2005/3/7 10:00
頂部


Re: About A/D sample frequency and resolution
新會員
新會員


非常感谢
我想用C 编,感觉上Assemble会写很长且复杂
仍有一些困惑
1。怎样改变resolution? 8 or 10 or 4 bits? 不太懂
有没有比较现成的程序可参考
2。 采样频率。是Tad吗? 与外接时钟有何直接关系?
关于timer interrupt or simply delay loop
可否请您再详细解释? 有没有比较现成的程序可参考
因为我新手一个,对于编程很触,自学了好久也没有入门的感觉
还望高手赐教。

發表於: 2005/3/7 0:56
頂部


Re: PIC16F877 遇到問題-4 - A/D
管理員
管理員


Hi,

PICmicro 的一些參數規範必須遵守 , 以便讓各模組正常工作.
以 PIC17F877 的 A/D 為例 , 在 Data Sheet 的 Table 15-2
有下列重要的訊息:

Vref+ 的最小值要 AVDD - 2.5V
Vref+ 與 Vref- 的最小壓差 = 2.0 V

我想這是為何轉換結果怪異的原因之一 ! 另外要調整 Sample Frequency 轉換時間的方法如下 :

1. 調整 ADCON0 的 Bit6 & Bit7 ( ADCS0 & ADCS1 ) 就可調
整 TAD , 如此可控制轉換時間 ( 10 bit 解析度需 12 個
TAD ) . 但要注意 TAD 不可小於 1.6 uS.

2. 當轉換完成時取樣保持電路自動會 "ON" , 一直到設定了
ADCON0.GO 開始轉換時才停止取樣 ; 所以取樣多久通常靠
自己的程式控制啦 ! 但要注意 , 切換 Channel 後的取樣時間
要夠才不會有串音 ( Cross-Talk ) 的怪現象喔 :)

希望您盡快成功

發表於: 2005/3/6 23:42
頂部


Re: 請問I2C & UART 同時使用時的鮑率設定
管理員
管理員


Hi,

SPBRG 是完全獨立於其他週邊的 . 只有 USART 用到它而已啦 ! USART 的 Baud Rate = FOSC/(64(SPBRG+1)) or
FOSC/(16(SPBRG+1)). 要看你的 SPBRG = 0 or 1

至於 I2C , 若是用 H/W 的 Master 功能 , SCL 的頻率應
是 FOSC / (4*(SSPADD + 1)) . 所以兩者不互相影響啦 .

祝您程式發展順利 ! 還有 , 盡量使用 PIC16F877A !


發表於: 2005/3/6 23:24
頂部


Re: 請教Definitions from P16F877.INC
管理員
管理員


您好,

請問是用組合語言或是 C ? 若是 C 的話 , 是哪一家呢 ?
很抱歉我們無法由您的描述中很精確的了解問題. 希望能有進一步的補充說明 , 以便彼此互相交流 !

Thank You Very Much :)

發表於: 2005/3/6 23:12
頂部


pic16f877 A/D问题集
新會員
新會員


要做一个教学实验板 论证采样和量化的过程
想用pic16f877

输入正弦波(方波和三角波) 频率不用很大
做一个8bit A/D和 D/A的硬件接口
要求学生可以拿采样频率和量化比特作实验
分别显示数字输出和模拟输出,并研究bit rate

我的思路是‘拿采样频率和量化resolution‘就是改变这两个参数
请教:1。采样频率如何设定?是Tad吗?还是系统转换速率?
能否改变采样频率?可否设定不同的通道不同的
采样频率?
2。输入正弦波(方波和三角波)数字输出用什莫观察?
3。模拟输出如果想听声音,应接什莫?怎样接?
改变采样频率 声音会有明显变化吗?
如是接示波器,波形会有明显变化吗?
4。bit rate是什莫?能够观察吗?
5。 如果给定一个A/D转换器,量化比特能改变吗?
不知pic16f877可否实现? 或有其他更适合的片子?
或直接连一个A/D和一个D/A转换器能否实现?
想用c编,程序的框架大体如何?


敬请各位大虾赐教,集思广益。感激不尽!!

發表於: 2005/3/6 20:44
頂部


請問I2C & UART 同時使用時的鮑率設定
資深會員
資深會員


使用PIC16F87X, I2C和UART的BAUD RATE的設定, 基本上好像都是使用BRG timer來 down count比較.

這樣的話設定SPBRG的值是不是也同樣會改變了I2C的BAUD RATE? 相對的,改變SSPADD的值是否也會使UART的BAUD RATE被改變?

兩者的BAUD RATE 是否相關或是完全無關??

發表於: 2005/3/6 18:42
頂部


Re: 程式中如何將watchdog關掉
高級會員
高級會員


1. PIC16F876 can not disable watchdog using a command code.
2. 請參考第二篇回應 Ryang 也有提到 PIC16F87X 系列無法於程式中 disable watchdog.

發表於: 2005/3/5 15:47
IWC
IWC
JL
Rolex


PP
有點距離
越來越遠
頂部



« 1 ... 7218 7219 7220 (7221) 7222 7223 7224 ... 7523 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------