TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: xufoo en 11 de Enero de 2011, 21:32:20
-
Hola a todos! Soy nuevo en el foro, y llevo ya un tiempo trasteando con PICs, pero a nivel de ensamblador, y hace poco que he empezado con CCS.
Entrando en materia...
#include <18F14k50.h>
#fuses INTRC_IO,CPUDIV1,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
void main() {
set_tris_c(0xF0);
while(1){
output_high(PIN_C5);
delay_ms(1000);
output_low(PIN_C5);
delay_ms(1000);
}
}
El código no hace más que encender y apagar un led, el problema es la temporización: si en el #use delay() uso cualquier valor, el led está
un segundo apagado y uno encendido; pero si pongo 8MHz, únicamente está medio segundo en cada estado :? He mirado en el hilo de bugs
pero no he encontrado nada...
Lo único que modifico es la tercera línea; estoy usando la versión 4.108 de CCS con un pic18f14k50.
Un saludo!!
-
Ese micro admite un amplio rango de frecuencias para su oscilador interno, deberías establecer la que quieres utilizar al principio de tu main, utilizando setup_oscillator()
-
Sí, he probado eso también pero con el mismo resultado: para cualquier frecuencia genera los retardos correctamente, excepto para la de 8MHz
-
Porque no miras en la lista de bugs oficial de CCS ?? :lol: :lol: :lol:
Aqui (http://www.ccsinfo.com/devices.php?page=versioninfo) esta!! :mrgreen: :mrgreen:
-
Ya he encontrado el problema...me sobra el #fuses CPUDIV1 (que pensaba que sería equivalente a no dividir, pero ese es NOCPUDIV :oops:), y como la frecuencia de 8MHz es la que coge en caso de usar el módulo CPUDIV, es la única con la que me daba el error...por si le sirve a alguien!
De todas formas gracias por la ayuda!