Autor Tema: Q se me olvida??  (Leído 2148 veces)

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

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
Q se me olvida??
« en: 29 de Diciembre de 2004, 05:23:00 »
Hola, a ver si alguien me exa una manita:

Toy empezando a programar en c, he cogido los ejemplillos q hay al principio del hilo del microcursillo en c y los he probado... con el 16f84 y el programador T20 ningun problema, compilo, programo, monto en placa (picdem 2 plus de microchip) y funciona, el problema viene cuando uso un 16f876...

De los programillas no toco nada excepto lo de include q pongo el 16f76, x ejemplo:

#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(B)

void main()
{
   while (1)
   {
        output_b(0xff);
          delay_ms(200);
        output_b(0x00);
          delay_ms(200);
   }
}

q creo q hizo pocher...
Lo he probado con el T20 programa bien, pero al ponerlo en placa no hace nada, pruebo a leer datos con el icprog y coincide, se graba bien teoricamente, pero no hace nada.
Lo pruebo con el icd2 de microchip + mplab, y lo mismo, compilo, programa, todo ok, pero al probarlo en la placa no hace nada.
Cojo cualquier programa.asm, hago lo mismo y funciona todo bien, tanto con el t20 q con el icd2.
Q me olvido al hacerlo en c??

Llorando

PD: Feliz Navidad!!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Q se me olvida??
« Respuesta #1 en: 29 de Diciembre de 2004, 06:08:00 »
Pues el programa no parece tener ningún error.

¿Dices que cuando cargas otros programas el PIC funciona?, ¿cómo sabes que funciona?, ¿se encienden los leds?

A ver si el problema lo vas a tener con el circuito.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Q se me olvida??
« Respuesta #2 en: 29 de Diciembre de 2004, 06:10:00 »
Creo que son los FUSES.

Dices que usas el Ic-prog.

Cargate (desactiva) los 3 FUSES que quedan (BODEN, LVP y WRT) de lo contrario no irá.

Un saludo

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Q se me olvida??
« Respuesta #3 en: 29 de Diciembre de 2004, 10:03:00 »
Gracias x los intentos, pero no resulta.

Nocturno66, se q el PIC y el circuito funcionan xq lo he probado con un programilla q tengo en ensamblador q enciende los leds y funciona, así q no creo q sea nada de hardware. De hexo estoy segura q el problema soy yo Muchas risas

Pocher, hice lo q dijiste, quité todos los fuses y programé de nuevo con el icprog, no da problemas, graba bien,lo quito y leo los datos con el icprog, y todo parece correcto... pero nada, es como si el PIC estuviera en blanco. Estoy segura q es cualquier chorrada de la configuración, pero no caigo en q puede ser.

NavidadNavidadNavidad

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Q se me olvida??
« Respuesta #4 en: 29 de Diciembre de 2004, 12:25:00 »
¿Qué compilador de C utilizas?.

Si quieres envíame el HEX por privado y te lo intento simular.

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: Q se me olvida??
« Respuesta #5 en: 29 de Diciembre de 2004, 12:54:00 »
El codigo esta bien Xelene, solo tienes que definir que es salida:
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#use fast_io(B)
void main()
{
while (1)
{
set_tris_b(0);
output_B(255);
delay_ms(200);
output_B(0);
delay_ms(200);
}
}
El Fast_ioX() REQUIERE que esten seteados los registros (Manual ccs, pag 62) es como usar en basic SET(no pone automaticamente el registro como entrada o salida) en lugar de HIGh(que pone automaticamente el resgitro trisX como salida y como entrada)

Salu2

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Q se me olvida??
« Respuesta #6 en: 29 de Diciembre de 2004, 12:59:00 »
Lager está en lo cierto.A mí me ha dado mas de un problema cuando no defino si el puerto va a ser entrada ó salida.
El set_tris_b(0) puedes ponerlo fuera del while mejor,con una vez que se ejecute es suficiente

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Q se me olvida??
« Respuesta #7 en: 30 de Diciembre de 2004, 01:11:00 »
Llevais razón, por intentar hacerlo tan corto se me había pasado.

Resumiendo, para que funcione:

- O se quita el fast_io(B) y se deja todo lo demás como está.

- O se deja el fast_io(B) y se añade en el main el set_tris_b(0x00)

Personalmente soy partidario de que en todos los programas se definan entradas y salidas con los correspondientes set_tris, así vamos a lo seguro. Además usando el fast_io se consiguen al compilar, menos instrucciones de programación en asembler ya que cada vez que en el programa se encuentre con un input o un output no se reprograma el puerto, solo se programa una vez con el primer input o output, cosa que no ocurre sin el fast.

Un saludo

PD. Edito y corrijo el programa en el microcursillo, aclarando estas dos opciones.

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Q se me olvida??
« Respuesta #8 en: 30 de Diciembre de 2004, 02:55:00 »
RebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotado

Pozi!! Toda la razón. He puesto el nuevo programa y funciona perfectamente tanto con icprog como con el mplab.

Gracias a todos x vuestra ayuda, sois los mejores!!! Sonrisa Gigante



 

anything