Autor Tema: Explorer 16 y QVGA: Primeros Pasos  (Leído 42482 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #60 en: 03 de Enero de 2008, 17:53:12 »
Algo muy importante ...

Sin embargo, en MODO DEBUGGER he notado que cuando existe algun error .. el mas tipico .. escribir en la posicion de un array que no existe ... digamos el array:

int arreglo[20];

un arreglo de 20 posiciones ( 0 - 19 )  de datos integer, si por alguna razon ( obviamente de error humano  :mrgreen: ) escribimos en la posicion 20 eso detiene la ejecucion de codigo, pero el MPLAB no dice en donde se produjo el error! de hecho no dice que hubo error simplemente se detiene y no aparece la flecha verde ... una forma sencilla de detectar errores es conociendo el ultimo valor del PC ( program counter ) pero no se de que forma saber cual fue el ultimo valor del PC pues si se lee del WATCH despues del error este sale con el valor 0 ..

Si el programa es corto es facil detectarlo ... pero si el programa ocupa ya mas de 20kbytes .. es muy dificil ...

Otra forma de depurarcion es la ejecucion paso a paso... pero eso es muy lento

La cosa se pone mucho mas complicada  cuando el codigo no es escrito por uno.. que se yo ... el codigo del RTOS o de alguna libreria .. ahi uno queda con la duda si el error es del codigo ajeno o del codigo propio ...



Control Automático, DSP & Microcontroladores

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #61 en: 03 de Enero de 2008, 17:59:47 »
Ja, ja, ja  :D :D :D

O como me pasó a mí: que me pasé un par de horas diciendo que el MPLAB, el ICD2 y todo Microchip eran una mierda del tamaño de una catedral porque los valores que me daba de las variables eran simplemente imposibles ... hasta que me dí cuenta que había puesto los Breakpoints y seleccionado el DEBUGGER ICD2 ¡¡¡ Sin compilar el programa en modo DEBUG sino en RELEASE !!!  :oops:

Conclusión: La mierda era evidentemente yo, no Microchip.

Ja, ja, ja  :D :D :D


Por cierto, ya he compilado y ejecutado el ejemplo "gordo" de las librerías gráficas y es una verdadera pasada de buena.  :mrgreen: :mrgreen: :mrgreen:
« Última modificación: 03 de Enero de 2008, 18:03:08 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #62 en: 03 de Enero de 2008, 18:17:35 »
Si ese ejemplo dura rato bajando al pic !!  :-/ :-/

Aunque varias veces yo he dejado RELEASE cuando hago debug al dspic ( se me olvida cambiarlo ) ... y me ha funcionado bien ... pero hay veces que hasta reiniciar la compu para poder leer los registros ... :x :x
 
Control Automático, DSP & Microcontroladores

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #63 en: 03 de Enero de 2008, 18:26:16 »
 :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #64 en: 03 de Enero de 2008, 19:01:30 »
QUE BUENA FOTO!!!

EXCELENTE
Control Automático, DSP & Microcontroladores

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #65 en: 03 de Enero de 2008, 19:07:58 »
Pero cómo te diviertes, jodío

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #66 en: 03 de Enero de 2008, 19:21:38 »
MERDAVILLOSO !!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #67 en: 04 de Enero de 2008, 14:39:14 »
aclarado entonces blackcat  :mrgreen:

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #68 en: 05 de Enero de 2008, 12:25:25 »
Buenoooo, creo que voy empezando a comprender la Librería Gráfica de la gente de Microchip. Y me gusta. Se parece mucho a las LeadTools que utilizaba en Delphi, la filosofía es muy parecida. Y además el Copy/Paste con los ejemplos que trae hacen maravillas para poder montar un proyecto nuevo.

El caso es que he abierto un proyecto desde cero y he intentado montar un ejemplito fácil pero que me hiciese ver qué es lo que me hacía falta, para ir añadiéndolo al proyecto, y en qué orden. Digamos que el cuerpo base es el del ejemplo "Graphics AN1136" de donde he sacado la configuración general y el tratamiento de un simple Buttom. Del ejemplo "Graphics Primitive Layer Demo" he sacado el tratamiento de Fonts del texto y por último del "Graphics Object Layer Demo" el tema del Beep cuando pulso sobre el botón.

Así he montado un programa que: Coloca un texto de cabecera al inicio a modo de presentación, crea un Botón en la posición, con el tamaño y el texto que yo deseo. Al pulsar sobre el Botón emite un Beep, incrementa una variable y muestra su valor en el centro de la pantalla con otro tipo y color distintos de la letra.

Además me he saltado a la torera una de las prescripciones que venían en la Ayuda de la Librería Gráfica, y que decía dónde tenía que poner el proyecto para que funcionasen los includes, las librerías y todo eso ... Y lo he colocado en MI directorio de proyectos, a un kilómetro de donde me decían que tenia que poner todo. Me ha costado un poco de trabajo configurar todo el tema de los direcorios de includes y eso pero al final ha funcionado correctamente.

El resultado: Un pequeño paso para la Humanidad pero un salto gigantesco para mí.  :mrgreen:



El programa entonces ha quedado así:

Código: C#
  1. /*****************************************************************************
  2.  * © 2008 PicManía By RedRaven
  3.  *        http://picmania.garcia-cuervo.net
  4.  *
  5.  * FileName:        Test1.c
  6.  * Dependencies:    Test1.h
  7.  * Processor:       PIC24FJ128GA010
  8.  * Compiler:            MPLAB C30 V3.00
  9.  * Linker:          MPLAB LINK30
  10.  *
  11.  * Coloca un texto de cabecera. Crea un Botón.
  12.  * Al pulsar sobre el Botón emite un Beep,
  13.  * incrementa una variable y muestra su valor
  14.  * en el centro de la pantalla
  15.  *****************************************************************************/
  16.  
  17. #include "Test1.h"
  18. #include <stdio.h>
  19.  
  20. // Configuration bits
  21. _CONFIG2(FNOSC_PRIPLL & POSCMOD_XT) // Primary XT OSC with PLL
  22. _CONFIG1(JTAGEN_OFF & FWDTEN_OFF)   // JTAG off, watchdog timer off
  23.  
  24. ///////////////////////////////// FONTS ///////////////////////////////////////
  25. extern FONT_FLASH Font35;
  26.  
  27. /////////////////////////////////////////////////////////////////////////////
  28. //                              OBJECT'S IDs
  29. /////////////////////////////////////////////////////////////////////////////
  30.  
  31. #define ID_BTN1             10
  32.  
  33. /////////////////////////////////////////////////////////////////////////////
  34. //                            LOCAL PROTOTYPES
  35. /////////////////////////////////////////////////////////////////////////////
  36. void Present_Me(void);
  37. void Monitor_Value(void);
  38. void CheckCalibration(void);            // check if calibration is needed
  39.  
  40. /////////////////////////////////////////////////////////////////////////////
  41. //                                  MAIN
  42. /////////////////////////////////////////////////////////////////////////////
  43. GOL_SCHEME      *altScheme;                 // alternative style scheme
  44. WORD            update = 0;                                 // variable to update customized graphics
  45. unsigned int Value    = 0;
  46. unsigned int antValue = 0;
  47.  
  48. int main(void){
  49.  
  50.         GOL_MSG msg;                                    // GOL message structure to interact with GOL
  51.  
  52.     EEPROMInit();                                       // initialize EEPROM
  53.     TouchInit();                                        // initialize touch screen
  54.     BeepInit();                                         // Initialize beeper
  55.         GOLInit();                                              // initialize graphics library &
  56.                                                                         // create default style scheme for GOL
  57.     SetColor(BLACK);
  58.     ClearDevice();
  59.  
  60.         Present_Me();
  61.  
  62.     altScheme = GOLCreateScheme();              // create alternative style scheme
  63.     altScheme->TextColor0 = BLACK;
  64.     altScheme->TextColor1 = WHITE;
  65.  
  66.         BtnCreate(      ID_BTN1,                                // object’s ID
  67.                                 10,  50,                        // object’s Top Left Corner  
  68.                                 110,100,                                // object’s Bottom Right Corner
  69.                 0,                      // radius of the rounded edge
  70.                                 BTN_DRAW,                               // draw the object after creation
  71.                                 NULL,                                   // no bitmap used
  72.                                 "One ++",                               // use this text
  73.                                 altScheme);                             // use alternative style scheme
  74.  
  75.         update = 1;                                                     // to initialize the user graphics
  76.  
  77.         while(1){
  78.         if(GOLDraw()) {                                 // Draw GOL object
  79.                 TouchGetMsg(&msg);              // Get message from touch screen
  80.                 GOLMsg(&msg);                   // Process message
  81.         }      
  82.     }
  83. }
  84.  
  85. void Present_Me(void){
  86.  
  87.         static const char text[] = "'One Beep Button' by PicMania";
  88.  
  89.     SetFont(&FONTDEFAULT);
  90.     SetColor(BRIGHTRED);
  91.         MoveTo(0,0);
  92.     while(!OutText((char*) text));
  93. }
  94.  
  95. void Monitor_Value(void){
  96.  
  97.         static char text[6];
  98.  
  99.         // Delete ant Text
  100.         sprintf(text,"%4d",antValue);
  101.         MoveTo(150,110);
  102.     SetFont(&Font35);
  103.         SetColor(altScheme->TextColor0);
  104.     while(!OutText((char*) text));
  105.         // Print act Text
  106.         sprintf(text,"%4d",Value);
  107.         MoveTo(150,110);
  108.         SetColor(altScheme->TextColor1);
  109.     while(!OutText((char*) text));
  110. }
  111.  
  112.  
  113. /////////////////////////////////////////////////////////////////////////////
  114. // Function: WORD GOLMsgCallback(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg)
  115. // Input: objMsg - translated message for the object,
  116. //        pObj - pointer to the object,
  117. //        pMsg - pointer to the non-translated, raw GOL message
  118. // Output: if the function returns non-zero the message will be processed by default
  119. // Overview: it's a user defined function. GOLMsg() function calls it each
  120. //           time the valid message for the object received
  121. /////////////////////////////////////////////////////////////////////////////
  122. WORD GOLMsgCallback(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg){
  123.  
  124.         WORD objectID;
  125.        
  126.     objectID = GetObjID(pObj);
  127.        
  128.         if (objectID == ID_BTN1) {
  129.                 if (objMsg == BTN_MSG_PRESSED) {        // check if button is pressed
  130.                         antValue=Value;
  131.                         ++Value;
  132.                         Beep();
  133.                 }
  134.                 else {
  135.                 }
  136.                 update = 1;
  137.         }
  138.        
  139.         return 1;
  140. }
  141.  
  142. /////////////////////////////////////////////////////////////////////////////
  143. // Function: WORD GOLDrawCallback()
  144. // Output: if the function returns non-zero the draw control will be passed to GOL
  145. // Overview: it's a user defined function. GOLDraw() function calls it each
  146. //           time when GOL objects drawing is completed. User drawing should be done here.
  147. //           GOL will not change color, line type and clipping region settings while
  148. //           this function returns zero.
  149. /////////////////////////////////////////////////////////////////////////////
  150. WORD GOLDrawCallback(){
  151.  
  152.     if(update){
  153.                 Monitor_Value();
  154.                 update = 0;
  155.         }
  156.  
  157.         return 1;                              
  158. }
  159.  
  160. void CheckCalibration(void)                  // Check if calibration is needed
  161. {
  162.     // If S3 button on Explorer 16 board is pressed calibrate touch screen
  163.     if(PORTDbits.RD6 == 0){
  164.         TouchCalibration();
  165.         TouchStoreCalibration();
  166.     }
  167.     // If it's a new board (version byte in EEPROM has different Value) calibrate touch screen
  168.     if(GRAPHICS_LIBRARY_VERSION != EEPROMReadWord(EEPROM_VERSION)){
  169.             // Show in LED D3 that touch screen is not calibrated
  170.             TRISAbits.TRISA0 = 0;
  171.             LATAbits.LATA0   = 1;
  172.         TouchCalibration();
  173.         TouchStoreCalibration();
  174.         EEPROMWriteWord(GRAPHICS_LIBRARY_VERSION,EEPROM_VERSION);
  175.             // Show in LED D3 that touch screen is calibrated
  176.             TRISAbits.TRISA0 = 0;
  177.             LATAbits.LATA0   = 0;
  178.     }
  179.     // Load touch screen calibration parameters from EEPROM
  180.     TouchLoadCalibration();
  181. }

Y los includes y demás son estos (copio la pantalla del Proyecto en MPLAB):





Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #69 en: 05 de Enero de 2008, 20:12:24 »
Buenisimo!! :-/
Felicitaciones por los avances!! :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #70 en: 06 de Enero de 2008, 12:37:10 »
Otro paso adelante.

Quien pone un botón pone ciento. así que me he hecho ya el Test2.c que pone en pantalla un KEYPAD con los 10 números, del "0" al "9", y otros dos mas con "Si" y "No". Las dos lineas superiores están destinadas a Texto, la primera de ellas a un texto fijo y la segunda para presentar mensajes. Al pulsar cada uno de los botones se van acumulando sobre un string que se presenta en la segunda línea de texto, la de los mensajes.  :mrgreen:

Los detalles interesantes de este ejemplo son:

La función Create_Objects() crea on-the-fly los botones, en función de los parámetros definidos con KEYPAD_BTN, NUMVERSPC, NUMHORBTN y NUMVERBTN. Lo único importante a tener en cuenta es que los Textos que aparecen en cada botón tienen que ser contantes ó variables estáticas diferenciadas, yo he utilizado la matriz de constantes BtnTexts, cuando lo intenté creando un string que iba cambiando según creaba cada uno de los botones me aparecían todos con el ultimo contenido del string.

La función GOLMsgCallback() es llamada cada vez que se produce un "evento". Ahí es donde preguntamos por el objeto que produce el evento, a través de su objectID y el tipo de evento producido, en nuestro caso "interceptamos" el tipo BTN_MSG_PRESSED y con él vamos cargando el string de salida MyText[]. Cada vez que tenemos un evento válido nuevo ponemos en alto un flag llamado update.

La función GOLDrawCallback() es llamada por la librería cada vez que tiene que actualizar la pantalla. En ella detectamos si tenemos el flag update en alto y en caso de ser así ponemos el string MyText[] en la pantalla.

Ea, seguimos para bingo.

Código: C#
  1. /*****************************************************************************
  2.  * © 2008 PicManía By RedRaven
  3.  *        http://picmania.garcia-cuervo.net
  4.  *
  5.  * FileName:        Test2.c
  6.  * Dependencies:    Test2.h
  7.  * Processor:       PIC24FJ128GA010
  8.  * Compiler:            MPLAB C30 V3.00
  9.  * Linker:          MPLAB LINK30
  10.  *
  11.  * Matriz de botones numericos + función.
  12.  * Area de Textos fijos
  13.  * Area de Mensajes con lo pulsado en el KEYPAD
  14.  *****************************************************************************/
  15.  
  16. #include "Test2.h"
  17. #include <stdio.h>
  18.  
  19. // Configuration bits
  20. _CONFIG2(FNOSC_PRIPLL & POSCMOD_XT) // Primary XT OSC with PLL
  21. _CONFIG1(JTAGEN_OFF & FWDTEN_OFF)   // JTAG off, watchdog timer off
  22.  
  23. ///////////////////////////////// FONTS ///////////////////////////////////////
  24. extern FONT_FLASH Font25;
  25. extern FONT_FLASH Font35;
  26.  
  27. /////////////////////////////////////////////////////////////////////////////
  28. //                              OBJECT'S IDs & DIMENSIONS
  29. /////////////////////////////////////////////////////////////////////////////
  30.  
  31. #define KEYPAD_BTN      10
  32. #define NUMVERSPC       1
  33. #define NUMHORBTN       4
  34. #define NUMVERBTN       3
  35.  
  36. /////////////////////////////////////////////////////////////////////////////
  37. //                            LOCAL PROTOTYPES
  38. /////////////////////////////////////////////////////////////////////////////
  39. void Create_Objects(void);
  40. void CheckCalibration(void);            // check if calibration is needed
  41.  
  42. /////////////////////////////////////////////////////////////////////////////
  43. //                                  MAIN
  44. /////////////////////////////////////////////////////////////////////////////
  45. GOL_SCHEME      *altScheme;                                     // alternative style scheme
  46. WORD            update          = 0;                    // variable to update customized graphics
  47. static char MyText[32]  = "\0";
  48. WORD        nextChar    = 0;
  49. static const char BtnTexts[12][3] = {"1","2","3","Si","4","5","6","0","7","8","9","No"};
  50.  
  51. int main(void){
  52.  
  53.     GOL_MSG msg;                                        // GOL message structure to interact with GOL
  54.  
  55.     EEPROMInit();                                       // initialize EEPROM
  56.     TouchInit();                                        // initialize touch screen
  57.     BeepInit();                                         // Initialize beeper
  58.     GOLInit();                                          // initialize graphics library &
  59.                                                                         // create default style scheme for GOL
  60.     SetColor(BLACK);
  61.     ClearDevice();
  62.     Create_Objects();
  63.  
  64.     while(1){
  65.         if(GOLDraw()) {                                 // Draw GOL object
  66.                 TouchGetMsg(&msg);              // Get message from touch screen
  67.                 GOLMsg(&msg);                   // Process message
  68.         }      
  69.     }
  70. }
  71.  
  72. void Create_Objects(void){
  73.  
  74.     static const char text[] = "Touch KEYPAD by RedPic";
  75.     unsigned int nbuttons,VerDiv,HorDiv;
  76.     unsigned int i,PosX,PosY,nHor;
  77.  
  78.     SetFont(&FONTDEFAULT);
  79.     SetColor(WHITE);
  80.     MoveTo(0,0);
  81.     while(!OutText((char*) text));
  82.  
  83.     altScheme = GOLCreateScheme();              // create alternative style scheme
  84.     altScheme->TextColor0 = BLACK;
  85.     altScheme->TextColor1 = WHITE;
  86.  
  87.     VerDiv = (unsigned int) GetMaxY() / (NUMVERBTN + NUMVERSPC);
  88.     HorDiv = (unsigned int) GetMaxX() / NUMHORBTN;
  89.     nbuttons = NUMHORBTN * NUMVERBTN;
  90.     PosX = 0; PosY = VerDiv;
  91.     nHor = 0;
  92.  
  93.     SetFont(&Font35);
  94.  
  95.     for(i=0;i<nbuttons;i++){
  96.         BtnCreate(KEYPAD_BTN+i,                 // object’s ID
  97.                         PosX,  PosY,            // object’s Top Left Corner  
  98.                         PosX+HorDiv,PosY+VerDiv,// object’s Bottom Right Corner
  99.                         0,                      // radius of the rounded edge
  100.                         BTN_DRAW,                               // draw the object after creation
  101.                         NULL,                                   // no bitmap used
  102.                         (char*) BtnTexts[i],            // use this text
  103.                         altScheme);                             // use alternative style scheme
  104.                 PosX += HorDiv;
  105.                 if(++nHor==NUMHORBTN){
  106.                         nHor = 0;
  107.                         PosX = 0;
  108.                         PosY += VerDiv;
  109.                 }
  110.         }
  111.         update = 1;                                                     // to initialize the user graphics
  112. }
  113.  
  114.  
  115. /////////////////////////////////////////////////////////////////////////////
  116. // Function: WORD GOLMsgCallback(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg)
  117. // Input: objMsg - translated message for the object,
  118. //        pObj - pointer to the object,
  119. //        pMsg - pointer to the non-translated, raw GOL message
  120. // Output: if the function returns non-zero the message will be processed by default
  121. // Overview: it's a user defined function. GOLMsg() function calls it each
  122. //           time the valid message for the object received
  123. /////////////////////////////////////////////////////////////////////////////
  124. WORD GOLMsgCallback(WORD objMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg){
  125.  
  126.     WORD objectID;
  127.     unsigned int nbuttons;
  128.        
  129.     objectID = GetObjID(pObj);
  130.     nbuttons = NUMHORBTN * NUMVERBTN;
  131.                
  132.         if((objectID > (KEYPAD_BTN - 1)) && (objectID < (KEYPAD_BTN + nbuttons))){
  133.                 if (objMsg == BTN_MSG_PRESSED) {        // check if button is pressed
  134.                         MyText[nextChar++]=BtnTexts[objectID-KEYPAD_BTN][0];
  135.                         MyText[nextChar]  ='\0';
  136.                         Beep();
  137.                 }
  138.                 update = 1;
  139.         }
  140.  
  141.         return 1;
  142. }
  143.  
  144. /////////////////////////////////////////////////////////////////////////////
  145. // Function: WORD GOLDrawCallback()
  146. // Output: if the function returns non-zero the draw control will be passed to GOL
  147. // Overview: it's a user defined function. GOLDraw() function calls it each
  148. //           time when GOL objects drawing is completed. User drawing should be done here.
  149. //           GOL will not change color, line type and clipping region settings while
  150. //           this function returns zero.
  151. /////////////////////////////////////////////////////////////////////////////
  152. WORD GOLDrawCallback(){
  153.  
  154.     if(update){
  155.                 MoveTo(0,GetTextHeight(&FONTDEFAULT));
  156.                 OutText(MyText);
  157.                 update = 0;
  158.         }
  159.  
  160.         return 1;                              
  161. }
  162.  
  163. // End //////////////////////////////////////////////////////////////////////



Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #71 en: 06 de Enero de 2008, 12:52:07 »
Puedes poner marca y modelo de la pantalla y del touch pad que viene en la placa??
El touch pad usa un integrado especial para interpretarlo o lo hace el PIC??

Despues del interrogatorio apago la luz que te da en la cara... :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #72 en: 06 de Enero de 2008, 12:53:41 »


Que padre te ha quedado! me he quedado con los ojos pelones.

 :shock: :shock: :shock:

Felicitaciones!!

 Atentamente
   Akenafab


Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #73 en: 06 de Enero de 2008, 13:02:21 »
La pantalla TFT es un SAMSUNG S6D0129 y es una de las cuatro o cinco que soporta la librería de Microchip.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #74 en: 06 de Enero de 2008, 13:14:33 »
Ya apague la luz de interrogatorios!! :-/
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.