Autor Tema: Programacion en MikroC  (Leído 8322 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado proyecto2009utu

  • PIC12
  • **
  • Mensajes: 62
Programacion en MikroC
« en: 11 de Mayo de 2010, 12:43:08 »
Buenas he estado programando mis PIC´s 16F628 y 16F877 en mikroC, todo fenomeno hasta la simulacion en proteus
Pero el problema que tengo es al programarlos (utilizando los osciladores internos)
El Hardware no me realiza lo mismo que en la simulacion  :5]

No se si me estoy equivocando en las palabras de programacion, he probado programar en Winpic800 y icprog (programador JDM programer), pero sige sin funcionar

Le agradezco muchisimo si alguien me puede aydar!!!!

 :-/


Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Programacion en MikroC
« Respuesta #1 en: 11 de Mayo de 2010, 14:32:50 »
primeramente debes decir que version de MikroC estas usando es decir es la version Pro o la anterior, luego me gustaría que pongas el código y los bits de configuración que has elejido en el menú project/edit Project.

El problema con la simulación en proteus es que el PIC usa la frecuencia de oscilacion que tu pones en el cuadro de texto de las propiedades del PIC y muchas veces no le importa si usas un reloj externo o no.

Por lo general proteus da ese tipo de problemas, no siempre es recomendable dejarse llevar por la simulación, hay casos en los que la simulación no funciona del todo aunque si lo haga en la realidad.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado proyecto2009utu

  • PIC12
  • **
  • Mensajes: 62
Re: Programacion en MikroC
« Respuesta #2 en: 11 de Mayo de 2010, 16:06:33 »
Estoy utilizando la version mas vieja (aunque tambien tengo el MikroC Pro) estoy usando MikroC vresion 8.2

por el momento he echo un programa sencillo ya que soy nuevo en programacion en C

Código: [Seleccionar]
void  main() {

int      variable;

         TRISB = 0X00;    // pB salida
         TRISA = 0xFF;    // pA entrada
         PORTB = 0x00;
         PORTA = variable;

do {      if(PORTA==0X00)
             PORTB=0X01;
          if(PORTA==0X01)
             PORTB=0X02;
          if(PORTA==0X02)
             PORTB=0X04;
          if(PORTA==0X03)
             PORTB=0X08;
          } while     (1);
}

o lo que es lo mismo:

Código: [Seleccionar]
unsigned char salida[4] = {0x01,0x02,0x04,0x08};


void main(void) {

        TRISA=0XFF;      //PUERTO A ENTRADA
        TRISB=0X00;      //PUERTO B SALIDA

        PORTB=0x01;      //INICIALIZO AL PUERTO B CON 00000001b

while(1){
         PORTB=salida[PORTA];   //SELECCIONO EL VALOR DE B DESDE EL ARREGLO
}
}

y la configuracion en el proyecto que use es la siguiente:

_BODEN_OFF
_CP_OFF
_DATA_CP_OFF
_POWERATE_OFF
_WDT_OFF
_LVP_OFF
_MCLRE_OFF
_INTOOSC_ODC_NOCLKOUT

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Programacion en MikroC
« Respuesta #3 en: 11 de Mayo de 2010, 17:03:28 »
 :? pues al parecer todo está bien, lo que me gustaría saber cual es el error que te está dando, y tambien si has puesto resistencias de pull-up o pull-down a los pulsadores.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado proyecto2009utu

  • PIC12
  • **
  • Mensajes: 62
Re: Programacion en MikroC
« Respuesta #4 en: 11 de Mayo de 2010, 17:57:39 »
El circuito lo arme exactamente como en el circuito de proteus que adjunto

y el error que me esta dando, es que indepentientemente de lo que haga en los pulsadores tengo

RB0 ALTO - HIGH

RB(1,2,3,4,5,6,7) BAJO - LOW

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Programacion en MikroC
« Respuesta #5 en: 11 de Mayo de 2010, 20:53:17 »
 :? Prueba a poner los pines RA2 hasta RA7 como salidas y RA1 y RA2 como entrada

Código: [Seleccionar]
TRISA=3;
O pon los pines RA2..7 conectados a tierra, para que haya un 0 lógico.

 :? Posiblemente ocurra que las entradas desconectadas son leídas como 1 lógico, eso pasa con los dispositivos TTL.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado proyecto2009utu

  • PIC12
  • **
  • Mensajes: 62
Re: Programacion en MikroC
« Respuesta #6 en: 11 de Mayo de 2010, 21:09:48 »
Acabo de ponerle un puente directamente a tierra el resto de las entradas y sigue haciendo exactamtente lo mismo...

ademas si el programa coriera prerfectamente no importaria que estado tengo en el resto de las entradas, simplemente las que me interesan son RA0 Y RA1

 :?

francamente no se cual es el problema que tengo, hace una samana que estoy investigando...

Los codigos en assembler me funcionan pero en C no...... :5]

Desconectado tannke

  • PIC16
  • ***
  • Mensajes: 176
Re: Programacion en MikroC
« Respuesta #7 en: 12 de Mayo de 2010, 15:34:21 »
Muy buenas, nunca he utilizado los pic's que mencionas, tambien soy algo nuevo en esto, el que estoy utilizando actualmente es el pic16f88, y en MikcroC PRO, a parte de los bits de configuración, en el main tengo que configurar el ck interno:

Código: [Seleccionar]
OSCCON = 0x60;               //oscilador a 4 mhz      (.... 0x40 para 1 mhz   ....0x70 para 8 mhz)
   while (OSCCON.IOFS=0);        //esperar a estabilizar el oscilador

y por lo que comentas que en el proteus te va bien, tiene toda la pinta de poder ser esto, ya que almenos a mi, como dice bigluis, proteus pasa olimpicamente de la frecuencia que le he puesto en el pic y solo hace caso de la que tu le pones en la simulación.

Por otro lado, si importa el estado de el resto de las entradas, ya que en el codigo comparas el puertoA:
Código: [Seleccionar]
if(PORTA==0X00)
             PORTB=0X01;
imagina que tu en los 2 bits bajos pones '0', en teoria deberia saltar este 'if' pero si los bits altos que del porta no estan a masa y fueran leidos como '1' entonces porta no seria 0x00 sino que seria 0xFC (11111100)

Espero te sea util, un saludo
« Última modificación: 12 de Mayo de 2010, 15:48:57 por tannke »

Desconectado proyecto2009utu

  • PIC12
  • **
  • Mensajes: 62
Re: Programacion en MikroC
« Respuesta #8 en: 12 de Mayo de 2010, 23:39:12 »
Ya descubri cual era mi problema!!!

tenia que poner confugurar:
Código: [Seleccionar]
CMCON=0X07;           // Deshabilito comparadores

Muchas gracias por su ayuda!!!

me ayudaron mucho a reafirmar conceptos!

Saludos



 

anything