Você está na página 1de 16

Manual librera Fw Para Pulpito JM60

Autor: Oldani Sebastin web: www.sebest.com.ar

Introduccin: Este manual sirve como gua para utilizar las libreras creadas para el Pulpito JM60. Para obtener ms informacin, programas de ejemplos, ayudas y compartir experiencias entra a www.sebest.com.ar, podes postear en la seccin foros o en cualquier post relacionado. Los post realizados con Pulpito JM60, estn identificados con el siguiente icono:

Configuracin para operar como Pulpito JM60 e instalacin del framework

Instalar FrameWork Pulpito JM60: Crear un proyecto nuevo: 1. Seleccionamos Micro Jm60, full chip simulation 2. Elegimos la ubicacin del proyecto y el nombre del proyecto. 3. Siguiento 4. Seleccionamos Device Initialization 5. Siguiente 6. Finalizar Configuramos como PULPITO JM60: 1. Seleccionamos la configuracion del CPU 2. Activamos external clock 3. Clock Source: crystal 4. Frecuency: 12Mhz 5. Oscillator operating mode: high gain 6. Source CPU clock: extern 7. FLL/PLL mode: PLL Engaged 8. PLL Mult factor: 32 9. Ref clock divide 8 10. Bus frecuency divide 1 11. Internal resurcin mapping interrup vector table: FBC4 12. OK generate Code. 13. Copiar estas lineas debajo de la funcin del main(){} extern near void _Startup(void); void (* volatile const _UserEntry[])()@0xFABC={ 0x9DCC, // asm NOP(9D), asm JMP(CC) _Startup //_EntryPoint }; Instalar el Framework: 1. Copiar los archivos de la carpeta del FWJM60 en la carpeta de Source de tu proyecto. 2. Incluis todos los archivos al proyecto. 3. Agregar modulo de RTC y configuramos un periodo de 833,33 us o lo que querramos. 4. Activamos la interrupccion. 5. Generamos el code. 6. En el archivo MCUInit.h incluimos la librera fwCore.h 7. Vamos a la interrupcin del RTC y copiamos. RTCSC_RTIF = 1; interruptRtc(); 8. Copilamos y listo. Configurar Framework: Abrimos el archivo fwCore.h y configuramos CLOCKTUNE y HitRtcPerSec

Descripcin de las libreras, funciones y ejemplos.

Librera fwCore Lista de Funciones void rtcInit(void) void interruptRtc(void) int getSize(char *str) void charcopy(char *des,char *src,int size) void delay100Us(int multiplo) int getOverFlow(void) char timerFw1(void); void clearTimerFw1(void); Descripciones rtcInit(void): La funcin rtcInit inicializa, esta funcin debe ser invocada al inicio del programa. Es parte del framework. interruptRct(void): Esta funcin debe ser invocada cada vez que se ejecuta la interrupcin del real time clock (RTC). Es para necesaria del framework. getSize(char *str): La funcin getSize devuelve el tamao de una cadena str, la misma debe terminar con en el byte 0x00 Ejemplo: char len; char vector[]=Hola mundo; len = getSize(vector); // len = 10 charcopy(char *des,char *src,int size): La funcin charcopy, copia los size caracteres del vector src en el vector des. Ejemplo: char fuente[]=Hola mundo; char destino[20]=Adios; charcopy(destino+5,fuente+4,7); //destino = Adios mundo\0 delay100us(int multiplo): Esta funcin congela la ejecucin del programa durante multiplo x 100 micro segundos. Ejemplo: for(;;){ PTAD = 0xFF; delay100us(1000); PTAD = 0xx; delay100us(1000); }// El puerto A se pone en uno durante un segundo, y luego en cero durante un segundo.

getOverFlow(void): Devuelve la cantidad de sobrecargas del RTC, permite contar tiempo sin congelar la ejecucin del programa. Parte del framework. timerFw1(void): La funcin timerFw1, es un timer de aproximacin, que es posible copiarla y modificar el nmero 1 de Fw1 por cualquier nmero permite crear contadores de alto nivel infinitos. Se configura mediante el define HITRTCTIMER1 y debe ser encuestada con el mayor refresco posible para disminuir el error de aproximacin. Dentro del framework existe 5 contadores de este tipo pero es posible agregar todos los que fueran necesarios. Ejemplo: clearTimerFw1(); //limpia el timer for(;;){ //bucle principal y redundante. hacerCualquierCosa(); if(timerFw1()){ realizarTareaCadaSegundo(); clearTimerFw1(); } } clearTimerFw1(void): La funcin clearTimerFw1 borra el contador, para contar el tiempo correctamente.

Librera fwCalendario Lista de Funciones char esBisiesto(int year) char fechaValida(int dd,int mm, int yyyy) void sumarDia(void) void restarDia(void) void sumarMes(void) void restarMes(void) void sumarAnyo(void) void restarAnyo(void) int diasBisiestos(int yyyyDesde, int yyyyHasta) int diasDesfazados(int yyyyDesde, int yyyyHasta) int diaSemana(int dd,int mm,int anio) char cargaFecha(int dd,int mm,int anio) int diaHoy(void) int diaActual(void) int mesActual(void) int anioActual(void) char cargarHora(int hh,int mm) int horaActual(void) int minutoActual(void) int segundoActual(void) void sumarSegundo(void) void sumarMinuto(void) void sumarHora(void) Introduccin Se carga en memoria la fecha con la funcin cargarFechar(dd,mm,aaaa) y devuelve uno si la fecha es correcta y cero en otro caso. La hora se carga en memoria con la funcin cargarHora(hh,mm) y devuelve uno si la hora es correcta y cero en otro caso. El resto de las funciones se pueden utilizar haciendo referencia a la fecha y hora cargadas en estas funciones. La funcin sumarSegundo() debe ser invocada cada segundo para que la hora y la fecha se actualicen debidamente. Descripciones esBisiesto(int year): retorna uno si el ao year es bisiesto. Ejemplo: int anio; anio = 2011; if(esBisiesto(anio)){ finalizarMundo(); } fechaValida(int dd,int mm, int yyyy): retorna uno si la fecha cargada en dd (da desde 1 a 31), mm (mes desde 1 a 12) y yyyy (ao desde 1 a 65000) es correcta y existe.

Ejemplo: fechaValida(31,9,2011); //retorna cero fechaValida(30,9,2011); //retorna uno void sumarDia(void): Suma un da a la fecha cargada en la funcin cargarFecha. Ejemplo: cargarFecha(30,9,2011); sumarDia(); //fecha: 1/10/2011 void restarDia(void): Resta un da a la fecha cargada en la funcin cargarFecha. Ejemplo: cargarFecha(1,10,2011); restarDia(); //fecha: 30/09/2011 void sumarMes(void): Suma un mes a la fecha cargada en la funcin cargarFecha. Ejemplo: cargarFecha(1,12,2011); sumarMes(); //fecha: 1/1/2012 void restarMes(void): Resta un mes a la fecha cargada en la funcin cargarFecha. Ejemplo: cargarFecha(1,1,2012); restarMes(); //fecha: 1/12/2011 void sumarAnyo(void): Suma un ao a la fecha cargada en la funcin cargarFecha. Ejemplo: cargarFecha(1,1,2011); sumarAnyo(); //fecha: 1/1/2012 void restarAnyo(void): Resta un ao a la fecha cargada en la funcin cargarFecha. Ejemplo: cargarFecha(1,1,2011); restarAnyo(); //fecha: 1/1/2010 diasBisiestos(int yyyyDesde, int yyyyHasta): Devuelve la cantidad de das aos bisiesto que hay entre los aos yyyyDesde hasta yyyyHasta. Ejemplo: diasBisiestos(1990,2011); // return 5

diasDesfazados(int yyyyDesde, int yyyyHasta): Devuelve la cantidad de das desfasados que hay desde los aos yyyyDesde hasta yyyyHasta. Ejemplo: diasDesfazados(1990,2011); // return 26 diaSemana(int dd,int mm,int anio): Retorna el da de la semana que es el da dd, del mes mm, del ao anio. 0 1 2 3 4 5 6 SA DO LU MA MI JU VI Tabla 1.1 Ejemplo: diaSemana(15,8,2011); //return 2 cargaFecha(int dd,int mm,int anio): Carga en memoria la fecha da dd, mes mm, ao anio, para ser usado con las dems funciones y retorna 1 si la fecha es vlida. Ejemplo: cargaFecha(15,8,2011); //return 1; cargaFecha(55,8,2011); //return 0; diaHoy(void): Devuelve el da de la semana de la fecha cargada en memoria. Ejemplo: cargaFecha(15,8,2011); //return 1; diaHoy(); //return 2 diaActual(void): Devuelve el nmero del da que esta en memoria. Ejemplo: cargaFecha(15,8,2011); //return 1; diaActual(); //return 15; sumarDia(); diaActual(); //return 16; mesActual(void): Sabado Domingo Lunes Martes Miercoles Jueves Viernes

Devuelve el nmero del mes que esta en memoria. Ejemplo: cargaFecha(15,8,2011); //return 1; mesActual(); //return 8; anioActual(void): Devuelve el nmero del ao que esta en memoria. Ejemplo: cargaFecha(15,8,2011); //return 1; anioActual(); //return 2011; cargarHora(int hh,int mm): Carga en memoria la hora hh y minuto mm, para ser usado con las dems funciones y retorna 1 si la hora es vlida. Ejemplo: cargarhora(15,30);// 15:30 horaActual(void): Retorna la hora que esta en memoria. Ejemplo: horaActual(); //retorna 15 minutoActual(void): Retorna los minutos que estn en memoria. Ejemplo: minutoActual(); //retorna 30 segundoActual(void): Retorna los segundos que estn en memoria. Ejemplo: segundoActual(); //retorna 10 sumarSegundo(void): Suma un segundo a la hora que esta cargada en memoria. Ejemplo: sumarSegundo(); sumarMinuto(void): Suma un minuto a la hora que esta cargada en memoria. Ejemplo: sumarMinuto(); sumarHora(void): Suma una hora a la hora que esta cargada en memoria.

Librera fwLcd Lista de Funciones void LCD_Init(void) void LCD_Command(char command) void LCD_Data(char data) char LCD_BUSY(void) void LCD_SETADDRES(char Addr) void LCD_Home(void) void LCD_Clear(void) void LCD_Modo_De_Funcionamiento(void) void LCD_CONTROL_ON_OFF(void) void LCD_CURSOR_Posicion(void) void LCD_Modo_Transferencia(void) void LCD_Display(char Data) void LCD_Input_Mode(char dato) void LCD_2Line(void) void LCD_Display_Linea(char* Msg, char linea) Introduccin Una vez cargada la librera es necesario configurar un par de parmetros que estn definidos por defines. #define lcdE PTCD_PTCD4 /* Enabled pin of LCD*/ #define lcdEDD PTCDD_PTCDD4 /* Data Direction of Enabled Pin*/ #define lcdRS PTCD_PTCD0 /* RS pin of LCD (Data/Instruction Select)*/ #define lcdRSDD PTCDD_PTCDD0 /* Data Direction of RS Pin */ #define lcdRW PTCD_PTCD3 /* RW pin of LCD*/ #define lcdRWDD PTCDD_PTCDD3 /* Data Direction of RW Pin */ #define lcdPort PTED /* Port of 4 data bits to lcd connection */ #define lcdPortDD PTEDD /* Data direction for 4 data pins */ #ifdef lcd4bit #define lcdDataPins 3 Es necesario inicializar la librera al inicio del programa con la funcin LCD_Init() Descripciones LCD_Init(void): Esta funcin inicializa la librera. LCD_Command(char command): Enva un comando al lcd, se usa dentro de la librera. LCD_Data(char data): Enva un dato al lcd, se usa dentro de la librera. LCD_BUSY(void): Permite determinar si el lcd esta ocupado. LCD_SETADDRES(char Addr): Setea la direccin de memoria del lcd.

LCD_Home(void): Posiciona el lcd para empezar a escribir en el inicio del display. LCD_Clear(void): Limpia el display. LCD_Modo_De_Funcionamiento(void): Configura un determinado modo de funcionamiento del display. Este modo se puede modificar desde el define LCD_FUNCION_SET LCD_CONTROL_ON_OFF(void): Configuracin del display, se modifica desde el define LCD_CTRL_ON_OFF LCD_CURSOR_Posicion(void): Configura la posicin del cursos segn el define LCD_CURSOR_SHIFT LCD_Modo_Transferencia(void): Configura el display segn el define LCD_FUNCION_SET LCD_Display(char Data): Escribe el carcter Data en la posicin actual del lcd. LCD_Input_Mode(char dato): Permite poner el cursor en input mode. Si dato es uno display en input mode. LCD_2Line(void): Configura el display para trabajar en dos lineas. Por defecto funciona en dos lineas. LCD_Display_Linea(char* Msg, char linea): Escribe la cadena Msg finalizada en '\0' en la linea linea del display. Ejemplo: #include fwCore.h #include fwLcd.h main(){ LCD_Init(); LCD_ Display_ Linea(Hola Mundo ,1); LCD_ Display_ Linea(sebest.com.ar ,2); }

Librera fwHandlerInput Lista de Funciones void scanM(char *text,int len) char* salida(void) char exec(void) void getString(char *text) char secondKey(void) void clearSecondKey(void) void liteModeFunction(char sizeRK) void numModeFunction(char sizeRK) void alfaModeFunction(char sizeRK) void noModeFunction(char sizeRK) Introduccin La librera fwHandlerInput es una librera que debe ser combinada con una librera de input. Puede crearse cualquier librera de input para ser combinada con esta librera. Descripciones scanM(char *text,int len): Esta funcin es invocada para inicializar el ingreso de datos y determinar el tamao de lo que se va a ingresar, mediante el parmetro len, adems genera un vector para ser mostrado por un dispositivo de salida, donde el vector text es lo que se va a mostrar antes de lo que se ingrese. char exec(void): La funcin exec, permite conocer si fue presionada la tecla enter. Informando que ya se termino de ingresar los datos del dispositivo de entrada. salida(void): La funcin salida, retorna un vector con la cadena ingresada en la funcin scanM y con la cadena ingresada por el dispositivo de entrada. getString(char *text): Devuelve la cadena ingresada por el dispositivo de entrada. Ejemplo: scanM("nick:",10); while(!exec()){ LCD_Display_Linea(salida(),2); } getString(lineaRead); secondKey(void): La funcin secondKey, es una funcin para contabilizar tiempo de uso interno de la librera. clearSecondKey(void): La funcin clearSecondKey, es una funcin para reinicializar tiempo de uso interno de la librera.

liteModeFunction(char sizeRK): Esta funcin es de uso interno, interpreta la datos ledos por el dispositivo de entrada como un modo lite, (como se escribe con los celulares) numModeFunction(char sizeRK): Esta funcin es de uso interno, interpreta la datos ledos por el dispositivo de entrada como slo datos numricos. alfaModeFunction(char sizeRK): Esta funcin es de uso interno, interpreta la datos ledos por el dispositivo de entrada como slo datos alfabticos. noModeFunction(char sizeRK): Esta funcin es de uso interno, no interpreta la datos ledos por el dispositivo de entrada, son representados como llegan.

Librera fwKeyboard Lista de Funciones void leerBit(char bitRead) char leerScanMat(char *mat,char *tam) void deleteFunctionKey(void) void initKeyboard(void) void selectModeKey(char mode) char getModeKey(void) Introduccin Esta librera se debe complementar con fwHandlerInput para su correcto funcionamiento. Se puede modificar esta librera para controlar cualquier dispositivo de entrada. En este caso se trata de un teclado PS/2 de computadoras. Descripciones leerBit(char bitRead): Esta debe ser invocada en una interrupcin de flanco (keyboard o cap), conectada al pin de clock del teclado. El parmetro de esta funcin es el valor del pin del dato del teclado. Su funcionamiento depende del tipo de dispositivo de entrada. Ejemplo: __interrupt void isrVkeyboard(void) { leerBit((PTGD & 0x04)); //en el puerto PTG, en el pin 2, esta conectado al pin de data del teclado. //y la interrupcin esta conectada al pin de clock del teclado. KBISC_KBACK=1; } leerScanMat(char *mat,char *tam): Esta funcin es de uso interno, en el vector mat almacena los datos ledos del teclado, donde tam es el tamao del vector mat y retorna la ltima tecla de funcin presionada. deleteFunctionKey(void): Borra las teclas de funciones, las teclas de funciones son las teclas que no representan caracteres imprimibles. initKeyboard(void): Inicializa el teclado, hay que llamar esta funcin al inicio del programa. selectModeKey(char mode): Selecciona un modo de operar con el teclado. Es un dato para trabajar con la librera fwHandlerInput. getModeKey(void): Devuelve el modo en que esta configurado el teclado.

Você também pode gostar