Autor Tema: comportamiento rarisimo salidas del pic  (Leído 1571 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado rodrigo_pinilla

  • PIC10
  • *
  • Mensajes: 11
comportamiento rarisimo salidas del pic
« en: 22 de Marzo de 2015, 01:49:07 »
Lo que pasa es que estoy probando los pines A1, A2, y A3 conectando un led en ellos pero funcionan extraño, si hago asi no prenden:

Código: [Seleccionar]
#include <16F88.h>

#FUSES nomclr    //sin reset             
#FUSES intrc      //esto usa el cirstal interno del pic               

#use delay(clock=1000000)  //cristal a 1 megabit de velocidad

#byte portb=6   //declaro la ubicasion del puerto b
#byte porta=5   //la ubicasion del puerto a

#byte a1= pin_a1   //declaro el pin a1

#byte a2= pin_a2   //el pin a2
#byte a3= pin_a3   //el pin a3

void main()
{

inicio:

a1 = 1;
a2 = 1;   //prendo los leds
a3 = 1;

delay_ms(1000);  // espero 1000 segundos

a1 = 0;
a2 = 0;   //apago los leds
a3 = 0;

delay_ms(1000);  // espero 1000 segundos

goto inicio;
}


pero si hago asi si funciona:

Código: [Seleccionar]

inicio:

porta = 1;
delay_ms(1000);
porta = 0;
delay_ms(1000);

goto inicio;

lo malo es que asi se activan todos los pines del puerto a y yo solo quiero activarlos de a uno, como le hago?????

y otra cosa es que se deberian prender y apagar cada 1 segundo, pero lo hacen muchisimo mas rapido, a que se debe???
« Última modificación: 22 de Marzo de 2015, 01:51:57 por rodrigo_pinilla »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: comportamiento rarisimo salidas del pic
« Respuesta #1 en: 22 de Marzo de 2015, 02:00:46 »
Mi recomendacion, por que veo que estas teniendo muchos problemas es que uses XC8 y no CCS

Ahi vas a manejar los registros directamente y no esa funciones que tiene CCS, si queres seguir con CCS entonces usa el manual.
Busca en google "CCS manual" y el primer pdf que sale es. esta en ingles pero esta todo.

y lo que vos buscas es un

#define a1 pin_a1
« Última modificación: 22 de Marzo de 2015, 02:15:10 por KILLERJC »

Desconectado rodrigo_pinilla

  • PIC10
  • *
  • Mensajes: 11
Re: comportamiento rarisimo salidas del pic
« Respuesta #2 en: 22 de Marzo de 2015, 02:18:05 »
bueno el proyecto lo tengo que hacer con el ccs :(  .. a que te refieres con las funciones que tiene el ccs??

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: comportamiento rarisimo salidas del pic
« Respuesta #3 en: 22 de Marzo de 2015, 02:21:08 »
Me refiero a las funciones , directivas de prepocesamiento etc.

#byte
Syntax: #byte id = x

Elements: id is a valid C identifier,

x is a C variable or a constant

Purpose: If the id is already known as a C variable then this will locate the variable at address x. In this case the
variable type does not change from the original definition. If the id is not known a new C variable is created
and placed at address x with the type int (8 bit)


En resumen lo estas usando mal. Por eso decia que lo que buscas es un #define

Desconectado rodrigo_pinilla

  • PIC10
  • *
  • Mensajes: 11
Re: comportamiento rarisimo salidas del pic
« Respuesta #4 en: 22 de Marzo de 2015, 02:26:39 »
una cosa mas, en donde dice:

#use delay(clock=1000000)  //cristal a 1 megabit de velocidad

tiene que ser a 1 megabit o puedo ponerle menos velocidad? probe con varias velocidades y eso hace que los leds enciendan a diferentes velocidades, pero no lo hacen cada segundo, como calculo el valor correcto para que los leds enciendan cada segundo??

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: comportamiento rarisimo salidas del pic
« Respuesta #5 en: 22 de Marzo de 2015, 02:45:26 »
Eso depende del cristal/oscilador que estes usando...
Veo que tus fuses pones que es el cristal interno

El valor que pones alli no es para que el micro funcione a esa velocidad. Sino es para que funcionen correctamente las funciones delay_ms().
En los delays el micro se pasa haciendo Nada ( NOP ), la cantidad de estas instrucciones depende de la velocidad de tu oscilador, una instruccion se ejecuta en Fosc/4, si tenes un cristal o oscilador interno de 8Mhz, cada instruccion se realiza cada 0.5us
Si quisieras 1 segundo de espera son : 2 millones de ciclos o instrucciones de 1 solo ciclo. Ahora si tu oscilador fuera de 4Mhz le llevaria 1 millon de ciclos. Ese calculo lo hace con lo que definis en delay(clock=xxxxxx)


Dependiendo del valor que tenga en el registro OSCCON
en los bits IRCF<2:0>: Internal RC Oscillator Frequency Select bits

Podes elegir la frecuencia:

000 = 31.25 kHz
001 = 125 kHz
010 = 250 kHz
011 = 500 kHz
100 = 1 MHz
101 = 2 MHz
110 = 4 MHz
111 = 8 MHz


Dice que en el restart esta en 000 , trata de ponerle el valor 0x70 al registro OSCCON asi queda en 8Mhz, y luego ahi donde dice clock pones 8000000
« Última modificación: 22 de Marzo de 2015, 05:03:57 por KILLERJC »

Desconectado rodrigo_pinilla

  • PIC10
  • *
  • Mensajes: 11
Re: comportamiento rarisimo salidas del pic
« Respuesta #6 en: 22 de Marzo de 2015, 11:42:08 »
bueno ya logre arreglar el problema de los pines, lo que pasaba esque lo tenia mal configurado:

en vez de
Código: [Seleccionar]
#byte porta=5   //la ubicasion del puerto a
#byte a1= pin_a1   //declaro el pin a1
#byte a2= pin_a2   //el pin a2
#byte a3= pin_a3   //el pin a3

es

Código: [Seleccionar]
#byte porta=5   //la ubicasion del puerto a
#bit a1= porta.1 //declaro el pin a1
#bit  a2= porta.2 //el pin a2
#bit  a3= porta.3 //el pin a3

solo era eso, que fastidio que el compilador no me diga ningun error

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: comportamiento rarisimo salidas del pic
« Respuesta #7 en: 22 de Marzo de 2015, 18:33:40 »
Vuelvo a decir... el compilador esta bien, vos seguis errandole de directivas.
« Última modificación: 22 de Marzo de 2015, 19:53:39 por KILLERJC »


 

anything