Error en frecuencimetro escrito con ccs simulado con proteus
| #1 Error en frecuencimetro escrito con ccs simulado con proteus |
| #2 |
|
lmct
|
Hola, no se si es tu caso, pero por si acaso te lo comento, la libreria lcd.c, no esta preparada para manejar el puerto c, para ello tiene que abrir dicha libreria y cambiar la direccion del puerto que por defecto es el "d" por el puerto "c"
#if defined(__PCH__) #if defined use_portb_lcd #byte lcd = 0xF81 // This puts the entire structure #else // #byte lcd = 0xF83 This puts the entire structure direccion puerto d anulada #byte lcd = 0xF82 // para gestionar el puerto c #endif #else #if defined use_portb_lcd #byte lcd = 6 // on to port B (at address 6) #else // #byte lcd = 8 on to port D (at address 8) anulada #byte lcd = 7 // para el puerto c #endif #endif aqui el codigo que tiene que modificar he anulado las lineas correspondientes al puerto d y he añadido las del puerto c por lo demas tiene que funcionar... no esta demasiado bien estructurado pero deberia funcionar. |
|||||||||||
|
|
||||||||||||
| #3 |
|
lmct
|
perdona me he dejado de poner el codigo corregido que esta mal
la funcion debe ser asi void escribir_pantalla(){ // NO HACE FALTA YA ESTA INICIALIZADO EN MAIN lcd_init(); lcd_gotoxy(1,1); // ASI NO FUNCIONA ESTO ES PARA EL PUERTO SERIE printf("%3Lu",freq); printf(lcd_putc,"%3Lu",freq); // esto es lo correcto hay que añadir el comando lcd_putc enable_interrupts(INT_EXT1); } Saludos |
|||||||||||
|
|
||||||||||||
| #4 |
|
dani_pic
|
Gracias por la respuesta, lmct, he cambiado lo que me dijiste y ahora cuando simulo con proteus me sale el siguiente mensaje de alerta:
"PC=0x442. The SCSx bits have been set. This feature is not modelled - the model continues to clock itself as before" Veo que el mensaje hace referencia a la linea de mi programa en la que paso los parametros del oscilador:
Tambien sale otro mensaje referente a la lcd que dice: "Controller received command whilst busy" Realmente ahora mismo no se que debo modificar para que se solucione, cualquier ayuda que me deis será de agradecer chicos. ¡Un saludo! |
|||||||||||
|
|
||||||||||||
| #5 |
|
lmct
|
Hola, que tal.
Bueno yo el proteus no lo manejo. Ha lo mejor no estoy en lo cierto, pero Setup_oscillator no forma parte del lenguaje CCS, en el archivo de cabezera ya hay algo como esto #use delay(clock=4000000), que es lo que define el clock. Pero a lo mejor setup oscillator forma parte del proteus no lo se. Tambien he observado que el el main no tienes el bucle cerrado, posiblemente el problema del display sea este pon esto para probar void main() { // SET_TRIS_E(0x0); setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_OFF|ADC_TAD_MUL_0); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); lcd_init(); setup_oscillator(OSC_4MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF); ini_timer(); enable_interrupts(INT_EXT1); enable_interrupts(GLOBAL); //añadido esto while (true) { // esto evita que se repitan las instrucciones de arriba, que ya han sido // inicializadas y da continuidad al programa } } Saludos |
|||||||||||
|
|
||||||||||||
| #6 |
|
ElVale
|
Haz que freq sea float y no long
|
|||||||||||
|
|
||||||||||||
| #7 |
|
dani_pic
|
Muy buenas,
Pues bueno, la cosa sigue sin ir, de momento el error que me da proteus sigue siendo el mismo referente al LCD: Controller received data whlts busy Está claro que la estoy liando en el codigo del CCS pero no tengo ni idea donde. Por cierto, lmct, en la version de CCS que manejo 4.038, usando el project wizard, te pregunta a que frecuancia trabajara el micro (en mi caso 4Mhz, utilizando el oscilador interno del 18f2520), así que no se si seguirá siendo necesario definirlo yo a mano ¡Saludos! EDIT: tambien he cambiado freq por un float ^^ |
|||||||||||
|
|
||||||||||||
| #8 |
|
lmct
|
Hola, bien pues vamos a probar esto a ver que pasa puede que el problema este en el formato de la variable. si esto funciona por lo menos sabras que el display esta bien. Pon esto justo encima del main. El problema puede estar en el tipo del formato de datos creo que faltan numeros.
printf(lcd_putc, "\f Frecuencimetro V1.1"); delay_ms(5000); tambien puedes probar a cambiar el formato he puesto mas digitos a ver si es que la variable es mas grande de 3 digitos y no la puede mostrar. He colocada 6 digitos, antes borro la pantalla, pon la variable en long printf("/f%06Lu",freq); Saludos |
|||||||||||
|
|
||||||||||||
| #9 |
|
dani_pic
|
Perdona por no responder antes, he estado aislado sin internet durante estos dias
Mañana tendré mi ordenador a mano con el proyecto y probaré lo que me has dicho a ver si funciona. Os contaré que tal ha ido. |
|||||||||||
|
|
||||||||||||
| #10 |
|
dani_pic
|
Nada chicos, que no funciona:
"Controller received command whilst busy" Os adjunto el proyecto en proteus tambien para que le echeis un vistazo a ver donde puede estar el fallo... Que desesperación... sin esto no voy a terminar el proyecto nunca ¡un saludo! |
|||||||||||
|
|
||||||||||||
|
| Otros temas de interés | |
|---|---|
| Contar pulsos en determinado tiempo | |
| Comenzar a contar desde 0 | |
| Sensor para contar monedas | |
| contador des(192) cuando llegue a cero no vuelva a contar | |
| Como conectar la 7490 para contar hasta 9 | |
| Foros de Electronica |
| ||
Cuestiones Elementales de Electrónica ||
Fuentes de alimentacion ||
Circuitos de radio ||
Diseño de circuitos en general || || Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión || || Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos || |
Site Map
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad

