Página 1 de 1

Existe alguma coisa errada?

MensagemEnviado: 10 Mai 2007 21:15
por Bardelli
Olá All. Estou tentando usar o PIC12F509 configurado para OSCILADOR INTERNO. POrém o código abaixo não funciona apesar de compilar (simplesmente nada acontece). Alguém pode ver se eu cometi algum erro?. Abraços

#include <12F509.h>
#fuses INTRC,NOWDT,NOMCLR
#use delay (clock=4000000)

main(){
int i;
i=0;
while(i==0){
output_high(pin_b1);
delay_ms(1);
output_low(pin_b1);
delay_ms(1);
}




}

MensagemEnviado: 10 Mai 2007 21:30
por Flaviofrc
Eu faço um pouco diferente de vc , não sei se este é o erro mas......

#include <12F509.h>
#fuses INTRC,NOWDT,NOMCLR
#use delay (clock=4000000)

main(){
while(true){
output_high(pin_b1);
delay_ms(1);
output_low(pin_b1);
delay_ms(1);
}




}

MensagemEnviado: 10 Mai 2007 22:23
por Ledistor
O que está ligado no pino? Um LED? Se for aumente o delay, com 1ms você não vai ver nada.

MensagemEnviado: 11 Mai 2007 00:12
por Bardelli
Esta ligado um Osciloscopio!!!! :-)

Abraços

MensagemEnviado: 11 Mai 2007 07:23
por hemasc
olhe no 12F509.h se o oscilador interno está setado corretamente e não sei se é obrigatório mas não custa tentar setar o tris_b.

#include <12F509.h>
#fuses INTRC,NOWDT,NOMCLR
#use delay (clock=4000000)

main(){
set_tris_b(0x0);
int i;
i=0;
while(i==0){
output_high(pin_b1);
delay_ms(1);
output_low(pin_b1);
delay_ms(1);
}

MensagemEnviado: 11 Mai 2007 08:53
por painho
#include <12F509.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC //Internal RC Osc
#FUSES NOPROTECT //Code not protected from reading
#FUSES MCLR //Master Clear pin enabled

#use delay(clock=4000000)


void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

while(true){
output_high(pin_b1);
delay_ms(500);
output_low(pin_b1);
delay_ms(500);
}

}

MensagemEnviado: 11 Mai 2007 09:35
por andre_luis
só como teste, pode colocar a diretiva :
#use_standard_io

MensagemEnviado: 11 Mai 2007 10:26
por painho
acho que "#use_standard_io" nao altera muita coisa no CCS ele configura automaticamente isso e mas uma repetição de comando,
so em alguns caso vale usar “#use fast_io(X)” sendo X a porta q vc quer melhorar a velocidade da porta

MensagemEnviado: 11 Mai 2007 10:56
por andre_luis
poisé...mas na verdade, como mencionei, isso seria apenas em carater de teste, pois certificaria que o Bardelli nao estivesse cometendo algum erro na configuracao do TRIS, já que essa diretiva automatiza essa definição em tempo de execução.

+++

MensagemEnviado: 11 Mai 2007 14:18
por zielpunkt
Amigo,

Esse osciloscópio que fala é real ou seria o do Proteus? Pq se estiver simulando no Proteus, tem que jogar algum valor no endereço onde ele busca o valor pro osccal (tipo '#rom 0x3ff = { 0xNNNN }', senão não funciona. Qquer forma, o código com variavel "i" e "while i==0" estão ali de enfeite, bastava "while(true)", mas isso também não afeta em nada. Fora isso, não parece ter nada errado com o seu código.

Abço.

MensagemEnviado: 12 Mai 2007 13:33
por Bardelli
Olá.

O osciloscópio é real.

Eu tentei todos os códigos que vcs passaram e não funcionou. Eu acredito que realmente seja algum Bug do CCS em relação a configuração do Oscilador Interno desse Componente. Eu tenho certeza que o problema não é com a placa, pois já utilizo o pic faz alguns anos. Vou tentar escrever um código com outro compilador e ver oque vai dar...

abraços

MensagemEnviado: 14 Mai 2007 13:57
por Bardelli
Olá All

Dito e feito. O problema éra realmente um bug do compilador

Compilador com Bug: CCS PICC V3.242

Compilador ok: CCS PICC V.4.013


Obs: O mesmo código foi usado para as duas versões.., porém o pic só funcionou para a Vers]ao 4.013

abraços e obrigado a todos pelas opiniões.