<< Previous Topic | Next Topic >>Retornar ao Fórum  

PIC18F258

July 18 2007 at 9:19 AM
No score for this post

  (Login dcssl)
from IP address 200.172.212.132

 
Bom Dia Meus amigos tendo visto que vocês tem um grande conhecimento, perante a utilização de PIC, venho aqui para lhes pedir que se puderem me ajudar por favor o faça. o meu problema e o seguinte.

Estou hoje programando em um PIC18F258, estou tendo dificuldades com ele pois tudo o que eu fiz ate hoje não deu certo!

vou te mandar o esquema do circuito e o os códigos que eu já tentei com ele, se você puder me ajudar.
Eu já não sei mais a quem recorrer muito obrigada pela paciência!

Se tiver algo erra ou algum codigo que você achem errado me fala!
Eu estou realmente se saber agora para onde ir.

Outra Duvida o oscilador tem que ser configurado no PIC16
e só usar "#use delay(clock=40000000)", mais no PIC18F258 e MPLAB não aceita este codigo e fala que ele esta incorreto!




******************************o primeiro código foi esse*************************************** ******************************o primeiro código foi esse*************************************** ******************************o primeiro código foi esse*************************************** ******************************o primeiro código foi esse*************************************** ******************************o primeiro código foi esse***************************************


#include
#include
#define LED PORTCbits.RC5 // Renome ando as portas do PIC

void main()
{
TRISC = 0; // Determina todo o PORTB como saída
LATC = 1; // Lê as informações do PORTB
LED = 1;
while(1)
{
Delay10KTCYx(10); // Utilizado para causar também uma pequena interrupção
LED = !LED;
Delay10KTCYx(10);
}
}


******************************o segundo código foi esse*************************************** ******************************o segundo código foi esse*************************************** ******************************o segundo código foi esse*************************************** ******************************o segundo código foi esse*************************************** ******************************o segundo código foi esse*************************************** ******************************o segundo código foi esse***************************************



#include


#pragma config OSC = XT //Configuração do oscilador tipo XT


#define C PORTCbits.RC0 //Renome ando as portas do PIC
#define C1 PORTCbits.RC1
#define C2 PORTCbits.RC2
#define C3 PORTCbits.RC3
#define C4 PORTCbits.RC4
#define C5 PORTCbits.RC5
#define c6 PORTCbits.RC6
#define C7 PORTCbits.RC7


#define B PORTBbits.RB0
#define B1 PORTBbits.RB1
#define B2 PORTBbits.RB2
#define B3 PORTBbits.RB3
#define B4 PORTBbits.RB4
#define B5 PORTBbits.RB5
#define B6 PORTBbits.RB6
#define B7 PORTBbits.RB7


#define A PORTAbits.RA0
#define A1 PORTAbits.RA1
#define A2 PORTAbits.RA2
#define A3 PORTAbits.RA3
#define A4 PORTAbits.RA4
#define A5 PORTAbits.RA5


void wait() // tem a função de causar uma pequena interrupção
{
int x;
x = 20000;
Delay10KTCYx(10);
for (;x>0; x--);
}


void pause() // tem a função de causar uma pequena interrupção
{
int x;
x = 20000;
for(;x>0; x--){
B = 1; // determina esta porta para liberar uma corrente
}

wait();
int x;
x = 20000;
Delay10KTCYx(10); // Utilizado para causar também uma pequena interrupção
for(;x>0; x--){
Delay10KTCYx(10);
B = 0; // determina esta porta para bloquear uma corrente
}
}

void main()
{

TRISB = 0; // Determina todo o PORTB como saída
LATB= 0; // Lê as informações do PORTB
TRISA = 0xFF; // Determina como entrada
LATA= 1; // Lê a entrada
TRISC = 0xFF;
LATB= 1;

while(1)
{

C = 1;
C1 = 1;
C2 = 1;
C3 = 1;
C4 = 1;
C5 = 1;
C6 = 1;
C7 = 1;
B = 1;

Delay10KTCYx(10); // Utilizado para causar também uma pequena interrupção

if(PORTAbits.RA0)
{
B = 1;
}
else
{
pause(); // tem a função de causar uma pequena interrupção
Delay10KTCYx(10);
B = 0;// acende uma determinada porta RB0

wait(); // tem a função de causar uma pequena interrupção


pause(); // tem a função de causar uma pequena interrupção
}

B1 = 1;
B2 = 1;
B3 = 1;
B4 = 1;
B5 = 1;
B6 = 1;
B7 = 1;

A = 1;
A1 =1;
A2 = 1;
A3 = 1;
A4 = 1;
A5 = 1;

Delay10KTCYx(10);

}
}

 
Scoring disabled. You must be logged in to score posts.Respond to this message   
AuthorReply
Cerne
(no login)
201.84.4.240

Re: PIC18F258

No score for this post
July 18 2007, 11:12 AM 

Boa tarde,

Observe que você está usando o compilador C18 ao invés do C CCS, por isso que o compilador não aceita o #use delay (clock=4000000). O CCS também suporta a família PIC18, você não precisa necessariamente trabalhar com o C 18 da Microchip.
Outro detalhe é referente aos fusíveis. Acredito que este possa ser o seu problema. Configure o WDT para off, modo LVP off e oscilador para XT. Com esta configuração acredito que o seu projeto venha a funcionar.

Abs,
Cerne

 
Scoring disabled. You must be logged in to score posts.Respond to this message   


(Login dcssl)
200.172.212.132

OPSSS!!

No score for this post
July 18 2007, 12:10 PM 

O ccs grava com o picstartplus ou o ICD2BR?..e outra pergunta o ccs funciona no win xp?..pq ouvi falar q ele naum roda no winxp!?

vlw

olha o codigo que estou usando agora!








#include <p18f258.h>
#include <delays.h>

#pragma config OSC = XT, OSCS = ON
#pragma config PWRT = OFF
#pragma config BOR = OFF
#pragma config WDT = OFF
//#pragma config CCP2MUX = OFF
#pragma config LVP = OFF

#define LED0 PORTBbits.RB0 // Led

void DelayFor18TCY( void ) // configura o oscilador
{
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
Delay1TCY();
}
void DelayPORXLCD (void) // configura o oscilador
{
Delay1KTCYx(180); // Delay of 15ms
// Cycles = (TimeDelay * Fosc) / 4
// Cycles = (15ms * 48MHz) / 4
// Cycles = 180,000
return;
}
void DelayXLCD (void) // configura o oscilador
{
Delay1KTCYx(60); // Delay of 5ms
// Cycles = (TimeDelay * Fosc) / 4
// Cycles = (5ms * 48MHz) / 4
// Cycles = 60,000
return;
}

void delay (void) // faz uma pequena pausa!
{
unsigned int i;

for (i = 0; i < 60000; i++)
;
}
void main()
{
TRISB = 0b00000000;
LED0=1;
delay();
while(1)
{

LED0 = !LED0;
delay();
delay();
LED0 = !LED0;
delay();
delay();
LED0 = !LED0;
delay();
delay();

}
}

 
Scoring disabled. You must be logged in to score posts.Respond to this message   
Cerne
(no login)
201.84.4.240

Re: OPSSS!!

No score for this post
July 19 2007, 5:21 AM 

Bom dia,

Sim, o CCS funciona em qualquer sistema operacional. Além disso, o mesmo gera o código com a extensão .hex, que pode ser usado por qualquer gravador.

Att,
Cerne Tec
www.cerne-tec.com.br

 
Scoring disabled. You must be logged in to score posts.Respond to this message   

(no login)
200.172.212.132

PIC18F258

No score for this post
July 19 2007, 1:40 PM 

sim cosegui gerar o codigo olha ele mais agora como vou gravar,
o palca que eu estou usando ea picstart plus, eu tava tentando usar o piclab para gravar mais não consegui ele não tem a opção de PIC18F258 só PIC16F! você tem outro recursó para gravar este pic!
o código que estou usando e esse !

#include <18f258.h>

#device adc=10 // Configura o compilador para conversor A/D de 10 bits
#use delay(clock = 4000000)
#fuses XT, NOWDT, PUT, NOBROWNOUT, NOLVP



void delay (void) // faz uma pequena pausa
{
unsigned int i;

for (i = 0; i < 60000; i++)
;
}
void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);



SET_TRIS_B(00000000);
output_low(PIN_B0);
delay();
delay();
delay();
delay();
while(1)
{

INPUT(PIN_B0);
delay_ms(2000); // o delay aguarda 2000ms
delay();
delay();
delay();
delay();
delay();
output_low(PIN_B0);
delay_ms(2000); // o delay aguarda 2000ms
delay();
delay();
delay();
delay();
INPUT(PIN_B0);
delay_ms(2000); // o delay aguarda 2000ms
delay();
delay();
delay();
delay();
output_low(PIN_B0);
delay();
delay();
delay();
delay();
}
}


 
Scoring disabled. You must be logged in to score posts.Respond to this message   
Cerne
(no login)
201.84.4.240

Re: PIC18F258

No score for this post
July 19 2007, 1:43 PM 

Boa tarde,

Temos um gravador de baixo custo que pode resolver o seu problema, é o gravador GPPIC que pode ser visualizado no site da cerne, www.cerne-tec.com.br na seção gravadores - > PIC.

Att,
Cerne
www.cerne-tec.com.br

 
Scoring disabled. You must be logged in to score posts.Respond to this message   


(Login dcssl)
200.172.212.132

Linha de código

No score for this post
July 23 2007, 6:22 AM 



olha estou com uma duvida se o micro controlador que estou usando esta queimado, pois tudo o que eu tento fazer não funciona, vou falar o que tenho que faze para ligar o LED

1º primeiro fazer um include contendo o biblioteca do PIC no caso "p18f258.h".
2º depois determinar o clock do meu oscilador, falar que ele e do tipo XT.
3º depois se eu for usar delay usar a biblioteca dele que e "delays.h".
4º iniciar o programa usando o void main.
5º declarar que os portos B são de saída.
6º declarar que um determinado pino esta recebendo "0".
7º fazer um while para que o programa fique executando infinitamente.
8º dentro do while fazer o pino receber "1" que significa que ele vai emitir uma corrente pelo pino que eu determinei, e "0" que determina o que não vai sair corrente alguma onde eu determinei.
9º usa um contador ou delay para que a execução espere um tempo ou seja depois de ligar e desligar ele fique esperando um tempo para que ele faça outra coisa.

10º fim do programa.

ESTE EO CODIGO QUE AGORA ESTOU USANDO NO C CCS>>>>>>>

#include <18f258.h>

#use delay(clock = 4000000)
#fuses XT, NOWDT, PUT, NOBROWNOUT, NOLVP // So entendi que ele configura o oscilador apra tipo XT isso mais o resto eu não sei



void delay (void) // faz uma pequena pausa "Contador"
{
unsigned int i;

for (i = 0; i < 60000; i++)
;
}
void main()
{

setup_adc_ports(NO_ANALOGS); // Linha adicionada pelo proprio programa durante a criação do projeto.
setup_adc(ADC_OFF);// Linha adicionada pelo proprio programa durante a criação do projeto.
setup_spi(FALSE);// Linha adicionada pelo proprio programa durante a criação do projeto.
setup_wdt(WDT_OFF);// Linha adicionada pelo proprio programa durante a criação do projeto.
setup_timer_0(RTCC_INTERNAL);// Linha adicionada pelo proprio programa durante a criação do projeto.
setup_timer_1(T1_DISABLED);// Linha adicionada pelo proprio programa durante a criação do projeto.
setup_timer_2(T2_DISABLED,0,1);// Linha adicionada pelo proprio programa durante a criação do projeto.
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);// Linha adicionada pelo proprio programa durante a criação do projeto.


// ESSAS LINHAS ADD pelo programa não sei oque elas são e as dechei ond estavam!



SET_TRIS_B(00000000); // seta os pinos como saida
output_low(PIN_B0); // determina um voltagem no pino RB0
delay(); // faz um apequena pausa
delay();
delay();
delay();
while(1)
{

INPUT(PIN_B0); // desliga o pino RB0
delay_ms(2000); // o delay aguarda 2000ms
delay();
delay();
delay();
delay();
delay();
output_low(PIN_B0);
delay_ms(2000); // o delay aguarda 2000ms
delay();
delay();
delay();
delay();
INPUT(PIN_B0);
delay_ms(2000); // o delay aguarda 2000ms
delay();
delay();
delay();
delay();
output_low(PIN_B0);
delay();
delay();
delay();
delay();
}
}


>>>>>>>>>>>>>>>>>>>>>>>>>>>FIM>>>>>>>>>>>>>







Pergunta? >> o meu paço a paço ai esta correto e isso mesmo sem mais e nem menos! ou tem algo de errado!


Problema!!! o MPLAB não aceita "#use delay(clock = 40000000)" então eu estava tentando usar outro gravador para mais não achei nem um que ajudasse a grava via porta SERIAL isso ou USB isso na placa que eu falei antes.

Segundo antes quando eu gravava pelo MPLAB sem configurara o clock do oscilador todas as pernas do PIC estão saindo mais ou menos 4,5V e eu alimento com 5V, no caso de todos os códigos que eu tentei não consegui restringir nada
no PIC e ate agora a única coisa que eu tenho certeza e que eu não to conseguindo fazer nada do que eu quero com ele e já tem muito tempo que estou com ele o meu chefe já ta doido com migo esse PIC ta muito Complicado!



 
Scoring disabled. You must be logged in to score posts.Respond to this message   
Cerne
(no login)
201.84.4.240

Re: Linha de código

No score for this post
August 4 2007, 4:28 AM 

Bom dia,

Não está ligando pois vocÊ não está ligando o LED. O comando para ligar o led é output_high(PIN_B0) e não INPUT(PIN_B0).

Att,
Cerne

 
Scoring disabled. You must be logged in to score posts.Respond to this message   

(no login)
85.241.113.116

circuito para a pic 18f258

No score for this post
May 31 2008, 6:40 PM 

Gostaria de saber se alguem tem um esquema mais simples para fazer as ligaçoes da pi18f258 para a poder programar apenas...


ESpero por uma resposta....

 
Scoring disabled. You must be logged in to score posts.Respond to this message   
Current Topic - PIC18F258
  << Previous Topic | Next Topic >>Retornar ao Fórum  
Create your own forum at Network54
 Copyright © 1999-2009 Network54. All rights reserved.   Terms of Use   Privacy Statement