Autor Tema: Ayudadme ya no se que hacer con el CCS.  (Leído 4673 veces)

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

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
Ayudadme ya no se que hacer con el CCS.
« en: 17 de Agosto de 2003, 03:48:00 »
Esto es una copia del post que puse en el foro de Conket, a ver si alguien me puede ayudar, ya que por aki pasa mas gente.

Hola tengo este ejemplo de programa hecho en C (ccs en mplab) lo compilo y lo simulo y me va de puta madre. La cosa viene cuando lo paso con el icprog al pic, sin activar ningun fuse. No hace nada, solamente se enciende un led fijo. La cuestion es que utilizo un oscilador tipo rc r=4k7 y c=100nanos o c=47 nanos. A ver si alguien me puede hechar una mano, gracias.

Este es el programa.

#include <16f876.h>
#use delay(clock=4000000)
#fuses NOWDT,RC
#byte port_b=06
#byte port_a=05


void main()
{
set_tris_b(0x00);
set_tris_a(0x01);
set_tris_c(0x00);

port_b=8;

while(TRUE)
{
if(input(PIN_A0))
rotate_left(&port_b,1);
else
rotate_right(&port_b,1);
delay_ms(1000);
}
}

Se me olvidaba lo tengo todo configurado como pone en esta pagina que es la que segui para el ejemplo que os he dado.

http://personal3.iddeo.es/calaza/piccurso.htm
He probado un programa que hice en ensamblador que enciende un led (como el coche fantastico) es un programa muy tonto , Esperad que pongo el listado :

LIST p=16F876

Org 0x00
TRISB EQU 0x86
PORTB EQU 0x06
STATUS EQU 0X03

movlw 0x00
movwf PORTB
bcf STATUS,6
bsf STATUS,5
MOVWF TRISB
bcf STATUS,5
PRINCIPIO
movlw 0x01
movwf PORTB
call TIEMPO
movlw 0x02
movwf PORTB
call TIEMPO
movlw 0x04
movwf PORTB
call TIEMPO
movlw 0x08
movwf PORTB
call TIEMPO
movlw 0x10
movwf PORTB
call TIEMPO
movlw 0x20
movwf PORTB
call TIEMPO
movlw 0x40
movwf PORTB
call TIEMPO
movlw 0x80
movwf PORTB
call TIEMPO
movlw 0x40
movwf PORTB
call TIEMPO
movlw 0x20
movwf PORTB
call TIEMPO
movlw 0x10
movwf PORTB
call TIEMPO
movlw 0x08
movwf PORTB
call TIEMPO
movlw 0x04
movwf PORTB
call TIEMPO
movlw 0x02
movwf PORTB
call TIEMPO
movlw 0x01
movwf PORTB
call TIEMPO
goto PRINCIPIO

TIEMPO:
movlw 0xAA
movwf 0x20
DECREMENTO:
decfsz 0x20
goto DECREMENTO
return

end

En este programa no le indicamos el tipo de oscilador, ni la frecuencia ni nada. Y me funciona perfectamente, por lo tanto el pic funciona bien. No se que coño pasa con el CCS pero ningun programa de los que hago en C me funcionan.

A ver si alguien sabe que puede ser. Quiero hacer un intento de microbot como proyecto. Asias a todos.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #1 en: 17 de Agosto de 2003, 10:38:00 »
Hola Chisu, espero que alguno de los muchachos que esta con C te de una mano, yo por mi parte, y pensando que el foro es didactico, le haría un par de cambios a tu programita...
primero, cuando cargas el valor al puerto, (que esta perfecto como lo haces), me parece mas VISIBLE para la lectura, en binario, es decir

movlw b"00000001"

y para no repetir tantas veces lo mismo al  llamar la subrutina de demora, es mas util emplear una tabla


otra forma mas simple es emplear rotacion del puerto, y verificar el bit C
de esta manera RRL  y RLF, obteniendo un programa muy cortito.....  solo digo esto en defensa del asembler ok?

un abrazo

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #2 en: 17 de Agosto de 2003, 11:59:00 »
Gracias todopic, pero no entiendo lo que quieres decir con que haga una tabla.

Desconectado hexapodo

  • PIC10
  • *
  • Mensajes: 35
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #3 en: 17 de Agosto de 2003, 13:51:00 »


hola,



no he programado pics en C pero me parace que la instruccion:
#use delay(clock=4000000)
le dice al compilador que vas a utilizar un reloj de 4Mhz.
y esto es muy distinto al reloj que tenés que es de 4k7...
....será por eso?   no sé, solo se me ocurre eso.

bye

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #4 en: 17 de Agosto de 2003, 22:47:00 »
Hola hexapodo, decirte que he probado el mismo programa sin el #use delay(clock=4000000) y tampoco me ha funcionado. A ver si a alguien le da por probarlo y le va. Pero a mi de ninguna manera, o , a ver si alguien pone algun ejemplo que funcione para probarlo yo (el findesemana), En fin que gracias.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #5 en: 28 de Agosto de 2003, 18:48:00 »
Hola chisu.

Veo que usas el PIC 16F876 y usas también RA0 como entrada digital. Necesitas programar previamente el PORTA como digital, de lo contrario te lo toma como analógico. Se hace así:

#byte ADCON1 = 0x9F
.
.
.
main()
{
      ADCON1=6;        // Entradas del PORTA todas digitales

Otra cosa, si en el programa utilizas una temporización, delay_ms(1000), por ejemplo, debes poner la directiva #use delay(clock=4000000) la cual informa de la frecuencia del cristal (en este caso 4MHz) y además permite usar correctamente las funciones delay_ms() y delay_us()

Si el programa está escrito en ensamblador también debes definir el PORTA como digital (registro ADCON1) si lo quieres utilizar como tal.

Creo que es esta la causa por la que no te funciona ningún programa en C

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #6 en: 29 de Agosto de 2003, 10:25:00 »
Rectificación, corrección:

Cuando se programa en ensamblador con un PIC 16F87x sí es necesario poner ADCON1=0x06 (Entradas PORTA digitales) de lo contrario el programa no funciona.

Creía que usando C de CCS también habría que indicarlo pero esta mañana he estado probando algunos ejercicios con el PROTEUS sin programar que las entradas son todas digitales y funcionan igualmente, debe ser que el compilador las toma así inicialmente, no lo sé...

El error debe ser el oscilador. Nunca he probado un oscilador RC.

Según Microchip:

Cext       Rext    Fosc @ 5V, 25°C

20 pF        5 k    4.61 MHz ± 25%
20 pF      10 k    2.66 MHz ± 24%
20pF     100 k    311 kHz ± 39%

100 pF      5 k    1.34 MHz ± 21%
100pF     10 k     756 kHz ± 18%
100pF   100 k    82.8 kHz ± 28%

300 pF      5 k     428 kHz ± 13%
300pF     10 k     243 kHz ± 13%
300pF   100 k    26.2 kHz ± 23%

Prueba a usar estos valores y mete en el #use_delay() la frecuencia correspondiente, por ejemplo #use_delay(756000)

Ya me dirás si funciona, me interesa saberlo.

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #7 en: 29 de Agosto de 2003, 10:46:00 »
Acabo de probar tu programa en PROTEUS con #use_delay(756000) y funciona correctamente

Un saludo

Desconectado Julian_24

  • PIC10
  • *
  • Mensajes: 11
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #8 en: 30 de Agosto de 2003, 23:17:00 »
Hola en el icprog hay una opcion para compilar con oscilador rc xt, o hs, no tendras marcada alguna que no  es?
de todos modos intenta poner algun cristal siempre sera mejor

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #9 en: 01 de Septiembre de 2003, 07:59:00 »
El de antes era yo que se me ha olvidado hacer el login.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #10 en: 01 de Septiembre de 2003, 08:53:00 »
Dos de 15pF.

Una pata del cristal con una pata de un condensador

La otra pata del cristal con una pata del otro condensador

La otra  pata de cada condensador a masa.

Por fin una de las patas del cristal al pin9 (OSC1/CLKIN) y la otra al pin10 (OSC2/CLKOUT) del PIC 16F876


Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #11 en: 01 de Septiembre de 2003, 22:07:00 »
Bueno quiero daros las gracias a todos, finalmente me ha funcionado con el cristal de cuarzo a 4Mhz. Lo único que no me hace bien es que solo rota hacia un lado, tanto si el pin A0 está a 1 o 0.

Pocher lo de el oscilador rc que me dijiste no lo he probado aun. Si lo pruebo te lo comento

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #12 en: 02 de Septiembre de 2003, 00:32:00 »
¿Hacia que lado te rota? Lo más normal es que a A0 no le llegue bien o el "1" o el "0"

Compruebalo con un voltímetro y seguramente el fallo estará en la conexión.

Si te apetece manda una figura de como tienes conectadas, tanto entradas como salidas.

Un saludo

Desconectado chisu

  • PIC10
  • *
  • Mensajes: 22
RE: Ayudadme ya no se que hacer con el CCS.
« Respuesta #13 en: 19 de Septiembre de 2003, 07:51:00 »
Bueno perdonadme por no seguir el hilo del post durante unas semanas, he estado un poco agobiado con el trabajo y algunas cosillas. Pocher quiero decirte que el micro enciende las luces del bit 7 hacia el bit 0; además la diferencia de potencial en la entrada A0 es de 4.96V, el esquema de conexiones lo pondré este fin de semana. Bueno pues hasta luego