Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Hi-Tech 18f Config Ayarları

Başlatan camby, 24 Şubat 2012, 14:30:37

camby

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 ?

CLR


C:\Program Files\HI-TECH Software\PICC-18\PRO\9.66\include\peripheral\pconfig.h
Knowledge and Experience are Power

camby

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.

CLR

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.

Knowledge and Experience are Power

camby

#4
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
		}
}

CLR

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,
Knowledge and Experience are Power

camby

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

jackal183

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

camby

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ı ?

jackal183

#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

camby

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 ?

jackal183

bilemiyorum kardeş senin kod neden derlenmiyor.

mailini verirsen bendeki include kalsörlerini sana yollarım

camby

hocam verebilirim ama upload edip buraya koysan daha doğru olur gibi.

jackal183