Hi-Tech 18f Config Ayarları nasıl yapılıyor ? Farklı başlıklar inceledim sonuca ulaşamadım , kullandığım işlemciye ait config bilgileri ve kullanımı nerede yazıyor?
Program başında #include <htc.h> var , buradan :
#include <pic18.h> ile başka bir pic18.h dosyasına gidiliyor.
<pic18.h> içinde :
#include <chip_select.h> var
ve
#define __PROG_CONFIG(a, x) \
__config(___mkstr(__PROG_CONFIG), ___mkstr(pic18), a, x)
#define __CONFIG(a, b) \
__config(___mkstr(__CONFIG), ___mkstr(pic18), ___mkstr(b))
tanımı var.
<pic18f46k22.h> dosyasına bakıyorum , config ile ilgili herhangi bir tanımlama yok.
Bulduğum tek şey <pic18.h> içinde bulunan yukarıdaki config tanımlamaları..
Örneklere bakıyorum : __CONFIG(4,DEBUGDIS & LVPDIS & STVRDIS);
diye adam yapıştırmış hemen , nerede bulunuyor bu tanımlamalar ?
C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include\peripheral\pconfig.h
Alıntı yapılan: uicroarm - 24 Şubat 2012, 14:50:58
C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include\peripheral\pconfig.h
Bahsettiğiniz yol 9.80'de daha farklıymış :
C:\Program Files (x86)\HI-TECH Software\PICC-18\9.80\include\plib\pconfig.h
1 - pconfig.h nerede tanımlı ? htc.h içinden pconfig.h'ye ulaşılamıyor.
2 - pconfig.h içerisinde istemiş olduğum config ayarları yok .
/*############################################################*/
/* Configuration for device = 'PIC18F46K22' */
/*############################################################*/
/* ADC */
#define ADC_V14
/* ECC */
#define ECC_V9
/* CC */
#define CC_V9
/* EPWM */
#define EPWM_V15
/* PWM */
#define PWM_V15
/* PCPWM */
/*No configuration chosen for this peripheral*/
/* USART */
#define EAUSART_V11
/* SPI */
#define SPI_V5
/* I2C */
#define I2C_V6
/* TIMERS */
#define TMR_V7_3
/* EEPROM */
#define EEP_V3
/* PORT_B */
#define PTB_V1
/* ANCOMP */
#define ANCOM_V8
/* MWIRE */
#define MWIRE_V5
/* CTMU */
#define CTMU_V1
/* PPS */
/*No configuration chosen for this peripheral*/
/* RTCC */
/*No configuration chosen for this peripheral*/
/* DPSLP */
/*No configuration chosen for this peripheral*/
/* PMP */
/*No configuration chosen for this peripheral*/
/* FLASH */
#define FLASH_V1_4
Şu şekilde kullansam olur mu ?
// PIC Configuration bits
#pragma config FOSC = INTIO67 // Internal oscillator block, port function on RA6 and RA7
#pragma config PLLCFG = ON // Oscillator multiplied by 4
#pragma config PRICLKEN = ON // Primary clock is always enabled
Bu şekilde kullandığımda en azından helpte gösterilen config ayarlarını doğrudan kullanabiliyorum.
Evet öyle kullanabilirsin.
Böyle library bulma yolu basittir. Çünkü ilgili pic header içine girip hangi headerlar eklenmiş ona bakacaksın. Ekli headerların içinde arayıp, bulursun.
Hi-tech ile ilk 18f programımı hala derleyemedim , RB4 tanımında sorun var yazıyor , onun yerine başka birşey yazdığımda delay satırında hata var yazıyor. Manuel'de benim kullandığım gibi kullanılmış , nerde hata yapıyorum ?
Hata satırı : 38.1 undefined identifier "RB4"
// LED DENEMESİ
// Pic 18F46K22
#include <htc.h>
#include <pic18.h>
#include <pic18f46k22.h>
#define _XTAL_FREQ 64000000
// PIC Configuration bits
#pragma config FOSC = INTIO67 // Internal oscillator block, port function on RA6 and RA7
#pragma config PLLCFG = ON // Oscillator multiplied by 4
#pragma config PRICLKEN = ON // Primary clock is always enabled
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor disabled
#pragma config IESO = OFF // Oscillator Switchover mode disabled
#pragma config PWRTEN = OFF // Power up timer disabled
#pragma config BOREN = OFF // Brown-out Reset disabled in hardware and software
#pragma config WDTEN = OFF // Watch dog timer is always disabled. SWDTEN has no effect.
#pragma config PBADEN = OFF // PORTB<5:0> pins are configured as digital I/O on Reset
#pragma config MCLRE = EXTMCLR // MCLR pin enabled, RE3 input pin disabled
#pragma config STVREN = OFF // Stack full/underflow will not cause Reset
#pragma config LVP = OFF // Single-Supply ICSP disabled
#pragma config DEBUG = OFF // Disabled
#pragma config XINST = OFF // Extended Instruction Set
void init(void)
{
TRISB=0x00; // PORTB çıkıs olarak yönlendiriliyor
PORTB=0x00; // PORTB'nin tüm çıkısları sıfırlanıyor
ANSELB=0X00;
}
void main(void) // Ana fonksiyon
{
init();
while (1){ // Sonsuz döngüye giriliyor
RB4 = 1; // Led yanacak
__delay_ms(500); // Yarım saniye beklenecek
RB4 = 0; // Led sönecek
__delay_ms(500); // Yarım saniye beklenecek
}
}
RB4 artık kullanılmıyor çünkü bu tür şeyler için header içine bakman lazım
PORTBbits.RB4 diye kullanman lazım,
pic18f46k22.h içinde :
// Register: PORTB
extern volatile unsigned char PORTB @ 0xF81;
#ifndef _LIB_BUILD
asm("PORTB equ 0F81h");
#endif
// bitfield definitions
extern volatile union {
struct {
unsigned RB0 :1;
unsigned RB1 :1;
unsigned RB2 :1;
unsigned RB3 :1;
unsigned RB4 :1;
unsigned RB5 :1;
unsigned RB6 :1;
unsigned RB7 :1;
};
...........
olarak tanımlanmış.
Manuel'de :
#include <htc.h>
void main(void)
{
PORTA = 0x00;
RA0 = 1;
PORTAbits.RA2 = 1;
}
olarak kullanım göstermiş.
Alıntı yapılan: camby - 24 Şubat 2012, 15:08:15
Bahsettiğiniz yol 9.80'de daha farklıymış :
C:\Program Files (x86)\HI-TECH Software\PICC-18\9.80\include\plib\pconfig.h
1 - pconfig.h nerede tanımlı ? htc.h içinden pconfig.h'ye ulaşılamıyor.
2 - pconfig.h içerisinde istemiş olduğum config ayarları yok .
/*############################################################*/
/* Configuration for device = 'PIC18F46K22' */
/*############################################################*/
/* ADC */
#define ADC_V14
/* ECC */
#define ECC_V9
/* CC */
#define CC_V9
/* EPWM */
#define EPWM_V15
/* PWM */
#define PWM_V15
/* PCPWM */
/*No configuration chosen for this peripheral*/
/* USART */
#define EAUSART_V11
/* SPI */
#define SPI_V5
/* I2C */
#define I2C_V6
/* TIMERS */
#define TMR_V7_3
/* EEPROM */
#define EEP_V3
/* PORT_B */
#define PTB_V1
/* ANCOMP */
#define ANCOM_V8
/* MWIRE */
#define MWIRE_V5
/* CTMU */
#define CTMU_V1
/* PPS */
/*No configuration chosen for this peripheral*/
/* RTCC */
/*No configuration chosen for this peripheral*/
/* DPSLP */
/*No configuration chosen for this peripheral*/
/* PMP */
/*No configuration chosen for this peripheral*/
/* FLASH */
#define FLASH_V1_4
Şu şekilde kullansam olur mu ?
// PIC Configuration bits
#pragma config FOSC = INTIO67 // Internal oscillator block, port function on RA6 and RA7
#pragma config PLLCFG = ON // Oscillator multiplied by 4
#pragma config PRICLKEN = ON // Primary clock is always enabled
Bu şekilde kullandığımda en azından helpte gösterilen config ayarlarını doğrudan kullanabiliyorum.
v9.63 için konuşuyorum.
C:\Program Files\HI-TECH Software\PICC-18\PRO\9.63\include klasörünün içinde her bir pic için include dosyaları mevcut. ancak iki tane dosya var, birinin adı (örneğin) 18lf25k22, diğerinin adı ise pic18lf25k22. config ayarlarını pic18lf25k22 içinde bulabilirsin. eğer sizde o dosyalar yoksa ben ilgili pic için config dosyasını gönderebilirim
Hi-tech klasöründe ilgili 3 adet dosya var :
1- pic18f46k22.h
2- pic18f46k22.inc
3- p18f46k22.h
3ünün içinde de config ile ilgili birşey yok , sizinkinde var mı ?
#ifndef _HTC_H_
#warning Header file pic18f46k22.h included directly. Use #include <htc.h> instead.
#endif
/* header file for the MICROCHIP PIC microcontroller
18F46K22
*/
#ifndef __PIC18F46K22_H
#define __PIC18F46K22_H
#ifdef _PLIB
#error Peripheral Library not supported
#endif
// Config Register: CONFIG1H
// Oscillator Selection bits
// EC oscillator (low power, <500 kHz)
#define FOSC_ECLPIO6 0xF7FF
// EC oscillator, CLKOUT function on OSC2 (low power, <500 kHz)
#define FOSC_ECLP 0xF6FF
// EC oscillator (medium power, 500 kHz-16 MHz)
#define FOSC_ECMPIO6 0xF1FF
// EC oscillator, CLKOUT function on OSC2 (medium power, 500 kHz-16 MHz)
#define FOSC_ECMP 0xF0FF
// Internal oscillator block, CLKOUT function on OSC2
#define FOSC_INTIO7 0xF3FF
// Internal oscillator block
#define FOSC_INTIO67 0xF2FF
// External RC oscillator
#define FOSC_RCIO6 0xFDFF
// External RC oscillator, CLKOUT function on OSC2
#define FOSC_RC 0xFCFF
// EC oscillator (high power, >16 MHz)
#define FOSC_ECHPIO6 0xFFFF
// EC oscillator, CLKOUT function on OSC2 (high power, >16 MHz)
#define FOSC_ECHP 0xFEFF
// HS oscillator (medium power 4-16 MHz)
#define FOSC_HSMP 0xF9FF
// HS oscillator (high power > 16 MHz)
#define FOSC_HSHP 0xF8FF
// XT oscillator
#define FOSC_XT 0xFBFF
// LP oscillator
#define FOSC_LP 0xFAFF
// 4X PLL Enable
// Oscillator used directly
#define PLLCFG_OFF 0xFFFF
// Oscillator multiplied by 4
#define PLLCFG_ON 0xEFFF
// Primary clock enable bit
// Primary clock can be disabled by software
#define PRICLKEN_OFF 0xDFFF
// Primary clock is always enabled
#define PRICLKEN_ON 0xFFFF
// Fail-Safe Clock Monitor Enable bit
// Fail-Safe Clock Monitor disabled
#define FCMEN_OFF 0xFFFF
// Fail-Safe Clock Monitor enabled
#define FCMEN_ON 0xBFFF
// Internal/External Oscillator Switchover bit
// Oscillator Switchover mode disabled
#define IESO_OFF 0xFFFF
// Oscillator Switchover mode enabled
#define IESO_ON 0x7FFF ......................
bendeki ilgili klasörün içinin bir kısmını kopyaladım ve koydum. istediğin şey bu değil mi kardeş? bütün config registerları gösteriyor devamında, aradaığın şey buysa gönderebilirim
evet bunlar olabilir ancak en üstteki mesajımda gösterdiğim örneklerden daha farklı bir format gibi duruyor. Her versiyonda şu header konusunda değişiklik olmuş gibi. Manuelde de pragma olarak kullanın yazıyordu.
Benim kodlar neden derlenmiyor olabilir ?
bilemiyorum kardeş senin kod neden derlenmiyor.
mailini verirsen bendeki include kalsörlerini sana yollarım
hocam verebilirim ama upload edip buraya koysan daha doğru olur gibi.
bendeki include dosyasını olduğu gibi koyuyorum.
http://hotfile.com/dl/147757476/f28e208/include.rar.html (http://hotfile.com/dl/147757476/f28e208/include.rar.html)