Autor Tema: A ver una ayuda con algo tonto  (Leído 2114 veces)

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

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
A ver una ayuda con algo tonto
« en: 18 de Julio de 2011, 13:21:32 »
A ver si podeis echarme una mano, no se porque no me funciona una seleccion con dos entradas A5 y A4
Os subo el programa y el ISIS
Mil gracias

#include <16F628.h>
#use delay(clock=20000000)
#fuses HS,NOWDT,MCLR,NOPROTECT,BROWNOUT,NOLVP

static int16 timer_count=0;           // timer1 sobrecarga del contador

byte valor; //valor de seleccion de los dos pines, va del 0 al 3, es decir 4 posibilidades

#INT_EXT       
void ext_isr()   
   {
   timer_count=0;         //resetea el contador del timer1
   }

#int_timer1                       //Esta funcion es llamada cada vez que
void timer_isr() {                     //timer1 sobrepasa (2^16).
    timer_count++;
    }

void main() {
   setup_timer_1( T1_INTERNAL | T1_DIV_BY_8 );  //inicializa timer1
   enable_interrupts(INT_TIMER1);  //activa la interrupcion de timer1
   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   ext_int_edge(H_TO_L);           //inicializa la interrupcion por cambio de estado de B0, Activa a nivel bajo
   enable_interrupts(INT_EXT);     //activa la interrupcion externa de B0
   enable_interrupts(GLOBAL);

   #use fast_io (A)
   #use fast_io (B)
 
 

loop:
{
      valor =(input(PIN_A4))+(input(PIN_A5)*2);
      switch(valor)
      {
      case 0:
      {
      output_high(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B2);
      output_low(PIN_B3);
      }
      break;
      case 1:
      {
      {
      output_high(PIN_B1);
      output_low(PIN_B0);
      output_low(PIN_B2);
      output_low(PIN_B3);
      }
      }
      break;
      case 2:
      {
     
      output_high(PIN_B2);
      output_low(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B3);
            }
      break;
      case 3:
      {
      {
      output_high(PIN_B3);
      output_low(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B2);
      }
      break;
      }
      }     
      }
goto loop;    //bucle de vuelta, espera a que se requiera una interrupcion
}

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: A ver una ayuda con algo tonto
« Respuesta #1 en: 18 de Julio de 2011, 13:55:11 »
  Hola Algec.
 
  Casi seguro tu problema es debido a que con los fuses estás activando la función MCLR y justamente dicha función utiliza el PIN RA5, así que no vas a poder usar dicho pin como I/O. O deshabilitas MCLR o utilizas otro pin para tu programa.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: A ver una ayuda con algo tonto
« Respuesta #2 en: 18 de Julio de 2011, 15:20:19 »
Pues si, seguro, no me habia dado cuenta.
Para que es el MCLR?, no tengo ni idea, pero es que la base la cogi de un programa hecho ya.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: A ver una ayuda con algo tonto
« Respuesta #3 en: 18 de Julio de 2011, 15:24:43 »
  Son las siglas de MasterClear y es para poder resetear al micro externamente. En el datasheet vas a poder encontrar buena información.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: A ver una ayuda con algo tonto
« Respuesta #4 en: 18 de Julio de 2011, 15:34:58 »
Pues deberia ser eso, pero no, no funciona al menos en la simulacion. TE subo un pequeño ISis mas simple y claro para testearlo, con 4 leds que sacan salida en funcion de el valor que toman los dos pines A4 Y A5

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: A ver una ayuda con algo tonto
« Respuesta #5 en: 18 de Julio de 2011, 16:00:03 »
Si utilizas fast_io deberías definir la configuración I/O de los puertos. Caso contrario seguramente no se configurarán como lo necesitás, Probá eliminando primero las líneas de fast_io y, si funciona y lo deseas, luego agregalas junto a la configuración que te mencioné recién.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: A ver una ayuda con algo tonto
« Respuesta #6 en: 18 de Julio de 2011, 16:00:23 »
subiste el archivo de proteus, pero te falto el .hex o el .cof para poder probarlo
"Nada es imposible, no si puedes imaginarlo"

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: A ver una ayuda con algo tonto
« Respuesta #7 en: 18 de Julio de 2011, 16:53:22 »
A ver ahora

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: A ver una ayuda con algo tonto
« Respuesta #8 en: 18 de Julio de 2011, 17:06:41 »
cambia tus fuses; ponle:
#fuses HS,NOWDT,NOMCLR,NOPROTECT,BROWNOUT,NOLVP


y tambien quitale la interrupcion por pin b0, ya que lo estas usadno para prender un led, no como entrada
"Nada es imposible, no si puedes imaginarlo"

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: A ver una ayuda con algo tonto
« Respuesta #9 en: 19 de Julio de 2011, 04:09:29 »
Efectivamente ahora si, Pense que solo tenia que quitar el MCLR , no sabia que habia que poner El NOMCLR.
Lo de la interrupcion es que quedo del programa origen,
Mil gracias de nuevo


 

anything