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

論壇索引


Board index » All Posts




Re: 如何ISP (自我燒錄 )
新會員
新會員


多謝版主.....
搞定了..!!!

發表於: 2005/11/22 15:48
頂部


Re: 請問各位高手有關"中斷"與"SPI"...的問題...
高級會員
高級會員


Sorry....我要補充一下...
我的PIC18F2455也有做USB的工作....
當我沒開中斷時....USB一切正常...
但如果我開中斷則USB傳輸到最後會死掉.....
但裝置管理員還是有顯示....
真的很奇怪.....希望各位前輩多多給予指教...!!!
謝謝...........

發表於: 2005/11/22 14:33
頂部


請問各位高手有關"中斷"與"SPI"...的問題...
高級會員
高級會員


我是用PIC18F2455....我利用計數器去算....當一秒時中斷一次...這時中斷副程式的工作是將sec這個變數加1.....然後我利用OLED Module作為顯示...而PIC與OLED的傳輸介面為SPI.....但我發現....如果我將中斷打開.....則會影響SPI的傳輸....而我要做SPI時....我都會將中斷關閉(INTCONbits.GIEH=0;)....當作完SPI再將中斷打開(INTCONbits.GIEH=1;)...我發現這樣做也沒效...有人有遇過這些問題嗎..?...
我在做的是....利用計數器和中斷去累加我的時間...也就是sec會每秒加一....之後再透過SPI秀在OLED上....但OLED秀到最後都會亂掉...如果我只是利用SPI丟資料....而不中斷則一切正常....
以下是我的中斷副程式...
WriteTimer0((65535-46876+ReadTimer0()));
sec++;
if(sec>59)
{
sec=0;
min++;
}
if(min>59)
{
min=0;
hour++;
}
if(hour>23)
{
hour=0;
}

請問有人有更好的計數方式嗎....?
謝謝..

發表於: 2005/11/22 14:30
頂部


MCU會異常RESET
中級會員
中級會員


各位高手大大,小弟使用MicroChip的MCU
18F8722@40MHZ,開發環境是使用 MPLAB
7.20版 Compiler 為C18 2.40版以ICD2做
DEBUG,目前小弟的程式已寫到約 75% 到
目前為止在 Debug 時陸續發生一些很難
克服的問題:如下

#pragma code _entry_scn=0x000000
void
_entry (void)
{
_asm
goto _startup <---PC 停在這兒
_endasm
}
#pragma code _startup_scn

1.以上程式是C18自行產生的CODE,在程式
一開始時,PC會停在 "goto _startup"
的地方,當我按下"GO"時ICD2會全速執
行程式,這點沒問題;但是問題是發生
在當程式執行到某時段時(不定期的),
PC會 RESET 從頭 "goto _startup"的
地重來,且更奇怪的是它大多會停在這
個地方(但也有少數會再繼續執行下去)
;理論上即使程式有問題造成RESET,那
也必須從RESET(goto _startup)"持續"
地執行下去,不可停下來,但為何會這
樣實在令人不解,小弟確定已拿掉所有
的BRAKE POINT了。
2.小弟的configure 值為:
Power up timer : Disable
Watch dog timer : Disable
Brown OUT Detect : Enable
Brown OUT Voltage: 2.0V
在reset發生時感覺有點像Brown OUT但
即使小弟將Brown OUT Detect設為關閉
"Disable"依然會有Reset的產生,再者
小弟使用示波器測量MCU的VDD電壓,雖
然有發現在某一時間電源由5V掉到4.1V
但卻沒有產生Reset,且會發生Reset的
時機大部份都是在電源很穩定的時段,
故排除電源不穩的因素。
3.Stack Overflow Reset 小弟設為Enable
原本一度懷疑這個部份,但在DEBUG中發
現STACK BUFFER 小弟設為256應該夠用,
且也沒有發生溢位的情況,再者小弟將
Stack Overflow Reset 設為Disable,
而Reset的情形依舊會發生。
4.
檢查RCON中斷產生暫存器,其值為
"10001100" 自始至終都沒有異狀,尤其
是在 RESET 發生停下來時。
5.
最令小弟不解的是:小弟在CODING某段程
式後這種RESET的情況才開始發生,且發
現使用函數名稱"Playing_LOOP_Check()"
時 Comliper 都ok 但執行起來卻有時會
造成 Reset,小弟試著更改函數名稱為
其它的名字後,Reset的情況居然大大降
低甚至不再發生…但在往後coding新加程式
功能後 Reset的情況又再度出現了…

不知有那位高手大大們曾經遇到這種情況
或是高手們有沒有方法幫幫小弟解這難題
,感激不盡!謝謝!

發表於: 2005/11/22 10:36
頂部


Re: How to copy ...
資深會員
資深會員


3Q lar.
又學到一招 原來 MOVF = COPYF
為何不叫COPY... 不 就了啦 !!!
害笨鴨我, 苦想了一天如何去 COPY 資料.

真是笨笨耶 程式終於又可以繼續下去啦

阿里阿多 謝謝啦

發表於: 2005/11/22 5:01
頂部


Re: 請問一下....新手請多包涵...
初級會員
初級會員


1. 檔案可能有損壞,先將你的 source file 或整個pic目錄 copy 到其他地方備檔,再用以下方式去試看看.
2. 可能是用舊的 mplab 建立的 project, 查一下是用那個版本建的, 用那個版本去開啟.
3. 再不然, 從新建立一個project吧!! 把 source file 以外的刪除,用project 精靈再建立一次.
4. 可以去下載新版的 mplab, 將舊版先移除,再重新安裝,重新開啟project.
5. 適當的懷疑,是否你的 WINDOWS 2K,XP or HDD, RAM...等等問題, copy 你的project(整個目錄)到別的乾淨電腦,試試看...

以上,如還不能解決,再上來一下,並儘可能將您的mplab版本啦...windows的環境啊...硬體配備以及您那個project是多久以前建立的...等等,也好方便幫您判斷.
呵呵

發表於: 2005/11/21 23:26
頂部


請問A/D取多個通道輸入的問題
初級會員
初級會員


各位前輩:
小弟最近想用PIC16F877取多個通道的A/D轉換,我是參考此網站右邊"教材及講義區 ==> WORKSHOP ==> HI-TECH C 講義及實作裡面的lab3";但是此範例是PIC16F877A的範例,且此範例只取一個channel,因此小弟將程式修改如下:

希望各位前輩能夠撥空幫我看看為何,我取單一channel時不會有問題,但是取多channel時卻會有互相干擾的問題?
另外,為何我第8個channel(RE2)不能使用?

拜託各位前輩能給我這個初入門的人解答,萬分感謝!!

#include <pic.h>
#include "MID_LCD.h"


void A2D_0( unsigned char );
void A2D_1( unsigned char );
void A2D_2( unsigned char );
void LCD_ItoA(unsigned int);
unsigned char Set_BCD_ASCII(unsigned char);




unsigned int AD_Temp;
unsigned int AD_Temp_1;
unsigned int AD_Temp_2;
bit DS_Zero_Flag;

union {
int AD_10bit;
struct {
char AD_LSB;
char AD_MSB;
}AD_Byte;
}AD_Int;

union {
int AD_10bit_1;
struct {
char AD_LSB_1;
char AD_MSB_1;
}AD_Byte_1;
}AD_Int_1;

union {
int AD_10bit_2;
struct {
char AD_LSB_2;
char AD_MSB_2;
}AD_Byte_2;
}AD_Int_2;
/*****************************
DELAY FUNCTION
*****************************/

void delay_x_ms(int);
void del_1ms(void);

void delay_x_ms(int N_ms)
{
int Loop_ms;

for(Loop_ms = 0;Loop_ms<N_ms;Loop_ms++)
{
del_1ms();
}
}

void del_1ms(void)
{
int del_1ms;
for(del_1ms = 0;del_1ms<199;del_1ms++)
{
asm("nop");
asm("nop");
}
}

/***********************************
Convert A/D Channel
************************************/

void A2D_0( unsigned char channel )
{
unsigned char temp; // Temp storage
ADCON0=0b10000001;

temp = channel << 3; // Shift channel value three bits left
ADCON0 &= 0b11000111; // Clear channel select bits in ADCON0
ADCON0 |= temp; // Logically OR shifted channel value into place in ADCON0

ADGO = 1; // Initiate conversion on selected channel
while (ADGO) ; // Poll ADGO bit until it clears, indicating conv. done
AD_Int.AD_Byte.AD_MSB=ADRESH;
AD_Int.AD_Byte.AD_LSB=ADRESL;
}

void A2D_1( unsigned char channel_1)
{
unsigned char temp; // Temp storage
ADCON0=0b10001001;

temp = channel_1 << 3; // Shift channel value three bits left
ADCON0 &= 0b11000111; // Clear channel select bits in ADCON0
ADCON0 |= temp; // Logically OR shifted channel value into place in ADCON0

ADGO = 1; // Initiate conversion on selected channel
while (ADGO) ; // Poll ADGO bit until it clears, indicating conv. done
AD_Int_1.AD_Byte_1.AD_MSB_1=ADRESH;
AD_Int_1.AD_Byte_1.AD_LSB_1=ADRESL;
}

void A2D_2( unsigned char channel_2)
{
unsigned char temp; // Temp storage
ADCON0=0b10010001;

temp = channel_2 << 3; // Shift channel value three bits left
ADCON0 &= 0b11000111; // Clear channel select bits in ADCON0
ADCON0 |= temp; // Logically OR shifted channel value into place in ADCON0

ADGO = 1; // Initiate conversion on selected channel
while (ADGO) ; // Poll ADGO bit until it clears, indicating conv. done
AD_Int_2.AD_Byte_2.AD_MSB_2=ADRESH;
AD_Int_2.AD_Byte_2.AD_LSB_2=ADRESL;
}

//***************************************
//* Program Main ( ) *
//***************************************
void main(void)
{
OpenLCD();
ADCON1=0b10000000; //all channel is A/D input and Right justified
TRISA0=1;
TRISA1=1;
TRISA2=1;
TRISA3=1;
TRISA4=1;
TRISA5=1;
TRISE0=1;
TRISE1=1;
TRISE2=1;
TRISC=0x00; // Set PortC for Output
PORTC=0x80; // Initila LED display = 0x80

while(1)
{
A2D_0(0x00); // Get 10-bit A/D result from CH0
LCD_Set_Cursor(0,0);
LCD_ItoA(AD_Int.AD_10bit);
delay_x_ms(100);
A2D_1(0x01); // Get 10-bit A/D result from CH1
LCD_Set_Cursor(6,0);
LCD_ItoA(AD_Int_1.AD_10bit_1);
delay_x_ms(100);
A2D_2(0x02); // Get 10-bit A/D result from CH2
LCD_Set_Cursor(0,1);
LCD_ItoA(AD_Int_2.AD_10bit_2);
delay_x_ms(100);

}

}

void LCD_ItoA(unsigned int AD_Data)
{
AD_Temp=AD_Data;
DS_Zero_Flag=1;

putcLCD(Set_BCD_ASCII(AD_Data/1000)); // 顯示千位數
AD_Temp=AD_Temp%1000; // 取出百位以後的數

putcLCD(Set_BCD_ASCII(AD_Temp/100)); // 顯示百位數
AD_Temp=AD_Temp%100;

putcLCD(Set_BCD_ASCII(AD_Temp/10)); // 顯示十位數
AD_Temp=AD_Temp%10;

putcLCD(AD_Temp+='0'); // 顯示個位數
}


unsigned char Set_BCD_ASCII(unsigned char BCD_Data)
{
if (BCD_Data==0)
{
if (DS_Zero_Flag) return ' '; // 居先零抑制
else return '0'; // 顯示一般的零
}
else
{
DS_Zero_Flag=0; // 取消居先零的抑制
return (BCD_Data +='0'); // 並傳回 ASCII Code
}
}

發表於: 2005/11/21 21:49
頂部


Re: ICD2連線dsPIC30F2010的問題
新會員
新會員


我試過有電阻r23,r36及沒有的ICD2,可是都還是下列的訊息
Programming Target...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation
...Validating configuration fields
ICDWarn00051: Illegal configuration memory value 0x0 at address 0xf80008 (field RES2). Would you like ICD2 to set this field to the default value? Ignoring this warning may corrupt the device.
...Erasing Part
...Programming Programming Executive
...Verifying Programming Executive
ICD0161: Verify failed (MemType = Test, Address = 0x800000, Expected Val = 0x40080, Val Read = 0x0)
ICD0275: Programming failed.
MPLAB ICD 2 Ready
可能是什麼雲因呢

發表於: 2005/11/21 17:30
頂部


Re: MPLAB IDE 的问题
新會員
新會員


這些我都試過了,可是卻還是有一樣的問題
還有哪些可能的原因呢?

發表於: 2005/11/21 17:19
頂部


請問一下有關sleep for pic16f676
初級會員
初級會員


小弟在測試sleep model時線路中只用一顆led和一個按鈕來測試,電路一開始會亮led當按下按鈕後進入sleep model此時的消耗電流是90uA。
不曉得為什麼這麼大?一般進入sleep model後的消耗電流都是這麼大嗎?還是需要設定哪些參數?
我有去查過pic16f676的data sheet 但是看不太懂所說的,
想問一下有沒有人能用最簡單又容易懂的述敘來教一下小第。謝謝!

發表於: 2005/11/21 14:36
頂部



« 1 ... 6856 6857 6858 (6859) 6860 6861 6862 ... 7522 »



:::

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... ]

教育訓練中心

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