Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

24/04/2009 #1


Mi pic no cuenta bien el tiempo
ola buenos dias
escribo a ver si alguien me soluciona una duda.
Uso pbp y un pic 16f88 y tengo un problema cuando en pbp pongo

pause 1000 en vez de un segundo me espera derca de un minuto....

aqui dejo el codigo a ver si es por algun error.
uso el oscilador interno del F88

Código:
'****************************************************************
'*  Name    : Semaforo .BAS                                     *
'*  Author  :Ies La Serena 4º ESO A "tecnologia" Grupo A        *
'*  Notice  : Victor Romero Fernandez                           *
'*          : Yostin Garcia Arias                               *
'*  Date    : 21/04/2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :Cruze con 4 Semaforos                              *
'*          :Version altenativa al Circuito con puertas logicas *
'****************************************************************
define osc  4
RA var PORTA.3 'rojo del semaforo A
AA var PORTB.1
VA VAR PORTB.2
RD VAR PORTB.3  ' rojo de los semaforos b y d
AD VAR PORTB.4
VD VAR PORTB.5
RC VAR PORTA.7  ' rojo del semaforo c
AC VAR PORTA.6
VC VAR PORTA.2

TRISA = 0 ' TODO EL PIC COMO SALIDAS
TRISB = 0 

TESTLED:'Prueba que todos los led funcionen
PORTA = %11111111
PORTB = %11111111 
PAUSE 1000
PORTA = %00000000
PORTB = %00000000

loop: 'comineza el programa
COMB1:
Va = 1   'Enciende los led correspondientes
Rd = 1
RC = 1
PAUSE 30000  'Espera el tiempo que le corresponde en milisegundos
PORTA = 0
PORTB = 0

COMB2:
VA = 1
RD = 1
VC = 1
PAUSE 30000
PORTA = 0
PORTB = 0

COMB3:

AA = 1
VA = 1
RD = 1
VC = 1
PAUSE 10000
PORTA = 0
PORTB = 0

COMB4:

RA = 1
RD = 1
VC = 1
PAUSE 20000
PORTA = 0
PORTB = 0

COMB5:

RA = 1
VD = 1
RC = 1
PAUSE 30000
PORTA = 0
PORTB = 0

COMB6:
RA = 1
AD = 1
VD = 1
RC = 1
PAUSE 10000
PORTA = 0
PORTB = 0

GOTO loop 'Vuelve a la etiqueta loop( vuelve a empezar la secuencia)
24/04/2009 #2


todas los demas pause te dan esperas correctas?
24/04/2009 #3


no siempre me cuenta muchusimo.

en el segundo pause el 30000 lo he apagado tras mas de 40 min sin que cambiase
no se que puede estar pasando. probé tambien con un 16f628a y me paso lo mismo
24/04/2009 #4


hola ,,sacale un cero al 1000 o fijate de configirar bien el prescalar y el oscilador interno a maxima velocidad
ahi no se ve que lo configuraste,quiizas esta a minima y te cuenta lentoooooo,saludos




no siempre me cuenta muchusimo. (((hace esto desactiiva los comparadores y con figura bien el osc interno a 4 mhz))
y te va a andar bien saludos
25/04/2009 #5


me prodrias explicar como hago eso que me pides?
muchas gracias..
25/04/2009 #6

Avatar de cevollin

pues para definir el clock usa esta instruccion

DEFINE OSC 4 frecuencia de relog a 4Mhz
CMCON = 0x07 comparadores a off
ANSEL = 0x00 pines I/O digitales no analogicos
25/04/2009 #7


ya cevolllin me gano ,,pero creo que el 16f88 el osc maximo es de 8 mhz proba cual de los dos te sirva mas
4 o 8 ,,ya ahi te va a tener que funcionar ,cualquier cosa avisa ,,saludos
26/04/2009 #8


pues no me funciona creo que tengo un problema en los fuses a ver si estan bien.

wtd = 1
mclre = 0
code protect rom = 0
oscillator = INTRC_IO
debuj = 0
lvp = 0
swich over mode = 0
pwrte = 0
boden = 1
code protect epp = 0
ccpmx = ccp1 rb0
flash write protect = 0
fail safe = 1
26/04/2009 #9


los fuses no son

para el 16F88 tenes que configurar el registro OSCCON los bits 4,5 y 6 a 111 para oscilador interno a 8 Mhz. Con 110 trabaja a 4 mhz
osea osccon=0x76 para 8 mhz
osccon=0x66 para 4 mhz


a y desactiva los comparadores cmcom=0x07 en el banco 1
saludos
14/12/2009 #10


Respuesta: Mi pic no cuenta bien el tiempo
hola Man estoy en los mismos problemas, yo trabajo en el pic simulato ide, que tambien es lenguaje basic y tengo el mismo problema, le doy waitms 500 y se cuenta a un minuto, no se si sea el oscilador interno o derrepente un problema en los fuses si hallo solucon avisare,

Hola de nuevo es raro pero parese ser un problema del logaritmo del basic, cuantro tabajo con el waitus en cantidades de 20000 por ejemplo para 2 seg, trabaja muy bien, asi que solucion por el momento trabaja con pausas de Us y si necesitas mucha cantidad dale bucles, y prueva versiones mas reciente de tu programa para ver si han solucionado el problema
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.