TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: migsantiago en 08 de Octubre de 2005, 18:20:00

Título: 877A no trabaja bien
Publicado por: migsantiago en 08 de Octubre de 2005, 18:20:00
Hola

Hice un programa para checar la salida de los pines IO del 877A.

Programé como entrada el puerto B y lo que lea en él, saldrá en los demás puertos.

Conecté a RB0 una Resistencia a GND para asegurar el cero lógico. A RC0 conecté un LED que va a indicar el estado de RB0.

Pero el PIC no lo hace como debe ser.

¿Podrían revisar mi programa por favor?

#include "16f877.h"
#use delay(clock=8000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect
#use standard_io (a)
#use standard_io (b)
#use standard_io (c)
#use standard_io (d)
#use standard_io (e)

void main(void)
{
int valor;
SETUP_ADC_PORTS(NO_ANALOGS);
SETUP_ADC(ADC_OFF);

set_tris_a(0x00);
set_tris_b(0xff); //B salida
set_tris_c(0x00); //C salida
set_tris_d(0x00);
set_tris_e(0x00);

while(1){
valor=input_b();
output_a(valor);
output_c(valor);
output_d(valor);
output_e(valor);
}

}


Espero que esté bien, si no, mi programador ya anda fallando.

Gracias
Título: RE: 877A no trabaja bien
Publicado por: RaDoN en 09 de Octubre de 2005, 04:48:00
Si programas los puertos con la función set_trix_x, usa #use fast_io. Prueba y me cuentas.

Por cierto .. valor = input_b() ¿?¿ eso existe en CCS?
Título: RE: 877A no trabaja bien
Publicado por: migsantiago en 09 de Octubre de 2005, 12:22:00
Según la ayuda de CCS:



INPUT_x()
 
Syntax:
 value = input_a()
value = input_b()
value = input_c()
value = input_d()
value = input_e()

 Parameters:
 None

Returns:
 An 8 bit int  representing the port input data.

Function:
 Inputs an entire byte from a port. The direction register is changed in accordance with the last specified #USE *_IO directive. By default with standard I/O before the input is done the data direction is set to input.

Availability:
 All devices.

Requires
 Nothing

Examples:
 data = input_b();

Example Files:
 ex_psp.c

Also See:
 input(), output_x(), #USE xxxx_IO

 



Ya lo intenté, pero hace lo mismo.

¿Qué usarías  en vez de valor=input_b(); ?
Título: RE: 877A no trabaja bien
Publicado por: migsantiago en 09 de Octubre de 2005, 13:58:00
Ya sé que pasó... la falla está en el xtal de 8MHz, le puse uno de 4 y ya funcionó Ardiendo

Gracias radon Avergonzado
Título: RE: 877A no trabaja bien
Publicado por: Nocturno en 10 de Octubre de 2005, 00:01:00
Ah, claro, no me había dado cuenta antes. No puedes trabajar a 8 MHz con el fuse XT, tendrías que haber puesto HS.
Título: RE: 877A no trabaja bien
Publicado por: migsantiago en 10 de Octubre de 2005, 19:41:00
No te imaginas que frustrado estaba por no poder echar a andar un programa tan bobo... Muchas risas

Voy a ponerle HS ahora sí Rebotado
Título: RE: 877A no trabaja bien
Publicado por: RaDoN en 11 de Octubre de 2005, 08:45:00
Escrito originalmente por nocturno66
Ah, claro, no me había dado cuenta antes. No puedes trabajar a 8 MHz con el fuse XT, tendrías que haber puesto HS.


Se puede usar XT hasta 10 Mhz sin problemas.
Título: RE: 877A no trabaja bien
Publicado por: Nocturno en 11 de Octubre de 2005, 12:40:00
Puede que funcione sin problemas hasta 10MHz, pero la data dice que el XT hasta 4MHz y de ahí p"arriba el HS. De todas formas, no creo que sea crítico.