TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Ale_arzer en 07 de Marzo de 2011, 17:59:35
-
Hola a todos, bueno básicamente el problema que tengo es que estoy incursionando en el C y uso el compilador CCS y bueno, en la simulación de mi programa en Proteus, funciona, pero en la práctica no funciona el LCD que es un Winstar 1602B-YYH-ETK# y un PIC16F819, quizás haya algún error del que no me di cuenta, lo que si, modifique la librería para manejar el LCD con otros pines porque ya tenia una placa de pruebas con esas conexiones del LCD y porque leí en un post, que hay que cambiar los DELAY_CYCLES por DELAY_US, no sé si es correcto eso o no, por eso cuelgo primero la rutina mencionada y despues mi programa y si puedo la imagen de que la simulación funciona. También quiero decir que en assembler me funciona la pantallita .
///////////////////////////////////////////////////////////////////////////
//// LCDD.C ////
//// Driver for common LCD modules ////
//// ////
//// lcd_init() Must be called before any other function. ////
//// ////
//// lcd_putc(c) Will display c on the next position of the LCD. ////
//// The following have special meaning: ////
//// \f Clear display ////
//// \n Go to start of second line ////
//// \b Move back one position ////
//// ////
//// lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1) ////
//// ////
//// lcd_getc(x,y) Returns character at position x,y on LCD ////
//// ////
///////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,2007 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS C ////
//// compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, reproduction ////
//// or distribution is permitted without written permission. ////
//// Derivative programs created using this software in object code ////
//// form are not restricted in any way. ////
///////////////////////////////////////////////////////////////////////////
// As defined in the following structure the pin connection is as follows:
// D0 enable
// D1 rs
// D2 rw
// D4 D4
// D5 D5
// D6 D6
// D7 D7
//
// LCD pins D0-D3 are not used and PIC D3 is not used.
// Un-comment the following define to use port B
#define use_portb_lcd TRUE
// Esta parte es la que modifiqué puse rw RB1, rs RB2, enable RB3
struct lcd_pin_map { // This structure is overlayed
BOOLEAN unused; // on to an I/O port to gain
BOOLEAN rw; // access to the LCD pins.
BOOLEAN rs; // The bits are allocated from
BOOLEAN enable; // low order up. ENABLE will
int data : 4; // be pin B0.
} lcd;
#if defined use_portb_lcd
//#locate lcd = getenv("sfr:PORTB") // This puts the entire structure over the port
#ifdef __pch__
#locate lcd = 0xf81
#else
#locate lcd = 6
#endif
#define set_tris_lcd(x) set_tris_b(x)
#else
//#locate lcd = getenv("sfr:PORTD") // This puts the entire structure over the port
#ifdef __pch__
#locate lcd = 0xf83
#else
#locate lcd = 8
#endif
#define set_tris_lcd(x) set_tris_d(x)
#endif
#ifndef lcd_type
#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
#endif
#define lcd_line_two 0x40 // LCD RAM address for the second line
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
// These bytes need to be sent to the LCD
// to start it up.
// The following are used for setting
// the I/O port direction register.
struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in
BYTE lcd_read_byte() {
BYTE low,high;
set_tris_lcd(LCD_READ);
lcd.rw = 1;
delay_us(1);
lcd.enable = 1;
delay_us(1);
high = lcd.data;
lcd.enable = 0;
delay_us(1);
lcd.enable = 1;
delay_us(1);
low = lcd.data;
lcd.enable = 0;
set_tris_lcd(LCD_WRITE);
return( (high<<4) | low);
}
void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_us(1);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}
void lcd_send_byte( BYTE address, BYTE n ) {
lcd.rs = 0;
while ( bit_test(lcd_read_byte(),7) ) ;
lcd.rs = address;
delay_us(1);
lcd.rw = 0;
delay_us(1);
lcd.enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}
void lcd_init() {
BYTE i;
set_tris_lcd(LCD_WRITE);
lcd.rs = 0;
lcd.rw = 0;
lcd.enable = 0;
delay_ms(60);
for(i=1;i<=3;++i) {
lcd_send_nibble(3);
delay_ms(30);
}
lcd_send_nibble(2);
for(i=0;i<=3;++i)
lcd_send_byte(0,LCD_INIT_STRING);
}
void lcd_gotoxy( BYTE x, BYTE y) {
BYTE address;
if(y!=1)
address=lcd_line_two;
else
address=0;
address+=x-1;
lcd_send_byte(0,0x80|address);
}
void lcd_putc( char c) {
switch (c) {
case '\f' : lcd_send_byte(0,1);
delay_ms(2);
break;
case '\n' : lcd_gotoxy(1,2); break;
case '\b' : lcd_send_byte(0,0x10); break;
default : lcd_send_byte(1,c); break;
}
}
char lcd_getc( BYTE x, BYTE y) {
char value;
lcd_gotoxy(x,y);
while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low
lcd.rs=1;
value = lcd_read_byte();
lcd.rs=0;
return(value);
}
Acá dejo el programa:
#include "16f819.h" // Pic a utilizar
#fuses INTRC_IO,NOWDT,NOMCLR // Fusibles
#device adc=10 // Usa resolución de 10 bits
#use delay (clock=4000000) // Cristal a utilizar
#include <LCD.c> // Libreria para utilizar LCD por el puerto B
#use fast_io(B)
float Porcentaje, Medicion, Litros;
void main (void)
{
delay_ms(100);
lcd_init(); // Inicia LCD
delay_ms(100);
lcd_putc("Nafta\n");
lcd_gotoxy(10,2);
lcd_putc("Litros");
delay_ms(2000);
do{
output_high(PIN_B0); //Led para verificar que el programa esta corriendo
delay_ms(500);
setup_adc (adc_clock_internal);
setup_adc_ports (all_analog);
set_adc_channel (0); // Elige canal a medir RA0
delay_us (20);
Medicion=read_adc (); // Hace conversión AD
setup_adc (adc_off); // Apaga ADC
Porcentaje=(Medicion*100)/471; // Conversion a Porcentaje
Litros=(Medicion*27)/471; //Conversion a Litros
lcd_gotoxy(1,2); // Acomoda cursor LCD
printf(lcd_putc,"%02.1f",Litros); // xxx.x Litros
output_low(PIN_B0); //Led off
delay_ms(500);
}while (TRUE);
}
Bueno no sé como adjuntar una imagen despues si me dicen lo hago pero simulado funciona tal cual, marque la parte que modifiqué en rojo, será por el controlador de la pantalla que no es un Hitachi y es un KS0066?? en la compilación no me tira ningún error. Bueno, muchas gracias, espero sus respuestas.
-
Tendrías que mirar los datasheet de KS0066 y del HD44780. Yo estoy mirando la inicialización para bus de 4 bits y son diferentes entre ambos integrados.
-
Tendrías que mirar los datasheet de KS0066 y del HD44780. Yo estoy mirando la inicialización para bus de 4 bits y son diferentes entre ambos integrados.
Gracias por responder antes que nada. Pero el problema esta en otro lado, el PIC ni siquiera corre el programa, le he puesto el encendido del led conectado a RB0 al principio y al final del programa lo apago y no se apaga nunca, no sé cual es el problema en la simulación va perfecta, y en otro programa el PIC funciona, y en assembler la pantalla la manejo sin problemas. Intente agregando configuraciones del oscilador, también agregue la configuración del PORTB todo como salida, pero nada.
Dejo el programa que si corre:
#include <16f819.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,PUT
#use delay (clock=4000000)
#use fast_io(b)
void main(void)
{
set_tris_b(0xFE);
disable_interrupts(GLOBAL);
do{
output_low(PIN_B0);
delay_ms(500);
output_high(PIN_B0);
delay_ms(500);
}while(TRUE);
}
-
Te sugiero uses la libreria llamada flex_lcd es más fácil asignar los pines que tu desees manejar para el lcd.
Link: Libreria Flex_LCD (http://picmania.garcia-cuervo.net/picc.php#FLEXLCD)
-
Te sugiero uses la libreria llamada flex_lcd es más fácil asignar los pines que tu desees manejar para el lcd.
Link: Libreria Flex_LCD (http://picmania.garcia-cuervo.net/picc.php#FLEXLCD)
Muchas gracias por tu respuesta. Le voy a echar un ojo a esa rutina y probar con eso, no sé cual será el valor de la simulación en Proteus, pero ahí corre perfecto el programa y mi modificación para usar otros pines parece ser correcta, pero como digo, no sé si es totalmente fiable una simulación. Muchas gracias.
-
Hola Ale_arzer, en el último programita que pusiste de prueba no tienes el fuse NOMCLR. En el circuito tienes el pin MCLR conectado a V+? Por lo demás te debería funcionar. Para esta prueba, no es necesario que pongas la instrucción #use fast_io(b) ni set_tris_b(0xFE);
Saludos!
Edito: Para el programa inicial, como tienes conectado el LCD? Puedes subir el circuito?
-
Hola Ale_arzer, en el último programita que pusiste de prueba no tienes el fuse NOMCLR. En el circuito tienes el pin MCLR conectado a V+? Por lo demás te debería funcionar. Para esta prueba, no es necesario que pongas la instrucción #use fast_io(b) ni set_tris_b(0xFE);
Saludos!
Edito: Como tienes conectado el LCD? Puedes subir el circuito?
Hola, gracias por responder, no uso en mi placa el MCLR, por eso le pongo el NOMCLR por si era eso, y ademas en el winpic800 elijo la opción de no usar el MCLR. De poder puedo subir el circuito pero no sé como adjuntar una imagen aquí, el LCD lo tengo conectado, RW a gnd no lo uso, RS a RB2, ENABLE a RB3, D4-D7 conectado RB4-RB7.
-
Hola, gracias por responder, no uso en mi placa el MCLR, por eso le pongo el NOMCLR por si era eso, y ademas en el winpic800 elijo la opción de no usar el MCLR. De poder puedo subir el circuito pero no sé como adjuntar una imagen aquí, el LCD lo tengo conectado, RW a gnd no lo uso, RS a RB2, ENABLE a RB3, D4-D7 conectado RB4-RB7.
Hola, eso es justamente lo que te preguntaba, porque no pusiste NOMCLR en el último programita. También creo que te hace falta el fuse NOLVP. Poniéndole esos fuses ya te debería funcionar, de lo contrario tendrías que ver que no sea un problema de hardware.
Haces muy bien en intentar que te funcione primero con un LED. Luego que logres hacer funcionar el LED, para que funcione con un LCD, veo que tienes una versión vieja de la librería del LCD de CCS. Que versión de CCS estás usando? En las últimas versiones, puedes configurar los pines del LCD como te convengan.
Saludos!
-
Hola, gracias por responder, no uso en mi placa el MCLR, por eso le pongo el NOMCLR por si era eso, y ademas en el winpic800 elijo la opción de no usar el MCLR. De poder puedo subir el circuito pero no sé como adjuntar una imagen aquí, el LCD lo tengo conectado, RW a gnd no lo uso, RS a RB2, ENABLE a RB3, D4-D7 conectado RB4-RB7.
Hola, eso es justamente lo que te preguntaba, porque no pusiste NOMCLR en el último programita. También creo que te hace falta el fuse NOLVP. Poniéndole esos fuses ya te debería funcionar, de lo contrario tendrías que ver que no sea un problema de hardware.
Haces muy bien en intentar que te funcione primero con un LED. Luego que logres hacer funcionar el LED, para que funcione con un LCD, veo que tienes una versión vieja de la librería del LCD de CCS. Que versión de CCS estás usando? En las últimas versiones, puedes configurar los pines del LCD como te convengan.
Saludos!
Poner o no el NOMCLR me da el mismo resultado, el programita del led funciona perfectamente, porque la configuración también puedo modificarla en el entorno del winpic800, pero el programa de la LCD no corre. No puede ser problema de hardware ya que usando la misma LCD con el mismo PIC y placa, con un programa que hice en assembler funciona perfecto, que es lenguaje que use siempre pero me demoraba mucho entonces me pasé al CCS porque programaba en C en la PC, pero me da problemas en la práctica en las simulaciones no, es raro. Mi version de CCS es 4.068. Saludos
LCD funcionando con PIC16F819 en .ASM:
-
Poner o no el NOMCLR me da el mismo resultado, el programita del led funciona perfectamente, porque la configuración también puedo modificarla en el entorno del winpic800, pero el programa de la LCD no corre.
Hola, te aseguro que no es para nada lo mismo poner o no poner el NOMCLR en el circuito físico y por eso te pregunto: ya te funciona el programita del LED en el circuito real? Pusiste el fuse NOLVP? Por otro lado, veo que tu versión de CCS es algo vieja. La última versión del compilador CCS está en V4.119, sin embargo te debería funcionar con la librería LCD de esa versión. Del winpic800 te comento que no lo conozco. Creo que de momento lo importante es que hagas funcionar el LED en el circuito real y luego puedes ver lo del LCD.
Saludos!
-
Poner o no el NOMCLR me da el mismo resultado, el programita del led funciona perfectamente, porque la configuración también puedo modificarla en el entorno del winpic800, pero el programa de la LCD no corre.
Hola, te aseguro que no es para nada lo mismo poner o no poner el NOMCLR en el circuito físico y por eso te pregunto: ya te funciona el programita del LED en el circuito real? Pusiste el fuse NOLVP? Por otro lado, veo que tu versión de CCS es algo vieja. La última versión del compilador CCS está en V4.119, sin embargo te debería funcionar con la librería LCD de esa versión. Del winpic800 te comento que no lo conozco. Creo que de momento lo importante es que hagas funcionar el LED en el circuito real y luego puedes ver lo del LCD.
Saludos!
bmb, Ale_arzer quiere decir que le da lo mismo ponerlo o no en el código, porque después lo especifica manualmente en el WinPic800
-
bmb, Ale_arzer quiere decir que le da lo mismo ponerlo o no en el código, porque después lo especifica manualmente en el WinPic800
Hola AngelGris, la verdad ni siquiera se lo que es el WinPic800 :oops:, yo utilizo el MPLab para editar y compilar y programo con un ICD2; los fuses que escribo en el código de CCS al compilar son los que realmente pasan al PIC al programarlo, a menos que especifique (al menos en el caso del MPLab) que quiero usar los fuses de la configuración del MPLab (configuration bits). No se si será a eso a lo que se refieren con el WinPic800.
Saludos!
Edito: En todo caso, el asunto es que bien sea en el código o manualmente el fuse si se debe usar.
-
Poner o no el NOMCLR me da el mismo resultado, el programita del led funciona perfectamente, porque la configuración también puedo modificarla en el entorno del winpic800, pero el programa de la LCD no corre.
Hola, te aseguro que no es para nada lo mismo poner o no poner el NOMCLR en el circuito físico y por eso te pregunto: ya te funciona el programita del LED en el circuito real? Pusiste el fuse NOLVP? Por otro lado, veo que tu versión de CCS es algo vieja. La última versión del compilador CCS está en V4.119, sin embargo te debería funcionar con la librería LCD de esa versión. Del winpic800 te comento que no lo conozco. Creo que de momento lo importante es que hagas funcionar el LED en el circuito real y luego puedes ver lo del LCD.
Saludos!
El circuito del led me funcionó del principio y hace mucho que lo había realizado y probado, nunca tuve problema con eso, porque no conoces el winpic800 es que no me entendés, porque por mas que configure los fuses en el Mplab, después lo puedo cambiar a mi gusto en el winpic800 que es un programa para cargar el .hex al micro, entonces no afecta por que ahí elijo que no uso el MCLR y ya esta, siempre lo hice así y en .asm también y no uso LVP, no uso nada de eso, el problema es con el programa del LCD amigo, o sea con el programa en general, no corre, no hace nada, y no es un problema físico en hardware porque todo igual sin tocar nada solo cargando el programa hecho .ASM anda de diez y uso la misma configuración de pines. Estoy por adquirir un ICD3 después si tendremos el mismo proceso ;), Por el momento sigo intentando y ver que es el problema, espero poder encontrarlo. Muchas gracias por tu ayuda
-
bmb, creo que con la respuesta de Ale_arzer se entiende. WinPic800 es un soft para grabar los PICs, en dicho soft podés configurar manualmente los bits de configuración (valga la redundancia) o fuses, por lo tanto no es imprescindible que estén especificados en el código. Pero sí sería conveniente que estén, por que de esa manera al compilarlo ya quedarían almacenados en el .hex
Ale_arzer, hace la prueba de dejar el bloque do-while sin ninguna instrucción. Como al comienzo estás imprimiendo la palabra "Litros", al menos deberías poder ver eso en el LCD.
-
bmb, creo que con la respuesta de Ale_arzer se entiende. WinPic800 es un soft para grabar los PICs, en dicho soft podés configurar manualmente los bits de configuración (valga la redundancia) o fuses, por lo tanto no es imprescindible que estén especificados en el código. Pero sí sería conveniente que estén, por que de esa manera al compilarlo ya quedarían almacenados en el .hex
Ale_arzer, hace la prueba de dejar el bloque do-while sin ninguna instrucción. Como al comienzo estás imprimiendo la palabra "Litros", al menos deberías poder ver eso en el LCD.
Probé lo que me decís, pero no, no hace nada, y también probé de comentar todas las instrucciones, y puse el ejemplo del led y corre el programa, después saque las instrucciones para escribir el LCD y dejé nada mas que el lcd_init(); y antes de esto puse un delay_ms(500); y después también y el led encendió y se apago, por lo que deduzco que hay algo en la librería que no anda bien, porque no inicializa el LCD y cuando le mando para que escriba en ella se queda colgado el PIC. Estoy bajando una versión mas nueva del CCS a ver que tiene de distinto la librería... Muchas gracias por tu ayuda, seguiré intentando y comentando algún resultado por acá. Saludos
-
Probé lo que me decís, pero no, no hace nada, y también probé de comentar todas las instrucciones, y puse el ejemplo del led y corre el programa, después saque las instrucciones para escribir el LCD y dejé nada mas que el lcd_init(); y antes de esto puse un delay_ms(500); y después también y el led encendió y se apago, por lo que deduzco que hay algo en la librería que no anda bien, porque no inicializa el LCD y cuando le mando para que escriba en ella se queda colgado el PIC. Estoy bajando una versión mas nueva del CCS a ver que tiene de distinto la librería... Muchas gracias por tu ayuda, seguiré intentando y comentando algún resultado por acá. Saludos
Por lo que contás, se está quedando colgado el programa porque el LCD no responde. Seguramente se debe a que la libreŕia tiene la inicialización correspondiente al HD44780 (que es el que tiene el proteus y por eso funciona) y que no coincide con el KS0066.
A mi me pasa algo similar, saque un LCD de un teléfono inalámbrico casio pero no sé que integrado tiene y cuando quise inicializarlo con la secuencia del HD44780 no funcionó y también se queda colgado el programa cuando intento que imprima algo.
Por eso creo que lo más razonable es que leas los datasheets y cambies la secuencia de inicialización para dejarla acorde al KS0066. También habría que ver si los comandos son distintos, porque en ese caso también tendrías que modificar las distintas rutinas.
-
bmb, creo que con la respuesta de Ale_arzer se entiende. WinPic800 es un soft para grabar los PICs, en dicho soft podés configurar manualmente los bits de configuración (valga la redundancia) o fuses, por lo tanto no es imprescindible que estén especificados en el código. Pero sí sería conveniente que estén, por que de esa manera al compilarlo ya quedarían almacenados en el .hex
Hola AngelGris, OK entendido lo del wuinpic800 y de acuerdo con que es conveniente tener los fuses en el código para evitar confusiones.
... De poder puedo subir el circuito pero no sé como adjuntar una imagen aquí, el LCD lo tengo conectado, RW a gnd no lo uso, RS a RB2, ENABLE a RB3, D4-D7 conectado RB4-RB7.
... y no uso LVP, no uso nada de eso, el problema es con el programa del LCD amigo, o sea con el programa en general, no corre, no hace nada, y no es un problema físico en hardware porque todo igual sin tocar nada solo cargando el programa hecho .ASM anda de diez y uso la misma configuración de pines ...
Hola Ale_arzer, además de las indicaciones de AngelGris, quisiera decirte que el uso del fuse NOLVP es importante ya que tienes conectado el ENABLE del LCD en RB3. De la página 46 de la hoja de datos del PIC:
Low-Voltage ICSP™ Programming (LVP) is enabled by default which disables the RB3 I/O function. LVP
must be disabled to enable RB3 as an I/O pin and allow maximum compatibility to the other 18-pin
mid-range devices.
Dices que tienes RW conectada a GND? En la librería de esa versión de CCS, recuerdo que era muy importante respetar estas conexiones:
// As defined in the following structure the pin connection is as follows:
// D0 enable
// D1 rs
// D2 rw
// D4 D4
// D5 D5
// D6 D6
// D7 D7
//
// LCD pins D0-D3 are not used and PIC D3 is not used.
// Un-comment the following define to use port B
#define use_portb_lcd TRUE
O si le quitabas los comentarios a la última instrucción usabas el puerto B, pero en ese mismo orden. Como te había comentado antes, las últimas librerías de CCS para LCD si te permiten cambiar los pines según los necesites.
Saludos!
-
bmb, creo que con la respuesta de Ale_arzer se entiende. WinPic800 es un soft para grabar los PICs, en dicho soft podés configurar manualmente los bits de configuración (valga la redundancia) o fuses, por lo tanto no es imprescindible que estén especificados en el código. Pero sí sería conveniente que estén, por que de esa manera al compilarlo ya quedarían almacenados en el .hex
Hola AngelGris, OK entendido lo del wuinpic800 y de acuerdo con que es conveniente tener los fuses en el código para evitar confusiones.
... De poder puedo subir el circuito pero no sé como adjuntar una imagen aquí, el LCD lo tengo conectado, RW a gnd no lo uso, RS a RB2, ENABLE a RB3, D4-D7 conectado RB4-RB7.
... y no uso LVP, no uso nada de eso, el problema es con el programa del LCD amigo, o sea con el programa en general, no corre, no hace nada, y no es un problema físico en hardware porque todo igual sin tocar nada solo cargando el programa hecho .ASM anda de diez y uso la misma configuración de pines ...
Hola Ale_arzer, además de las indicaciones de AngelGris, quisiera decirte que el uso del fuse NOLVP es importante ya que tienes conectado el ENABLE del LCD en RB3. De la página 46 de la hoja de datos del PIC:
Low-Voltage ICSP™ Programming (LVP) is enabled by default which disables the RB3 I/O function. LVP
must be disabled to enable RB3 as an I/O pin and allow maximum compatibility to the other 18-pin
mid-range devices.
Dices que tienes RW conectada a GND? En la librería de esa versión de CCS, recuerdo que era muy importante respetar estas conexiones:
// As defined in the following structure the pin connection is as follows:
// D0 enable
// D1 rs
// D2 rw
// D4 D4
// D5 D5
// D6 D6
// D7 D7
//
// LCD pins D0-D3 are not used and PIC D3 is not used.
// Un-comment the following define to use port B
#define use_portb_lcd TRUE
O si le quitabas los comentarios a la última instrucción usabas el puerto B, pero en ese mismo orden. Como te había comentado antes, las últimas librerías de CCS para LCD si te permiten cambiar los pines según los necesites.
Saludos!
Amigo bmb, entiendo lo que decis del fuse LVP, pero seguís sin entender, que cuando yo digo no lo uso, es que configuro, en el winpic800, o sea le pongo ahí NOLVP, NOMCLR, NOBOREN, NO a todo, entonces NO USO ninguno de esos fuses. Tienes razón que es mejor poner en el codigo todos los fuses, y voy a hacerlo siempre ahora así.
Y en lo demás también tienes razón, sin RW no funciona :oops: :oops: En la simulación lo tenia conectada tal como está configurada la librería por eso funcionaba, cuando agregué la conexion de RW se termino el problema y anda la libreria tal cual y quitando el RW en la simulación hace lo mismo que pasaba en mi placa :oops::oops::oops: No me avivé de hacer eso antes de molestarlos jaja, aunque tuve que modificar igual que había modificado en la de la versión anterior lo que señalé en rojo, porque a pesar de que en esta nueva librería de otra versión del CCS porque definiendolo no funcionaba, después esta todo en orden y anda con el KS0066 sin problemas.
Muchas gracias por tu ayuda y la paciencia! jaja, y bueno aprendí bastante con todo esto, muchas gracias a quienes contestaron y a todos porque en algún momento puedo volver a pedir ayuda y gracias a todos esta el foro activo. Saludos...
-
Hola Ale_arzer, me alegra mucho que ya esté funcionando! :-/
Saludos!