Re: ICD2燒錄18F4620的問題?
|
||||
---|---|---|---|---|
中級會員
|
以前好像也有人問過同樣的問題,
真糟糕(有一段時間沒用了), 先至 Configure->Select Device底下 Device指定你要燒錄的IC就可以了
發表於: 2005/3/7 15:48
|
|||
|
Re: 請教Definitions from P16F877.INC
|
||||
---|---|---|---|---|
新會員
|
另外, .h file as below:
// PART = PIC 16F877 #define W 0x0000 #define F 0x0001 //============================================= // Registers char indf@0x0000; char tmr0@0x0001; char pcl@0x0002; char status@0x0003; char fsr@0x0004; char porta@0x0005; char portb@0x0006; char portc@0x0007; char portd@0x0008; char porte@0x0009; char pclath@0x000A; char intcon@0x000B; char pir1@0x000C; char pir2@0x000D; char tmr1l@0x000E; char tmr1h@0x000F; char t1con@0x0010; char tmr2@0x0011; char t2con@0x0012; char sspbuf@0x0013; char sspcon@0x0014; char ccpr1l@0x0015; char ccpr1h@0x0016; char ccp1con@0x0017; char rcsta@0x0018; char txreg@0x0019; char rcreg@0x001A; char ccpr2l@0x001B; char ccpr2h@0x001C; char ccp2con@0x001D; char adresh@0x001E; char adcon0@0x001F; char option_reg@0x0081; char trisa@0x0085; char trisb@0x0086; char trisc@0x0087; char trisd@0x0088; char trise@0x0089; char pie1@0x008C; char pie2@0x008D; char pcon@0x008E; char sspcon2@0x0091; char pr2@0x0092; char sspadd@0x0093; char sspstat@0x0094; char txsta@0x0098; char spbrg@0x0099; char adresl@0x009E; char adcon1@0x009F; char eedata@0x010C; char eeadr@0x010D; char eedath@0x010E; char eeadrh@0x010F; char eecon1@0x018C; char eecon2@0x018D; //============================================= // STATUS Bits #define IRP 0x0007 #define RP1 0x0006 #define RP0 0x0005 #define NOT_TO 0x0004 #define NOT_PD 0x0003 #define Z 0x0002 #define DC 0x0001 #define C 0x0000 //============================================= // INTCON Bits #define GIE 0x0007 #define PEIE 0x0006 #define T0IE 0x0005 #define INTE 0x0004 #define RBIE 0x0003 #define T0IF 0x0002 #define INTF 0x0001 #define RBIF 0x0000 //============================================= // PIR1 Bits #define PSPIF 0x0007 #define ADIF 0x0006 #define RCIF 0x0005 #define TXIF 0x0004 #define SSPIF 0x0003 #define CCP1IF 0x0002 #define TMR2IF 0x0001 #define TMR1IF 0x0000 //=============================================
發表於: 2005/3/7 15:42
|
|||
|
Re: 請教Definitions from P16F877.INC
|
||||
---|---|---|---|---|
新會員
|
另外, .h file as below:
// PART = PIC 16F877 #define W 0x0000 #define F 0x0001 //============================================= // Registers char indf@0x0000; char tmr0@0x0001; char pcl@0x0002; char status@0x0003; char fsr@0x0004; char porta@0x0005; char portb@0x0006; char portc@0x0007; char portd@0x0008; char porte@0x0009; char pclath@0x000A; char intcon@0x000B; char pir1@0x000C; char pir2@0x000D; char tmr1l@0x000E; char tmr1h@0x000F; char t1con@0x0010; char tmr2@0x0011; char t2con@0x0012; char sspbuf@0x0013; char sspcon@0x0014; char ccpr1l@0x0015; char ccpr1h@0x0016; char ccp1con@0x0017; char rcsta@0x0018; char txreg@0x0019; char rcreg@0x001A; char ccpr2l@0x001B; char ccpr2h@0x001C; char ccp2con@0x001D; char adresh@0x001E; char adcon0@0x001F; char option_reg@0x0081; char trisa@0x0085; char trisb@0x0086; char trisc@0x0087; char trisd@0x0088; char trise@0x0089; char pie1@0x008C; char pie2@0x008D; char pcon@0x008E; char sspcon2@0x0091; char pr2@0x0092; char sspadd@0x0093; char sspstat@0x0094; char txsta@0x0098; char spbrg@0x0099; char adresl@0x009E; char adcon1@0x009F; char eedata@0x010C; char eeadr@0x010D; char eedath@0x010E; char eeadrh@0x010F; char eecon1@0x018C; char eecon2@0x018D; //============================================= // STATUS Bits #define IRP 0x0007 #define RP1 0x0006 #define RP0 0x0005 #define NOT_TO 0x0004 #define NOT_PD 0x0003 #define Z 0x0002 #define DC 0x0001 #define C 0x0000 //============================================= // INTCON Bits #define GIE 0x0007 #define PEIE 0x0006 #define T0IE 0x0005 #define INTE 0x0004 #define RBIE 0x0003 #define T0IF 0x0002 #define INTF 0x0001 #define RBIF 0x0000 //============================================= // PIR1 Bits #define PSPIF 0x0007 #define ADIF 0x0006 #define RCIF 0x0005 #define TXIF 0x0004 #define SSPIF 0x0003 #define CCP1IF 0x0002 #define TMR2IF 0x0001 #define TMR1IF 0x0000 //=============================================
發表於: 2005/3/7 15:38
|
|||
|
Re: 請教Definitions from P16F877.INC
|
||||
---|---|---|---|---|
新會員
|
是C,部分程式如下:
#include <p16f877.h> #define DEBUG 1 //============================================================= // void run_led(void); void logo(void); //============================================================= //Serial communication void serial_init(void); void putch(char c); char getch(void); void putchhex(char c); void putst(const char * str); //============================================================= //Utilities char read_bit(char reg,char offset); void DelayMs(int x); void DelayUs(int x); //============================================================= //SPI #define TURNON 0xFF #define TURNOFF 0x00 void spi_init(void); void dac_out(char data_H, char data_L); void regulator_init(); void regulator(char status); //============================================================= //Ethernet char txlen,rxlen; //STRANGE!!!!!! char typecode,opcode,packet_count; char data_type,send_recv,ack_noack; char packet[PACKET_SIZE]; char byte_read; void write_creg(char regaddr, char regdata); char read_creg(char regaddr); void init_RTL8019AS(); void send(char size); char get_packet(void); void receive(void); void show_packet(char size); void exchange_data(void); void receive_packet(void); void send_packet(void); char com_flag,send_flag; //============================================================== //Operation #define MAX_POINT 80 char time[MAX_POINT]; char volt[MAX_POINT]; char interval,num,prescaler; //char crnt[CUR_POINT]; char data_H,data_L; int current = 0; void ad_check(void); void adc_init(void); void ad_convert(char type); void cur_average(void); int t; int global_tick = 0; int local_tick = 0; void int_init(void); void interrupt(void); char data_len; void main() { char temp,t; serial_init(); logo(); spi_init(); regulator_init(); init_RTL8019AS(); run_led(); adc_init(); int_init(); regulator(TURNON); #if DEBUG for(t=0; t < MAX_POINT; t++){ time[t] = t; volt[t] = t; } for (t = 6; t < PACKET_SIZE; t++){ packet[t] = 0x00; } #endif for (t = 0; t < 6; t++){ packet[t] = 0x01; } interval = 60; while(1)//continuous loop { exchange_data(); //timer on int_init(); temp = opcode & EMULATE_VOLTAGE_MASK; if ( temp == EMULATE_VOLTAGE ){ #if DEBUG putst("\r\nVoltage Emulate & Current Measure CMD is executing!\r\n"); #endif enable_interrupt( GIE ); enable_interrupt( T0IE ); temp = opcode & MEASURE_AVG_CURRENT_MASK; num = data_len / 2; for (t = 0 ; t < num; t++) { data_H = volt[2*t]; data_L = volt[2*t+1]; dac_out(data_H,data_L); if (temp == MEASURE_AVG_CURRENT){ ad_convert(CURRR); volt[2*t] = data_H; volt[2*t+1]= data_L; } temp = time[2*t]; while(temp > local_tick) { ;; } local_tick = 0; #if DEBUG putst("\r\nTICK = : "); #endif } clear_bit( intcon, GIE ); clear_bit( intcon, T0IE ); cur_average(); #if DEBUG putst("\r\n\nEmulation has finished!! \r\n"); #endif } if ( opcode == 0xC0 ){ #if DEBUG putst("\r\nVoltage Measure & Current Measure CMD is executing!\r\n"); #endif enable_interrupt( GIE ); enable_interrupt( T0IE ); for (t = 0 ; t < interval ; t++) { num = (global_tick - 1) * 2; temp = global_tick; ad_convert(CURRR); time[num] = data_H; time[num + 1] = data_L; ad_convert(VOLTT); volt[num] = data_H; volt[num + 1] = data_L; while (temp == global_tick){ nop(); } } #if DEBUG putst("\r\n\nMeasuring has finished!! \r\n"); #endif } //timer off global_tick = 0; } }
發表於: 2005/3/7 15:35
|
|||
|
ICD2燒錄18F4620的問題?
|
||||
---|---|---|---|---|
中級會員
|
Mplab 7.01+ICD2連接18F4620無法抓到IC的ID,
換上18F452就可以了,不曉得是哪裡出問題了 =========18F4620(異常)如下 Connecting to MPLAB ICD 2 ...Connected Setting Vdd source to MPLAB ICD 2 ICDWarn0020: Invalid target device id (expected=0x21, read=0x60) ...Reading ICD Product ID Running ICD Self Test ...Passed MPLAB ICD 2 Ready =========18F452(正常) Connecting to MPLAB ICD 2 ...Connected Setting Vdd source to MPLAB ICD 2 Target Device PIC18F452 found, revision = c0 ...Reading ICD Product ID Running ICD Self Test ...Passed MPLAB ICD 2 Ready
發表於: 2005/3/7 15:12
|
|||
|
大家好我是新手...因為修車(m998)碰到一些電子的問題
|
||||
---|---|---|---|---|
新會員
|
大家好我是新手最近因為修車(m998)
碰到一些電子的問題我需要 PIC16C73A-04I/SP 9744HBJ 我在南部找ㄌ好幾家電子材料行都找不到這個ic 聽朋友說就算找到ic也沒用還要有程式才能燒錄 我是有找到一ㄍ原本的了但是找不到新ㄉ空白的 H9801 RFG60P06E 還有請問一下前輩有人知道台灣哪裡有再賣這種ㄉ3極電晶體 我在南部問ㄌ都沒有只有在國外ㄉ網站有看到型錄 謝謝大家
發表於: 2005/3/7 14:32
|
|||
|
Re: pic16f877 A/D问题集
|
||||
---|---|---|---|---|
版主
|
A1 : 采样频率可以用 Timer 的計時中斷來設定,不同的channel可以用不同的采样频率的。AD轉換的速度 = 采样時間 + 轉換時間
A2 : 可以在底下的網站下載 dsPICworks 的軟件,它可以分析data 的 Time and Frequency domain 的波形。它可以配合 MPLAB IDE 做資料的分析,使用手冊也在網站裡如使用有問題 可以打 中國的微芯科技技術服務專線 : 080-820-6247 找一位謝小姐。 http://www.microchip.com/stellent/idc ... Id=1406&dDocName=en010092 A3 : 要聽聲音就要接 Audio amplifier (0.5W) , 如果取樣頻率高於輸入頻率8倍以上應該是聽不出來有何差異,如果太接近就會產生很大的量化誤差當然就有較大的失真,同時Aliasing的現象也會越明顯。如果將轉換的數值直接送到DAC去就會看到量化的輸出結果,經過低通濾波器後才會比較接近輸入的波形。 A4 : bit rate 一般是指傳送速度,如果有輸出當然可以用示波器觀察。 A5 : 量化後的bit數,可以經由軟體方式改變其為準、振幅值(gain)、降低解析度、壓縮等動作但無增加其解析度,除非它是先有經過 compander (A-Law , u-Law) 的信號壓縮。 PIC16F877 可以達成你的需求。
發表於: 2005/3/7 12:06
|
|||
|
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 --------------------------------------------------------------------
發表於: 2005/3/7 11:20
|
|||
|