Página 1 de 1
Pisca-pisca MIKROC PIC16F870

Enviado:
10 Jul 2008 09:37
por Kleber
void main() {
PORTB = 0x00; // Initialize PORTB
TRISB = 0x00; // Configure PORTB as output
while(1) {
PORTB.f0 = ~PORTB.f0; // toggle PORTB
Delay_ms(1000); // one second delay
}
}
Neste código, porquê o PORTB fica em "1" sendo que o inicializei com "0"? Utilizo o PIC16F870.

Enviado:
10 Jul 2008 09:49
por dreher
Cara, tenta mudar de PORTB.f0 para PORTB.F0, com o "F" maiusculo. Não sei se tem a ver, mas em todos os exemplos e no help do compilador, ele sempre se referencia aos bits dessa forma.

Enviado:
10 Jul 2008 12:00
por Kleber
dreher
Fiz por desencargo de consciência, não deu certo. Este compilador não é case sensitive.
Obrigado.

Enviado:
10 Jul 2008 14:23
por Sergio38br
boa tarde, vc esta medindo com pull-up externo ou esta em aberto as saidas??
vc pode tentar fazer apenas a negação do pino, tipo
- Código: Selecionar todos
PORTB.F0 = ! PORTB.F0
Sergio

Enviado:
10 Jul 2008 15:00
por Kleber
Sergio
As saídas estão sem resistores de pull-up e o mesmo acontece com o PORTA. Quanto a utilizar ! ou ~, acredito surtir o mesmo efeito. Ainda não testei, assim que fizer posto aqui.

Enviado:
10 Jul 2008 15:20
por Kleber
Datasheet
Each of the PORTB pins has a weak internal pull-up. A
single control bit can turn on all the pull-ups. This is performed
by clearing bit RBPU (OPTION_REG<7>). The
weak pull-up is automatically turned off when the port
pin is configured as an output.
O pull-up é desligado automaticamente quando a porta é configurada como saída. Vou ligar este bit RBPU pra ver se funciona.

Enviado:
10 Jul 2008 15:50
por andre_luis
A diferença do seu programa pro que eu fazia, é que eu definia o TRIS antes de acessar a Porta. Experimenta apenas inverter essa sequencia.
+++

Enviado:
10 Jul 2008 17:00
por ze
puts! levando uma surra de 1 bit? e o pior o menos significativo!!! aff!!
+ opções:
RB0^=1;
PORTB^=0b00000001;
PORTB.F0^=1; //ccs? eca!
verif se o danado não é compartilhado com + coisa. iniba esta coisa.
ôch!!

Enviado:
10 Jul 2008 17:50
por Jorge_Francisco
Ué cadê a minha resposta? Sumiu!!!!
Coloca o TRIS antes do valor na porta!!!

Enviado:
10 Jul 2008 21:28
por Kleber
Não adiantou coloca o TRIS antes do valor na porta.
É lellis estou levando um "baile" mesmo.rs Agora, não vale apelar colocando o restante do port como entrada, porque assim funciona. Quero todo o port como saída e somente RB0 piscando.
Notei que RB6 e RB7 comportam-se como o esperado, ou seja, ficam em zero.
Obrigado por enquanto pessoal!!!

Enviado:
11 Jul 2008 08:17
por Sergio38br
bom dia Kleber, pergunta basica voce esta usando uma placa da mikroelektronika??
Sergio

Enviado:
11 Jul 2008 09:02
por Kleber
Não, é uma placa da QSP tecnologia.

Enviado:
11 Jul 2008 09:19
por andre_luis
Sei que é apelação, mas....
Já esperimentou trocar o chip ?
+++

Enviado:
11 Jul 2008 09:26
por Kleber
Ainda não andre_teprom, mesmo porque não tenho outro aqui.
Engraçado que estive usando este port para controle de um display gráfico e funcionou, agora quando quero apenas piscar um led acontece isso.rs
O Daniel Quispe deu a sugestão de colocar o resto do port como entrada, aí funciona, mas quero ver como saída e permanecer em zero.

Enviado:
11 Jul 2008 09:58
por Kleber
Acabei de testar a alimentação que chega no PIC, 7V !
Irei substitui-lo semana que vem.
Ainda bem que resolvi medir antes de trocar o pic, senão seria mais outro queimado.rs
Obrigado pessoal!!!
obs.: Depois post o resultado quando trocar o pic e acertar a alimentação.