Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/08/2011 #1


Problema con pin_c6 configurado como salida digital || PIC18F4525
Hola buenas, estoy usando el puerto C como selector de columnas para una matriz de led, y para mi asombro, el pin C6 nunca cambia de estado, con lo que la 7ª columna nunca se enciende, he probado a intercambiar el cable que va del pic al C6 por el del C7 y funciona perfectamente.

Basicamente, consigo que todos los pines del puerto C se pongan a 1, excepto C6. (He hecho una chapucilla cambiando temporalmente el pin_c6 por pin_b1, pero realmente necesito usar el pin_c6)

Miré para que se puede usar el C6 en el datasheet, y solo sirve de Digital I/O,EUSART asynchronous transmit y EUSART synchronous clock (RX/DT). He mirado a ver si es que tenia que desactivar algo, pero no encontré nada.

Adjunto codigo fuente:
Código PHP:
#include <18f4525.h>

#fuses NOWDT
#use delay(clock=8000000)
#define value 0x0f    //(0xf = 4bits de profundidad)



int dutyr=0x0,dutyg=0x0,dutyb=0x0,cont=0,c=0;
int b0a=0,a4a=0,color=0;
int despl=0;

#int_timer2
void tmr()
{
   
int b0a4;     

   
b0=input(pin_b0);
   
a4=input(pin_a4);  
    if(!
cont)
   switch(
despl)
   {
      case 
:    output_c(0x00);
             
output_high(pin_c0);
             
despl++;
             break;   
     
      case 
:    output_c(0x00);
             
output_high(pin_c1);
             
despl++;
             break;   
      
      case 
:    output_c(0x00);
             
output_high(pin_c2);
             
despl++;
             break;   
   
      case 
:    output_c(0x00);
             
output_high(pin_c3);
             
despl++;
             break;   

      case 
:    output_c(0x00);
             
output_high(pin_c4);
             
despl++;
             break;   

      case 
:    output_c(0x00);
             
output_high(pin_c5);
             
despl++;
             break;

      case 
:    output_c(0x00);
             
output_high(pin_c6);
             
despl++;
             break;   

      case 
:    output_c(0x00);
             
output_high(pin_c7);
             
despl++;
             break;

      default :   
output_c(0x00);
               
despl++;
               if(
despl>0x0F)
                  
despl=0;
               break;   
      

   }

      
  if(
cont<=dutyr && dutyr!=0x00)
   
output_HIGH(pin_a0);
  else
   
output_low(pin_a0);
   
  if(
cont<=dutyg && dutyg!=0x00)
   
output_high(pin_a1);
  else
   
output_low(pin_a1);
   
  if(
cont<=dutyb && dutyb!=0x00)
   
output_high(pin_a2);
  else
   
output_low(pin_a2);

  if(
cont>=value)
   
cont=0;
  else
   
cont++;
     
  
c++;
  if(
c>=15)
   
c=0;

     

      
   if(!
b0&&!a4){}
   else
   {   
      if(!
a4 && a4a)
      {      
         
color++;
         if(
color>2)
            
color=0;
      
      }
      if(!
b0 && b0a)
         switch (
color)
         {
            case 
dutyr++;
                   if(
dutyr>0x0f)
                     
dutyr=0x00;
                   break;
            case 
dutyg++;
                   if(
dutyg>0x0f)
                     
dutyg=0x00;
                   break;
            case 
dutyb++;
                   if(
dutyb>0x0f)
                     
dutyb=0x00;
                   break;    
          }
   }
   
b0a=b0;
   
a4a=a4;   
}

void main(void)
{
  
  
setup_oscillator(OSC_8MHZ  |OSC_NORMAL OSC_PLL_ON);      
  
set_tris_a(0x00010000);
  
set_tris_b(0b00000001);
  
set_tris_c(0x00);  
  
setup_timer_2(T2_DIV_BY_150,1);
  
enable_interrupts(GLOBAL);
  
enable_interrupts(INT_timer2);
  
  while(
1);
 


29/08/2011 #2


creo que puede ser porque tienes activado el EUSART, entra en las opciones del proyecto y verifica que este desactivado, nose si sabes a que me refiero, donde puedes cambiar los puertos a out/in, o cambiar los timers
29/08/2011 #3


Todo solucionado, el problema era la placa de pruebas pic dem 2 plus, que tenia una soldadura mal hecha y el pin de la placa no hacia contacto
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.