會員登陸
帳號:

密碼:

記住我



忘記密碼?

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



« 1 2 (3) 4 5 6 ... 6873 »


Re: PIC12F1840 I2C 通訊問題
新會員
註冊日期:
2013/05/21 15:08
所屬群組:
註冊會員
文章: 14
等級: 2; EXP: 50
HP : 0 / 37
MP : 4 / 440
離線
好困擾 這個IC 我燒錄一開始都正常!!燒一燒 就開始讀不到了

Programming...
The following memory regions failed to program correctly:
Program Memory
Address: 0000000e Expected Value: 00002811 Received Value: 00000000
Programming failed

Programming...
The following memory regions failed to program correctly:
Program Memory
Address: 00000009 Expected Value: 00001d91 Received Value: 00000e91
Programming failed


就在也燒不進去了

5月21日 10:25:20
轉換PDF檔 列印


PIC12F1840 I2C 通訊問題
新會員
註冊日期:
2013/05/21 15:08
所屬群組:
註冊會員
文章: 14
等級: 2; EXP: 50
HP : 0 / 37
MP : 4 / 440
離線
我嚐試了幾天!! 我用內部晶振 一直交換不了資料!!

我有用是波器看過 確實是有啟動內部震盪 但是就是不行 可以幫我鑑定一下嗎 各位大大
<Master>


#include <xc.h>
#define _XTAL_FREQ 8000000


// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection
#pragma config WDTE = ON // Watchdog Timer Enable
#pragma config PWRTE = OFF // Power-up Timer Enable
#pragma config MCLRE = OFF // MCLR Pin Function Select
#pragma config CP = OFF // Flash Program Memory
#pragma config CPD = OFF
#pragma config BOREN = ON
#pragma config CLKOUTEN = OFF
#pragma config IESO = OFF
#pragma config FCMEN = OFF

// CONFIG2
#pragma config WRT = OFF
#pragma config PLLEN = OFF
#pragma config STVREN = ON
#pragma config BORV = LO
#pragma config LVP = OFF


//OPTION_REG = 0b11010111;

void I2C_Master_Init(const unsigned long c)
{
LATA = 0x00;
SSPCON = 0b00101000;
SSPCON2 = 0;
SSPADD = (_XTAL_FREQ/(4*c))-1;
SSPSTAT = 0;
TRISA1 = 1;
TRISA2 = 1;
}

void I2C_Master_Wait()
{
while ((SSP1STAT & 0x04) || (SSP1CON2 & 0x1F));
}

void I2C_Master_Start()
{
I2C_Master_Wait();
SEN = 1;
}

void I2C_Master_RepeatedStart()
{
I2C_Master_Wait();
RSEN = 1;
}

void I2C_Master_Stop()
{
I2C_Master_Wait();
PEN = 1;
}

void I2C_Master_Write(unsigned d)
{
I2C_Master_Wait();
SSP1BUF = d;
}

unsigned short I2C_Master_Read(unsigned short a)
{
unsigned short temp;
I2C_Master_Wait();
RCEN = 1;
I2C_Master_Wait();
temp = SSP1BUF;
I2C_Master_Wait();
ACKDT = (a)?0:1;
ACKEN = 1;
return temp;
}

void main()
{
OSCCON = 0b01110010; // INTOSC @ 8MHz
OSCTUNE = 0b00000000;
pull up resistor

I2C_Master_Init(100000);
while(1)
{
int I2C_readdata =0;
I2C_Master_Start(); //Start condition
I2C_Master_Write(0x30); //7 bit address + Write
I2C_Master_Write(0x12); //Write data
I2C_Master_Stop(); //Stop condition
__delay_ms(200);
I2C_Master_Start(); //Start condition
I2C_Master_Write(0x31); //7 bit address + Read
I2C_readdata = I2C_Master_Read(0); //Read + Acknowledge
I2C_Master_Stop(); //Stop condition
__delay_ms(200);

if(I2C_readdata==0x12)
{

TRISA5 = 0;
LATA5 = 1;


}


}
}


<Slave>[/b]


#include <xc.h>
#define _XTAL_FREQ 8000000


// CONFIG1
#pragma config FOSC = INTOSC
#pragma config WDTE = ON
#pragma config PWRTE = OFF
#pragma config MCLRE = OFF
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = ON
#pragma config CLKOUTEN = OFF
#pragma config IESO = OFF
#pragma config FCMEN = OFF

// CONFIG2
#pragma config WRT = OFF
#pragma config PLLEN = OFF
#pragma config STVREN = ON
#pragma config BORV = LO
#pragma config LVP = OFF
short z;

void interrupt I2C_Slave_Read()
{
if(SSP1IF == 1)
{
SSPCONbits.CKP = 0;

if ((SSPCONbits.SSPOV) || (SSPCONbits.WCOL))
{
z = SSP1BUF; // Read the previous value to clear the buffer
SSPCONbits.SSPOV = 0; // Clear the overflow flag
SSPCONbits.WCOL = 0; // Clear the collision bit
SSPCONbits.CKP = 1;
}

if(!SSPSTATbits.D_nA && !SSPSTATbits.R_nW)
{
z = SSP1BUF;
while(!BF);
z = SSP1BUF;
SSPCONbits.CKP = 1;
}
else if(!SSPSTATbits.D_nA && SSPSTATbits.R_nW)
{
z = SSP1BUF;
BF = 0;
SSP1BUF = z ;
SSPCONbits.CKP = 1;
while(SSPSTATbits.BF);
}

SSP1IF = 0;
}
}

void I2C_Slave_Init(short address)
{
OSCCON = 0b01110010;
OSCTUNE = 0b00000000;
OPTION_REG = 0b11010111;
WDTCON = 0b00010111;
LATA = 0x00;
SSP1STAT = 0x80;
SSP1ADD = address;
SSPCON = 0x36;
SSPCON2 = 0x01;
TRISA1 = 1;
TRISA2 = 1;
TRISAbits.TRISA1 = 1;
TRISAbits.TRISA2 = 1;
TRISAbits.TRISA4 = 0;
ANSELA = 0x00;



SSP1CON1 = 0b00110110;
SSP1CON2bits.SEN = 1;
//SSP1CON3bits.BOEN = 1;
SSP1CON3bits.SDAHT = 1;
SSP1CON3bits.SBCDE = 1;
SSP1IF = 0;
BCL1IF = 0;
BCL1IE = 1;
SSP1IE = 1;
PEIE = 1;
GIE = 1;







}

void main()
{

I2C_Slave_Init(0x30); //Initialize as a I2C Slave with address 0x30
while(1);
}

5月20日 20:45:31
轉換PDF檔 列印


Re: 想請教使用交換式電源的話 如何克服zcd偵測問題 (PIC16F1613)
初級會員
註冊日期:
2013/01/21 11:28
所屬群組:
註冊會員
文章: 34
等級: 4; EXP: 59
HP : 0 / 89
MP : 11 / 1137
離線
引用:

Eigen 寫道:
ZCD 你這是要做什麼應用?

低成本,不想加硬體,那就用FIRMWARE 限制吧

EX: 50~60HZ, 10~8.3MS,你就每次zcd中斷觸發後,就設定一 COUNTER 7MS ,

在 COUNTER 時間內,發生的zcd中斷通通不理,只有在數完 7MS 後的才處理ZCD

(這大概是Firmware 能做的最大限度,不是 100% 但也只能這樣)


前輩好,這方法我也想過,但ZCD一直跳中斷,要做防火牆也不知道零點哪時開始,做AD偵測的話,那轉換速度也要很快,這方法好像也不太可行,因為根本原因在SWITCHING的拉電問題,但要做到很好的SWITCHING電路會變複雜,成本也增加,所以才想問看看有沒有前輩克服過這個問題,不然想乾脆用電容降壓去做就好了

5月20日 08:58:50
轉換PDF檔 列印


Re: 想請教使用交換式電源的話 如何克服zcd偵測問題 (PIC16F1613)
初級會員
註冊日期:
2013/01/21 11:28
所屬群組:
註冊會員
文章: 34
等級: 4; EXP: 59
HP : 0 / 89
MP : 11 / 1137
離線
引用:

Ryang 寫道:
硬體電路出了問題,這些多出來的脈衝最好消完以後在送進 ZCD 的偵測腳位。

建議用個低通濾波器先率掉這些脈衝,只讓 60Hz 的訊號通過。可以將 560K ohm 改為兩個串聯式的電阻 270K + 270K ohm 電阻中間接個 1000pF 的電容看看。如果在不行改成 三個電阻+兩個電容的 拍型綠波器。


楊先生,這試過了,一樣無法克服SWICHING拉電問題,我想想後覺得應該是要處理5V濾波那邊才是,5V有的漣波約200mV,每一根就是與正弦波那根剛好同步,但要做到濾波很好的SWICHING可能就沒那麼簡單了,電路會變複雜成本也會增加,頭痛,想乾脆用電容降壓做兩種BOM表去分110跟220就好

5月20日 08:54:14
轉換PDF檔 列印


Re: 請問有關 peripheral libraries 的放置位置
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 13936
等級: 72; EXP: 17
HP : 1067 / 1779
MP : 4645 / 67911
離線
XC16 在 v2.24 較早版本才有內建 Peripheral Library 的函數庫。 較新的版本周邊函數庫要另外安裝 Peeripheral Libraries v2.00。 參考一下教育訓練光碟的 XC16 編譯器下載。

5月19日 22:00:57
轉換PDF檔 列印


關於SAM R21 XPRO運行openwsn
新會員
註冊日期:
5月19日 21:34:48
所屬群組:
註冊會員
文章: 1
等級: 1; EXP: 0
HP : 0 / 0
MP : 0 / 0
離線
不知道有沒有人試過運行SAM R21 XPRO 運行openwsn?
有的話可以回復我一下嗎?

5月19日 21:40:55
轉換PDF檔 列印


Re: 想請教使用交換式電源的話 如何克服zcd偵測問題 (PIC16F1613)
資深會員
註冊日期:
2004/07/23 16:25
所屬群組:
註冊會員
文章: 1149
等級: 29; EXP: 66
HP : 0 / 716
MP : 383 / 26867
離線
ZCD 你這是要做什麼應用?

低成本,不想加硬體,那就用FIRMWARE 限制吧

EX: 50~60HZ, 10~8.3MS,你就每次zcd中斷觸發後,就設定一 COUNTER 7MS ,

在 COUNTER 時間內,發生的zcd中斷通通不理,只有在數完 7MS 後的才處理ZCD

(這大概是Firmware 能做的最大限度,不是 100% 但也只能這樣)

5月19日 16:13:50
轉換PDF檔 列印


請問有關 peripheral libraries 的放置位置
新會員
註冊日期:
4月12日 09:26:54
所屬群組:
註冊會員
文章: 9
等級: 1; EXP: 86
HP : 0 / 21
MP : 3 / 7
離線
最近剛在入門學習晶片的撰寫,
在官方的討論區看到許多人會使用peripheral libraries 這個資料來進行學習 ,但是我安裝完XC16後一值找不到,是我沒安裝完整嗎?
麻煩各位告知了,謝謝!!

5月19日 15:49:58
轉換PDF檔 列印


Re: 請問什麼是unmasked interrupt?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 13936
等級: 72; EXP: 17
HP : 1067 / 1779
MP : 4645 / 67911
離線
引用:

firststop0 寫道:
另外,想請教PORTAbits.RA = 1是什麼意思? = 0又是指什麼意思?

是指在TRISA = O時,RA輸出為1與輸出為0嗎?(PIC16F系列,沒LAT)


是的。

建議看一下 PIC101 X IDE & MCC & XC8 的綜合基礎課程

5月19日 12:51:11
轉換PDF檔 列印


Re: 請問什麼是unmasked interrupt?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 13936
等級: 72; EXP: 17
HP : 1067 / 1779
MP : 4645 / 67911
離線
引用:

firststop0 寫道:
在INTCON裡面看到GIE跟PEIE,裡面有講到unmasked interrupt,不太懂是什麼意思。


8-bit 的 PIC18F & PIC16F 都沒有 NMI 的中斷設計。PIC 裡只有 PIC24F 16-bit 以上的架構才有支援 NMI 的。

GIE 是 Global Interrupt Enable 控制位元。該位元設成 0 後將會關閉所有的中斷動做。

PEIE 是 Peripheral Interrupt Enable 控制位元。這位元數於第二及的控制,掌管了大部分的周邊的中斷的開啟。如 ADC, Timer1, UART.... 除了 INTF, TOIF & RBIF 外。

參考一下附圖看一下 GIE & PEIE 所管轄的範圍(黃色部份)

附加檔案:



jpg  擷取.JPG (57.73 KB)
16_591e7940bbd0a.jpg 865X495 px

5月19日 12:49:04
轉換PDF檔 列印



« 1 2 (3) 4 5 6 ... 6873 »




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