PIC18F4431 esta lento

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

PIC18F4431 esta lento

Mensagempor eagle_good » 02 Nov 2006 12:41

sou novato no pic e gostaria de saber porque o o PIC18F4431 esta tao lento....
compilei este programinha pra testar o PIC18F4431 e ele demora ...
algo estranho.... pisca depois de muito tempo..
Uso hitech 8.3 ......e num achei o 18f4431.h nele sera que falta algum setup via software...?....ou.....???


cpp code
#include <pic18.h>

#define PORTBIT(adr, bit)((unsigned)(&adr)*8+(bit))

//portb pin assignment
static bit LED0 @ PORTBIT(PORTB, 0);
static bit LED1 @ PORTBIT(PORTB, 1);
static bit LED2 @ PORTBIT(PORTB, 2);
static bit LED3 @ PORTBIT(PORTB, 3);
static bit LED4 @ PORTBIT(PORTB, 4);
static bit LED5 @ PORTBIT(PORTB, 5);
static bit LED6 @ PORTBIT(PORTB, 6);
static bit LED7 @ PORTBIT(PORTB, 7);

//global variables
unsigned int i; //for loop pause
unsigned int c; //for loop event loop

//functions
void pause_action(); //pause
void blink_redgreen(); //blink red then green
void blink_baf(); //blink red and green back and forth
void alt_blink(); //every other red then green
void blink_sequence(); //blinks red one at a time
//end functions

//main function
void main(void)
{
TRISA = 0x00;
TRISB = 0x00;
TRISC = 0x00;
TRISD = 0x00;

PORTA = 0b00000000;
PORTB = 0b00000000;
PORTC = 0b00000000;
PORTD = 0xFF;

while(1){
blink_redgreen();
blink_baf();
alt_blink();
blink_sequence();
}
}
//end main function

void pause_action()
{
for(i=0; i<4000; i++);
for(i=0; i<4000; i++);
// for(i=0; i<4000; i++);
// for(i=0; i<4000; i++);
// for(i=0; i<4000; i++);
//for(i=0; i<4000; i++);

}

void blink_redgreen()
{
for(c=0; c<10; c++)
{
PORTA = 0b10101010;
PORTB = 0b10101010;
PORTC = 0b10101010;
pause_action();

PORTA = 0b01010101;
PORTB = 0b01010101;
PORTC = 0b01010101;
pause_action();
}
}

void blink_baf()
{
for(c=0; c<10; c++)
{
PORTA = 0b10100101;
PORTB = 0b10100101;
PORTC = 0b10100101;
pause_action();

PORTA = 0b01011010;
PORTB = 0b01011010;
PORTC = 0b01011010;
pause_action();
}
}

void alt_blink()
{
for(c=0; c<10; c++)
{
PORTA = 0b10011001;
PORTB = 0b10011001;
PORTC = 0b10011001;
pause_action();

PORTA = 0b01100110;
PORTB = 0b01100110;
PORTC = 0b01100110;
pause_action();
}
}
void blink_sequence()
{
for(c=0; c<10; c++){
PORTB = 0b10010101;
pause_action();
PORTB = 0b01100101;
pause_action();
PORTB = 0b01011001;
pause_action();
PORTB = 0b01010110;
pause_action();
}
}
Editado pela última vez por andre_luis em 24 Mai 2014 10:51, em um total de 1 vez.
Razão: titulo mais descritivo
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP

Mensagempor a.rairan » 03 Nov 2006 01:59

Se não achou compilou pra qual uC?

Usa o C18, ele é ótimo, tem todos os PICs e funciona grátis por uum tempo, depois perde duas otimizações só...
André "Away" Rairan
a.rairan
Byte
 
Mensagens: 192
Registrado em: 11 Out 2006 18:53
Localização: São Caetano do Sul - SP - Brasil

Mensagempor Maia » 03 Nov 2006 15:04

Na versão 9.5 já tem o 4431. Se vc quiser eu te mando o include dele. Vc não disse como configurou os fusíveis dele. Quando à macro PORTBIT, ela é meio desnecessária pois todas as portas já estão definidas no include. É só usar, por exemplo:
#define RB0 LED0;
Se não conseguir resolver, me passe mais dados.
Abraços,
Maia
Avatar do usuário
Maia
Byte
 
Mensagens: 348
Registrado em: 15 Out 2006 16:25
Localização: Rio de Janeiro

Mensagempor eagle_good » 03 Nov 2006 15:55

Blz.......Galera ......
cheio de frescura ........esse tar de pic .....heim
estou acostumado com 8051 (este eh batuta heim... num tem esses tar de fuses e _config) .......demorou mas achei o problema......e eh o seguinte..
- Como uso o WINPIC800 para grava-lo eu nao sabia que precisava
clikar em Tab-> settings-> no HS para informa-lo que tenho um cristal externo de 20Mhz.
Ou seja....alem disso e preciso fazer o setup via intrução
_config(xxxx),....

como sou novato no pic ainda não sei como interpretar (configurar) as opções via _config.
Quero dizer que nao sei usar a intrução _config(xxxx);
Se alguem poder explanar eu agradeço.....

Hei maia.... se poder me enviar o include eu agradeço....tbem vou acatar a dica do andre e a tua de baixar a versao 9.5 pois a minha e 8.3 e num comporta o tar de 18F4431.....mais essa ainda...
embora fiz piscar corretamente o led ...estou usando pic18.h (generico) e no projeto com mplab IDE seto pro PIC18F452...qta gambearra.....
Sam eagle good
eagle_good
Bit
 
Mensagens: 32
Registrado em: 12 Out 2006 11:56
Localização: Americana - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x