Posible problema con configuration Bits?

Hola, antes que nada decir que he estado leyendo y mirando apnotes de microchip pero no llego a tener muy claro el asunto, despues de casi 1000 lineas de codigo le doy a programar y jeje, nada, seguro que el problema es leve, pero aun asi...

Voy a usar un cristal externo de 6MHz conectado a las patillas 1 y 2 de mi PIC16F677, con sus condensadores ceramicos de 18pF a tierra,
Tendo unas dudas, uso MPLAB IDE 8.0, en la opcion: Configure->Configue bits, si desmarco la opcion "configuration bits set in code",es decir que le indique toda la configuracion desde ahi,¿no tengo que incluir nada que haga mencion a los "configuration bits" en mi codigo,cierto?
Como tengo un cristal de 6MHZ tengo que usar la opcion HS,quiero que mi timer1 aumente 1 de cada 8 pulsos de mi reloj externo, esto lo hago poniendo a 1 T1CKSP<1:0>, el caso es que no me funciona, he puesto al final de iniciar las variables un simple BSF PORTC,5 para ver si me prende ese pin, pero no lo hace, o sea que no creo que ni siquiera empiece.
Pongo aqui el codigo de mi iniciacion de funciones:
Porque con esl Stimulus no se si llego a aclararme, en Settings le he puesto 6Mhz, en el workspace le he asigando el OSSC1, y en cycles, supongo que será 1 en high y otro 1 para low,,cierto?:
Ahi va mi maltrecho codigo:
org 0x0000
goto 0x0005
org 0x0004
goto decide
org 0x0005

inicio
bcf 0x77d,2
bsf 0x77d,1
bcf 0x77d,0
bcf STATUS,RP0
bcf STATUS,RP1; Situarnos en el ----BANCO 0----------
bsf T1CON,TMR1CS; (CAMBIAR LUEGO!) oscilacion externa=1,interna=0
bsf INTCON,GIE; Activa interrupciones generales
bsf INTCON,PEIE ;Activa las interrupciones por perfericos externos
bsf INTCON,RABIE ;Activa las interrupciones on change A/B
bsf T1CON,TMR1ON
bsf T1CON,TMR1CS
bsf T1CON,T1CKPS0
bsf T1CON,T1CKPS1 ;usar la division 1:8 para el timer1
bsf STATUS,RP0
bcf STATUS,RP1 ; ------------BANCO 1--------
bsf OSCCON,OSTS
bcf OSCCON,SCS
bsf PIE1,TMR1IE ;para poder utilizar el timer1 interrupcion
bsf TRISA,TRISA0 ;tecla arriba como entrada
bsf TRISA,TRISA1 ;tecla abajo como entrada
bsf TRISA,TRISA2 ;tecla mas como entrada
bsf TRISA,TRISA3 ;tecla menos como entrada
bsf TRISB,TRISB5 ;cruce por cero
bcf TRISC,TRISC1 ;FUNCION RS DISPLAY
bcf TRISC,TRISC2 ;FUNCION E DISPLAY
bcf TRISC,TRISC3 ;----DATO1 HACIA EL DISPLAY----
bcf TRISC,TRISC4 ;----DATO2 HACIA EL DISPLAY---
bcf TRISC,TRISC5 ;CONTROL TRIAC
bcf TRISC,TRISC6 ;----DATO3 HACIA EL DISPLAY---
bcf TRISC,TRISC7 ;----DATO4 HACIA EL DISPLAY---
bsf STATUS,RP1
bcf STATUS,RP0 ;-------------BANCO 2---------------
clrf ANSEL
clrf ANSELH
bsf IOCB,IOCB5 ;para poder utilizar el cruce po cero como interrupcion
bcf STATUS,RP0
bcf STATUS,RP1 ;-------------BANCO 0---------------
CLRF minutos
CLRF horas
CLRF segundos
CLRF cuartos
CLRF wakeh
CLRF wakem
clrf modo
movlw 0x00
movwf TMR1H
movlw 0x01
movwf TMR1L
BSF PORTA,5

P.D. disculpen la redundancia pero se me escapa algo y por mas que miro no lo encuentro, gracias de antemano a todos.....



Ah , cuando le doy grabar bien desde el pickit2 o bien desde el mplab ide, a veces me da un error del tipo:

Programming Target (17/04/2009 18:56:55)
Erasing Target
Programming Program Memory (0x0 - 0x443)
Verifying Program Memory (0x0 - 0x443)
PK2Error0027: Failed verify (Address = 0x0 - Expected Value 0x2805 - Value Read 0x3FE0)
PICkit 2 Ready
 

Adjuntos

  • design_small_166.jpg
    design_small_166.jpg
    85.1 KB · Visitas: 69
Tendo unas dudas, uso MPLAB IDE 8.0, en la opcion: Configure->Configue bits, si desmarco la opcion "configuration bits set in code",es decir que le indique toda la configuracion desde ahi,¿no tengo que incluir nada que haga mencion a los "configuration bits" en mi codigo,cierto?

Cierto

Me fijé en el código de que encendes el TMR1 (bsf T1CON,TMR1ON ) pero despues lo seguís configurando con:

bsf T1CON,TMR1CS
bsf T1CON,T1CKPS0
bsf T1CON,T1CKPS1 ;usar la division 1:8 para el timer1

Primero configuralo y después encendelo.

También cuidado con

Como tengo un cristal de 6MHZ tengo que usar la opcion HS,quiero que mi timer1 aumente 1 de cada 8 pulsos de mi reloj externo, esto lo hago poniendo a 1 T1CKSP<1:0>, el caso es que no me funciona,

Si querés que se incremente cada 8 pulsos del reloj, tené en cuenta que al selector de reloj del TMR1 ingreso Fosc/4, es decir, ya tenés un divisor x4 incluído.
Entonces tendrías que dejar T1CKPS = 01 para que TMR1 se incremente cada 8 pulsos de oscilador.

Respecto a la programación con el pickit2, te da ese error a veces sí y a veces no?. De ser así me ha pasado que usando cables largos había problemas. También puede ser un error de conexión de los cables, en fin.
Indagando un poco más (Inicio->programas->microchip->MPLAB IDE xxx ->Documentation-> Pickit2 Release Notes) veo que el soporte de pickit2 para programar el pic16f677 es beta.
Fijate por ahí tenes que bajar una aplicación de programación y programar desde fuera del MPLAB:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
(ver downloads).

Saludos
 
Muchas gracias por la respuesta...
Entonces... si tengo un oscilador de cristal externo de 6 MHz y he esta configurado FOSC/4 y luego ademas tengo es prescaler en 1:8, se queda de esta forma?:6MHz / 4 /8 ? me vendria genial que asi fuera ya que quiero contar segundos y con el de 16 bits y 1:8 solo me llega a 340 mS

Para configurar la palabra de bits ahora lo hago de esta forma que creo que me da mas confianza:

List p=16f677
include "p16f677.inc"
__CONFIG 0x04D2

No se porque pero me inspira mas confianza, alguien tiene experiencias previas con este modo de funcionar?
Gracias de nuevo a toda la comunidad y en especial a Ardogan...
 
Atrás
Arriba