TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Cryn en 28 de Diciembre de 2007, 15:54:36
-
saludos amigos! estoy trabajando con un nuevo pic, que me dieron hace bastante tiempo, jejeje, un amigo me dijo que haga pruebas con el, y pues como ya estoy con algo de tiempo extra decidi meterle mano, jejeje, y pues pretendo hacer un reloj de tiempo real (o lo mejor que salga) :mrgreen: por software, usando el timer1 y un cristal de 32.768KHz; y beuno ver sobre la presición (http://www.todopic.com.ar/foros/index.php?topic=19806.0) :mrgreen:
pero como sabran este micro solo tiene 14 patitas, de las cuales 12 estan destinadas a I/O, pero con algunas limitaciones, ya que el de MCLR solo puede ser entrada, si se usa OSC externo se pierden dos pines del puerto A, pero parece que es muy bueno, ya que tb tiene conversor A/D (8canales 10bits), 3 timers, 2 comparadores, 256B de eeprom, ECCP, 2K de flash, 128 de RAM y por si fuera poco oscilador interno de hasta 8MHz
bueno, me parece una joyita, jeje
y este bicho solo tiene 2 puertos A y C A0...A5 y C0...C5, no tiene puerto B :shock: que es donde va el LCD, ahora nose si habra una libreria para poder manejar un LCD HD44780 con PICs de este tipo de puertos, o si es que se puede modificar la libreria de 8 bits, para tb manejar un teclado matricial, aunque talvez sea mejor usar un teclado analogico, pero, de poder modificar una libreria como le hago?? cambio todos los pines que necesitaria?? o como??
un saludo, muchas gracias :mrgreen:
-
Hola amigo!
Aqui puedes ver como usar el Display LCD 2x16 en PORTD (http://www.ucontrol.com.ar/wiki/index.php?title=Ejemplos_CCS_-_010_Display_LCD_2x16_en_PORTD). Seguramente vas a poder cambiar un par de tonterias para usarlo en donde gustes.
Aqui esta explicado bien como modificar LCD.C (http://www.ucontrol.com.ar/wiki/index.php?title=CCS_-_LCD)
Esta es una imagen de la simulacion del LCD en el puerto D:
(http://www.ucontrol.com.ar/wiki/images/e/ea/CCS-LCD-4.gif)
Saludos!
-
ok, muchas gracias enseguida lo reviso y veo como le hago :mrgreen:
-
haber, nose si te fijaste pero este micro no tiene ningun puerto completo de 8 bits, solo estan del 0 al 5, osea 6 bits, que es suficiente para 4 bits de datos y 2 de control y el r/w a gnd, es correcto esto verdad??
ahora en la libreria esto esta bien?:
struct lcd_pin_map {
BOOLEAN enable; // RC4
BOOLEAN rs; // RC5
BOOLEAN unused1; // RC6
BOOLEAN unused2; // RC7
int data : 4; // RC0-RC3
} lcd;
en la siguiente parte estoy cambiando el puerto d por el c:
#if defined use_portb_lcd
...
#else
//#locate lcd = getenv("sfr:PORTC") // This puts the entire structure over the port
#ifdef __pch__
#locate lcd = 0xf82
#else
#locate lcd = 7
#endif
#define set_tris_lcd(x) set_tris_c(x)
#endif
despues viene esto, que cambios hago aca, porque no hice ningun cambio, me parece uqe es la dimension del LCD?:
#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};
y ahora para la funcion por ejemplo:
void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_cycles(1);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}
como hago para que el dato nibble (4 bits) se vaya a la parte menor del puerto?, roto? o que? creo que roto, no?
weno, seguire haciendo ello cuando vuelva, jeje, ya toy de salida, haber si lo logro...
que significa: int data : 4;
y esto?: lcd.data = n;
que coloca los datos desde el pin 4?
un saludo :mrgreen:
-
bueno despues de haber probado y no tener exito :( busqeu librerias para pics que no tengan puertos completos, y me tope con la libreria flex! :mrgreen: con la que me he solucionado el problema:
aca el link (http://www.todopic.com.ar/foros/index.php?topic=4624.msg71031#msg71031), esta muy buena, se puede definir al parecer cualquier Pin, a mi me ha dado con C0-C3 datos y C4, C5 y A1 control :)
un saludo y gracias.