會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)



« 1 2 3 (4) 5 6 7 ... 6990 »


Re: PIC18F4520 ADC問題
新會員
註冊日期:
2月06日 19:34:11
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 1 / 1
離線
引用:

Ryang 寫道:
我想這除錯要分兩階段來看:

1. ADC 轉換是否有到全範圍。ADC 輸入 Ov ~ 5V 時,底下的 adc0_dec 的轉換值是否有從 0x0000 ~ 0x03FF 呢?

ConvertADC(); // Start an A/D Conversion
while(BusyADC()); // Wait for Conversion Finished
adc0_dec=ReadADC(); // Read A/D Result

2. 轉換用浮點數運算? 這對 8-bit MCU 是件很耗損的事。建議使用 itoa( ) 函數做 Hex to Decimal to ASCII 的轉換 (0 ~ 1023)

3. 一個轉換bit值對應到電壓值為 4.88mV。所以將直放達 100 倍來做整數運算即可。如果轉換電壓為 1V :

(1V /5V) x 1024 = 205
205 x 488 = 100040 = 1000.40mV

所以以整數方式算出來的電壓值記住小數點的位置即可。


我想在第一點發生了問題,ADC輸入0~5V時,adc0_dec的轉換值只有0x0000和0x0040兩個數值,中間數值並沒有顯示
想請問這個問題該怎麼處裡呢?

2月07日 13:09:17
轉換PDF檔 列印


Re: PIC18F4520 ADC問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14224
等級: 72; EXP: 62
HP : 1074 / 1790
MP : 4741 / 72317
離線
我想這除錯要分兩階段來看:

1. ADC 轉換是否有到全範圍。ADC 輸入 Ov ~ 5V 時,底下的 adc0_dec 的轉換值是否有從 0x0000 ~ 0x03FF 呢?

ConvertADC(); // Start an A/D Conversion
while(BusyADC()); // Wait for Conversion Finished
adc0_dec=ReadADC(); // Read A/D Result

2. 轉換用浮點數運算? 這對 8-bit MCU 是件很耗損的事。建議使用 itoa( ) 函數做 Hex to Decimal to ASCII 的轉換 (0 ~ 1023)

3. 一個轉換bit值對應到電壓值為 4.88mV。所以將直放達 100 倍來做整數運算即可。如果轉換電壓為 1V :

(1V /5V) x 1024 = 205
205 x 488 = 100040 = 1000.40mV

所以以整數方式算出來的電壓值記住小數點的位置即可。

2月07日 12:39:40
轉換PDF檔 列印


Re: PIC18F4520 ADC問題
新會員
註冊日期:
2月06日 19:34:11
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 1 / 1
離線
AN0是打一個0~5V的方波
adc0_dec顯示分別為0和64

2月07日 12:26:57
轉換PDF檔 列印


Re: PIC18F4520 ADC問題
資深會員
註冊日期:
2010/07/12 16:45
來自 台灣的某一個角落
所屬群組:
註冊會員
文章: 255
等級: 14; EXP: 93
HP : 0 / 348
MP : 85 / 7760
離線
引用:

ssnow1314 寫道:
你好,各位大大,小弟目前使用PIC18F4520,最近在研究ADC轉換,想將input的電壓顯示在LCD上,輸入腳位為RA0,解析度算出5/1023=0.00488,在input為5V時應顯示D=1023,但顯示出的數值卻是64,想請問一下各位大大,這是為什麼,及如何解決這問題,
謝謝。

以下是我的程式:

#include "p18f4520.h"
#include "delays.h"
#include "evm_lcd.h"
#include "adc.h"
#include <stdlib.h>
#include <stdio.h>
#pragma config OSC=HS,BOREN=OFF,BORV=2,PWRT=ON,WDT=OFF,LVP=OFF
#define OSC_CLOCK 10

void main()
{
char LCD_name[] = "Chicken Test 123";
float adc0_volt;
int adc0_dec;
int adc0_volt1;
int adc0_volt2;
char Buf[16];


TRISA = 0b00000001; // Setup RA0=Input RA1=Output


// Initialise LCD
OpenLCD();
WriteCmdLCD(0*01);
LCD_Set_Cursor(0,0);
putsLCD(LCD_name);
Delay10KTCYx(21);


OpenADC(
ADC_FOSC_16 & // A/D clock source set to 32Tosc
ADC_LEFT_JUST & // ADRESH:ADRESL from roght
ADC_20_TAD, // A/D Acquisition time: 20TAD
ADC_CH0 & // Analog Channel0 AN0
ADC_INT_OFF & // ADC Interrupt off
ADC_VREFPLUS_VDD & // Vref+ = VDD
ADC_VREFMINUS_VSS, // Vref- = VSS
0b1110 //ADCON1 AN0=Analog
);

while(1)
{
ConvertADC(); // Start an A/D Conversion
while(BusyADC()); // Wait for Conversion Finished
adc0_dec=ReadADC(); // Read A/D Result

// Convert Floating Point to Decimal
adc0_volt=0.0048875855327468*adc0_dec;
adc0_volt1=(unsigned int)adc0_volt;
adc0_volt2=(unsigned int)((adc0_volt-adc0_volt1)*10);

sprintf(Buf,"D=%4u V=%u.%uV",adc0_dec,adc0_volt1,adc0_volt2);
WriteCmdLCD(0*01);
LCD_Set_Cursor(1,0);
putsLCD(Buf);


Delay10KTCYx(125);

} // End While
}


請問你adc0_dec=ReadADC(); adc0_dec的值是多少?
拿電表量量AN0腳位的電是多少V?

2月07日 12:06:55
轉換PDF檔 列印


PIC18F4520 ADC問題
新會員
註冊日期:
2月06日 19:34:11
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 1 / 1
離線
你好,各位大大,小弟目前使用PIC18F4520,最近在研究ADC轉換,想將input的電壓顯示在LCD上,輸入腳位為RA0,解析度算出5/1023=0.00488,在input為5V時應顯示D=1023,但顯示出的數值卻是64,想請問一下各位大大,這是為什麼,及如何解決這問題,
謝謝。

以下是我的程式:

#include "p18f4520.h"
#include "delays.h"
#include "evm_lcd.h"
#include "adc.h"
#include <stdlib.h>
#include <stdio.h>
#pragma config OSC=HS,BOREN=OFF,BORV=2,PWRT=ON,WDT=OFF,LVP=OFF
#define OSC_CLOCK 10

void main()
{
char LCD_name[] = "Chicken Test 123";
float adc0_volt;
int adc0_dec;
int adc0_volt1;
int adc0_volt2;
char Buf[16];


TRISA = 0b00000001; // Setup RA0=Input RA1=Output


// Initialise LCD
OpenLCD();
WriteCmdLCD(0*01);
LCD_Set_Cursor(0,0);
putsLCD(LCD_name);
Delay10KTCYx(21);


OpenADC(
ADC_FOSC_16 & // A/D clock source set to 32Tosc
ADC_LEFT_JUST & // ADRESH:ADRESL from roght
ADC_20_TAD, // A/D Acquisition time: 20TAD
ADC_CH0 & // Analog Channel0 AN0
ADC_INT_OFF & // ADC Interrupt off
ADC_VREFPLUS_VDD & // Vref+ = VDD
ADC_VREFMINUS_VSS, // Vref- = VSS
0b1110 //ADCON1 AN0=Analog
);

while(1)
{
ConvertADC(); // Start an A/D Conversion
while(BusyADC()); // Wait for Conversion Finished
adc0_dec=ReadADC(); // Read A/D Result

// Convert Floating Point to Decimal
adc0_volt=0.0048875855327468*adc0_dec;
adc0_volt1=(unsigned int)adc0_volt;
adc0_volt2=(unsigned int)((adc0_volt-adc0_volt1)*10);

sprintf(Buf,"D=%4u V=%u.%uV",adc0_dec,adc0_volt1,adc0_volt2);
WriteCmdLCD(0*01);
LCD_Set_Cursor(1,0);
putsLCD(Buf);


Delay10KTCYx(125);

} // End While
}

2月07日 11:22:45
轉換PDF檔 列印


dsPIC33EP512 Bootload 問題
新會員
註冊日期:
2月05日 23:34:43
所屬群組:
註冊會員
文章: 1
等級: 1; EXP: 0
HP : 0 / 0
MP : 0 / 0
離線
我剛接觸microchip,最近要做bootload 看到網路上有些做法 有些疑問?
1. boot code / main code 是分開編輯的 要如何把兩隻程式整合?
2. 我看到有人把main code 寫在記憶體前面的區塊 boot code寫在結尾的區塊 有辦法開機先跳到boot code 嗎?這種做法的風險會比較大嗎??
http://blog.xueming.org/archives/tag/dspic33e

2月06日 22:11:00
轉換PDF檔 列印


Re: PIC48F47K40 指標取值問題
新會員
註冊日期:
2009/12/18 23:53
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 2 / 281
離線
你好 圖片中是我測試3個不同零件的結果
18f2320 結果是正確的 18f27k40 18f47k40 解果都是錯誤的

使用 DEGUB 看Watches Data1 Data2 Data3 的值
18f2320 執行完(第一張圖)
data1=0X46
data2=0XC2
data3=0X7F 正確

但18f27k40 18f47k40 執行完(第2.3張圖)
data1=0X00
data2=0X00
data3=0X00 錯誤

有使用過18f27k40跑模擬軟體 跑出來是正確的值

想請問是不是 18f27k40 18f47k40 在使用 table read 功能時要先設定甚麼嗎?
不然 一模一樣的 程式18f2320 可以 ,18f27k40 18f47k40卻不行?
有人有用過 18f27k40 18f47k40 嗎 都沒有遇到這些問題嗎?
拜託各位高手給我解答

附加檔案:



jpg  2320.jpg (686.07 KB)
6412_5a7982df09a9d.jpg 2560X1440 px

jpg  27k40.jpg (730.49 KB)
6412_5a7982e65360b.jpg 2560X1440 px

jpg  47k40.jpg (679.04 KB)
6412_5a7982ec482bd.jpg 2560X1440 px

2月06日 18:32:33

benson7404 於 2018年02月06日 18:49:56
轉換PDF檔 列印


Re: PIC16F1783 AN0 RESET
新會員
註冊日期:
2014/12/02 09:43
所屬群組:
註冊會員
文章: 2
等級: 1; EXP: 2
HP : 0 / 0
MP : 0 / 6
離線
ADC類比輸入模式
把腳位改成AN2 其他設定都不變也沒有這個現象

2月06日 17:27:52
轉換PDF檔 列印


Re: 請問Curiosity PIC32MZEF與MCP6V01RD-TCPL兩開發板供電量及 I2C問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14224
等級: 72; EXP: 62
HP : 1074 / 1790
MP : 4741 / 72317
離線
4. 請問以下五組, I2C全部規劃成 Slave mode, 或從 Slave 轉成Master mode, 傳完再轉回 Slave mode嗎?
MCP6V01RD-TCPL 2組每0.1秒量測傳送數據,
MCP6V01RD-TCPL 1組每0.25秒量測傳送數據,
MCP6V01RD-TCPL 1組每0.5秒量測傳送數據,
MCP6V01RD-TCPL 1組每 2秒量測傳送數據.
到 Curiosity PIC32MZEF 開發板

Ans: MCP6V01RD-TCPL 的 I2C 已被用來讀取 MCP9800 做為熱電偶的參考溫度了,這時 PIC18F2550 已經是 I2C Master Mode。實際上外部的 I2C 是不太容易加入這已有 Master 及 Slave 的連線裡。再加上 MCP9800 的 Slave Address 是一樣的,藥並再一起用有困難的。


5. 請問有類似 Curiosity PIC32MZEF 開發板的範例程式, 從 Master mode 轉成 Slave後, 再轉回 Master mode可提供給我參考嗎?

Ans: 要找一下。

6. Curiosity 和MCP6V01RD-TCPL可以都是 Slave mode, 兩者之間互傳資料嗎?

Ans: MCP6V01RD-TCPL 的實驗板的輸出是 USB,不是 I2C 。前面所談到的 I2C 是直接拉板子上的 I2C 來用。

2月06日 15:03:17
轉換PDF檔 列印


Re: 請問Curiosity PIC32MZEF與MCP6V01RD-TCPL兩開發板供電量及 I2C問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14224
等級: 72; EXP: 62
HP : 1074 / 1790
MP : 4741 / 72317
離線
1. 請問 MCP6V01RD-TCPL的最大耗電量是多少 mA? 網頁和手冊都沒寫到
Ans: 這是一片實驗板,上面有不少的主動元件像 PIC18F2550, MCP9800 及 MCP6V01。雖然都是低耗電的元件但 PIC 執行在何種模式下耗電也會不同。因為是實驗板所以就沒有標示耗電量式多少了。


2. PIC18F2550的 Pin 21/22 可以連接到 Curiosity PIC32MZEF 開發板的 mikro BUS 1 的SCL1/SDA1 上嗎?

Ans: MCP6V01RD-TCPL 上的 PIC18F2550 的 I2C (SCL & SDA, pin 21 & 22) 已經連接了MCP9800 參考溫度的測量,因為 MCP9800 也是用 I2C 方是測量的。所以三個 I2C 原件要接在一起最好是一個為 I2C Master 其餘兩個做為 Slave 且 Address 要不一樣。建議使用 PIC32MZEF 的 UART 與 PIC18F2550 的 UART 連接來交換資料。

3. 請問 mirko BUS1 可以接 5組 MCP6V01RD-TCPL嗎? BUS 最大 5V能供應幾組?

Ans: Curiosity Board 一般是使用 USB 5V 供電。USB 2.0 標準一個 USB Port 只能供應 500mA。所以不建議使用 Curisity Board 來供電。建議使用共地方式,將五組的 MCP6V01RD-TCPL 一起供電,Curiosity Board 用 USB 供電。

2月06日 14:39:06
轉換PDF檔 列印



« 1 2 3 (4) 5 6 7 ... 6990 »




搜尋
Microchip連結

網頁捷徑
2018 Winter Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project