Autor Tema: Problema con EasyPic5  (Leído 4950 veces)

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

Desconectado lolix

  • PIC10
  • *
  • Mensajes: 4
Problema con EasyPic5
« en: 13 de Abril de 2008, 16:19:30 »
Hola a todos,

Me acabo de comprar la placa entrenadora EasyPic5, que viene con el PIC 16f877a

http://www.mikroe.com/en/tools/easypic5/

Me he probado todos los ejemplos que tienen y la verdad, la placa funciona muy bien, peor ahora es donde me viene mi problemilla.

Quiero desarrollar un programilla a en lenguaje ensamblador y para empezar un programilla tonto que encienda los LEDS
 
Genero el *.hex con el MPLAB, y cuando lo simulo con el PIC Simulator IDE, lo veo todo correcto, pero cuando programo el micro con el PICFlash (el software que me venia) el programa no hace nada... la verdad es que no se que estoy haciendo mal.

El programa es este... es bastante facilon:


        PROCESSOR 16f887a
        #include <p16f887.inc>
        __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
       
;***** Variable declaration *****

        Cblock    0x20                   ; First free RAM location
        endc                             ; No variables
       
;;***** Program memory structure *****

        ORG       0x00                   ; Reset vector
        goto      Main                   ; After reset jump to this location
       
        ORG       0x04                   ; Interrupt vector
        goto      Main                   ; No interrupt routine
Main   
   bsf STATUS, RP0
   movlw 0x00
   movwf TRISB
   bcf STATUS, RP0
   movlw     0xFF         ; W=FF
        movwf     PORTB                  ; Move W to port B
aLoop   
       goto      Loop                   ; Jump to label Loop

        End

Alguien sabe que me puede estar pasando?

No se, yo creo que el problema me viene con el MPLAB al generar el HEX, pero ya no tengo ni idea

Desconectado Duende_Azul

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 902
Re: Problema con EasyPic5
« Respuesta #1 en: 13 de Abril de 2008, 16:49:27 »
Te falta la a en el include, el 16f877 no es igual al 16f877a, prueba a ver...

Desconectado lolix

  • PIC10
  • *
  • Mensajes: 4
Re: Problema con EasyPic5
« Respuesta #2 en: 13 de Abril de 2008, 16:56:06 »
Al poner en el include el p16f877a me da este error:

Error[105]   C:\PROYECTOS\EJERCICIOS\EJ1\EJ1.ASM 7 : Cannot open file (Include File "p16f887a.inc" not found)

Pero el fichero p16f877a.inc existe y esta en la misma carpeta que el p16f877

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: Problema con EasyPic5
« Respuesta #3 en: 13 de Abril de 2008, 17:20:39 »
Que tal lolix!
Mira chequea bien lo del include que te menciona el amigo.

Lo otro es que debes revizar bien el manual de la Easypic5 ten cuidado con los switch que posee por todos lados no vaya hacer que el problema este alli  :mrgreen:

Saludos

Desconectado lolix

  • PIC10
  • *
  • Mensajes: 4
Re: Problema con EasyPic5
« Respuesta #4 en: 13 de Abril de 2008, 18:38:34 »
Si cargo un programa hecho con el mikroC si que se me iluminan los leds, del puerto que sea.... por eso no creo que sea de ningun switch de la placa, pero no se....

Alguien tiene el EasyPic o sabe si tengo que cambiar algun switch?


De todas formas revisare lo de los includes....que creo que iran por ahi lo tiros.

Desconectado Duende_Azul

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 902
Re: Problema con EasyPic5
« Respuesta #5 en: 13 de Abril de 2008, 23:27:48 »
Cual es el micro?  el 16F877a   o el 16F887?   los estas mezclando y ahí esta el problema.
Tambien debes tener presente el cristal que estas usando si es mayor a 4MHz, (por lo general los easypic vienen con uno de 8MHz), debes utilizar _HS_OSC.

Tambien pones un salto a la etiqueta Loop pero la etiqueta de arriba es aloop, tienen que ser iguales.

La cosa quedaria así:  con un cristal de 4MHz:

        PROCESSOR 16f877a
        #include <p16f877a.inc>
        __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
       
;***** Variable declaration *****

        Cblock    0x20                   ; First free RAM location
        endc                             ; No variables
       
;;***** Program memory structure *****

        ORG       0x00                   ; Reset vector
        goto      Main                   ; After reset jump to this location
       
        ORG       0x04                   ; Interrupt vector
        goto      Main                   ; No interrupt routine
Main   
   bsf STATUS, RP0
   movlw 0x00
   movwf TRISB
   bcf STATUS, RP0
   movlw     0xFF         ; W=FF
        movwf     PORTB                  ; Move W to port B
Loop   
       goto      Loop                   ; Jump to label Loop

        End



Recuerda que todos los compiladores de Microchip deben terminar el código con una linea en blanco para que compilen.
« Última modificación: 14 de Abril de 2008, 00:05:51 por Duende_Azul »

Desconectado Mad-Man

  • PIC10
  • *
  • Mensajes: 3
Re: Problema con EasyPic5
« Respuesta #6 en: 14 de Abril de 2008, 04:42:18 »
Buenos dias, yo tambien estoy aprendiendo esto de la programacion de microcontroladores, no he escrito todavia nunca aquí, por que considero que mi nivel, no es todavia suficiente como para empezar a preguntar cosas, primero tengo que aprender algo. Respecto a tu problemilla, comprueba tambien, que en el PicFlash, estes poniendo correctamente los fuses, por que a mi me ha sucedido que despues de realizar el programa en el MPLab, comprobar que esté correcto y todo, al grabarlo, no funciona, y era de no poner los fuses correctamente, ya que si grabas algo como dices, en mikroC, este ya le pasa los parametros en perfectas condiciones al picflash.
Yo tengo la EasyPic 4 y eso era lo que a mi me pasaba.
Un saludo y suerte

Desconectado lolix

  • PIC10
  • *
  • Mensajes: 4
Re: Problema con EasyPic5
« Respuesta #7 en: 14 de Abril de 2008, 18:46:51 »
Hola,

Al final salio.... al final tenia mal configurado los fuses del picflash...... bueno, la verdad es que ponia bien la configuracion, cargaba el HEX, con lo que me lo reconfiguraba mal y al escribir pues... eso... no me hacia nada.

Muchas gracias a tod@s

Desconectado Duende_Azul

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 902
Re: Problema con EasyPic5
« Respuesta #8 en: 14 de Abril de 2008, 19:42:09 »
Eso es raro pues yo he hecho programas en mplab y luego programo en el esaypic4 sin cambiar fuses en el picflash y funciona perfecto.

Desconectado arone

  • PIC10
  • *
  • Mensajes: 5
Problema con EasyPic5
« Respuesta #9 en: 09 de Octubre de 2009, 19:00:55 »
hola, tengo la placa entrenadora easypic5, ya probe el codigo de ejemplo para el display de siete segmentos que realiza cuatro demostraciones pero solamente activa dos, necesito que alguien me ayude, como hago para activarlos todos?, este es el codigo:

#include "Display_utils.h"

unsigned short shifter, portd_index;
unsigned int   digit, number;
unsigned short portd_array[4];

void interrupt() {
  PORTA = 0;                             // Turn off all 7seg displays
  PORTD = portd_array[portd_index];      // bring appropriate value to PORTD
  PORTA = shifter;                       // turn on appropriate 7seg. display

  // move shifter to next digit
  shifter <<= 1;
  if (shifter > 8u)
    shifter = 1;

  // increment portd_index
  portd_index++ ;
  if (portd_index > 3u)
    portd_index = 0;                     // turn on 1st, turn off 2nd 7seg.

  TMR0   =   0;                          // reset TIMER0 value
  INTCON = 0x20;                         // Clear T0IF
}//~

void main() {
  ANSEL       =    0;                    // Set AN pins to Digital I/O
  ANSELH      =    0;
  OPTION_REG  = 0x80;                    // Timer0 settings
  digit       =    0;
  portd_index =    0;
  shifter     =    1;
  TMR0        =    0;
  INTCON      = 0xA0;                    // Enable GIE, T0IE
  PORTA       =    0;
  TRISA       =    0;                    // Set PORTA as output
  PORTD       =    0;
  TRISD       =    0;                    // Set PORTD as output


  number          =  6789;              // some initial value
  do {
    digit = number / 1000u ;             // extract thousands digit
    portd_array[3] = mask(digit);        // and store it to PORTD array
    digit = (number / 100u) % 10u;       // extract hundreds digit
    portd_array[2] = mask(digit);        // and store it to PORTD array
    digit = (number / 10u) % 10u;        // extract tens digit
    portd_array[1] = mask(digit);        // and store it to PORTD array
    digit = number % 10u;                // extract ones digit
    portd_array[0] = mask(digit);        // and store it to PORTD array

    Delay_ms(1000);                      // one second delay

    number++ ;                           // increment number
    if (number > 999u)
      number = 0;

  } while(1);                            // endless loop
}