Autor Tema: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD  (Leído 79840 veces)

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

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #60 en: 29 de Marzo de 2012, 12:39:07 »
Hola, estoy intentando utilizar el uart 1 del pic32, en la recepcion supuestamente esta bien pero en la transmision solo me llegan dos ceros, osea todo lo que sale es cero, en 9600, si le bajo el baudrate salen simbolos raros y si se lo subo aparecen ceros, que creen q pueda estar pasando?

Desconectado steelheart

  • PIC10
  • *
  • Mensajes: 4
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #61 en: 30 de Agosto de 2012, 00:27:41 »
LCD TFT 320x240


Para la utilización y creación de una librería para un LCD TFT hay que determinar exactamente que controlador utiliza, y que modo de comunicación (8-bits o 16-bits) ha sido establecido por hardware en su construcción. Teniendo en claro eso se puede buscar por la red alguna librería como para migrarla al lenguaje que se utilice  ;-) En mi caso el controlador es un SSD1289 a 16-bits, y la idea es implementar el módulo PMP para su control, por lo que su configuración es:

Código: C
  1.     PMMODE = 0;
  2.     PMAEN = 0;
  3.     PMCON = 0;
  4.     PMMODEbits.MODE = 2;                    // Intel 80 master interface
  5.     PMMODEbits.WAITB = 0;
  6.     PMMODEbits.WAITM = 2;
  7.     PMMODEbits.WAITE = 0;
  8.     PMMODEbits.MODE16 = 1;                  // 16 bit mode
  9.     PMCONbits.PTRDEN = 1;                   // enable RD line
  10.     PMCONbits.PTWREN = 1;                   // enable WR line
  11.     PMCONbits.PMPEN = 1;                    // enable PMP
  12.  

Adicionalmente a las funciones de inicialización, envio de comando u datos, la librería debe tener lo minimo necesario como para realizar alguna gráfica, en este caso las funciones implementadas son:

Código: C
  1. void vLCDTFT_Scroll_V(UINT16 y1);
  2. void vLCDTFTFillScreen(UINT16 Color);
  3. void vLCDTFTPoint(UINT16 x,UINT16 y,UINT16 Color);
  4. void vLCDTFTText(UINT16 x,UINT16 y,const char *PtrText,const char (*Fuente)[5],unsigned char Alto,UINT16 Color);
  5. void vLCDTFTLine(UINT16 x1,UINT16 y1,UINT16 x2,UINT16 y2,UINT16 Color);
  6. void vLCDTFTRectangle(UINT16 x1,UINT16 y1,UINT16 x2,UINT16 y2,BOOL Filled,UINT16 Color);
  7. void vLCDTFTCircle(UINT16 x,UINT16 y,UINT16 Radius,BOOL Filled,UINT16 Color);

Se adjunta código fuente de LCDTFT.c y LCDTFT.h  ;-)


Como ejemplo de uso, y aprovechando la implementación del RTC interno y de MDD File System, se realiza un reloj analógico animado  :) Para ello se crean 2 funciones principalmente, vDrawImageSDBMP24Bits que a partir del nombre de la imagen BMP de 24-bits, la dibuja centrada en pantalla y vDrawReloj que configura el RTC y crea la animación de las agujas del reloj.

Código: C
  1. #include "LCDTFT.h"
  2. #include "FSIO.h"
  3.  
  4. extern BOOL RelojSalir;
  5. volatile BOOL kbhit_rtc=0;
  6. // *---------------------------------------------------------------------------*
  7. void __ISR(_RTCC_VECTOR, ipl4) RtccIsr(void){
  8.        
  9.         INTClearFlag(INT_RTCC);
  10.         kbhit_rtc=1;
  11. }
  12. // *---------------------------------------------------------------------------*
  13. UINT8 ui8BCD2BIN(UINT8 BCDValue){
  14.         UINT8 Temp;
  15.  
  16.         Temp = BCDValue;
  17.         Temp >>= 1;
  18.         Temp &= 0x78;
  19.         return(Temp + (Temp >> 2) + (BCDValue & 0x0f));
  20. }
  21. // *---------------------------------------------------------------------------*
  22. void vDrawReloj(void){
  23.         rtccTime        tm;
  24.         BOOL Esperar;
  25.         UINT16 x_sec,y_sec,x_min,y_min,x_hr,y_hr;
  26.     UINT16 Angulo;
  27.     #define CENTRO_X                119
  28.     #define CENTRO_Y                159
  29.     #define AGUJA_SEC               55
  30.     #define AGUJA_MIN               50
  31.     #define AGUJA_HR                42
  32.     #define COLOR_FONDO             0xEF7D
  33.        
  34.         RtccInit();                    
  35.         while(RtccGetClkStat()!=RTCC_CLK_ON);
  36.         tm.l=0;
  37.         tm.sec=0x30;
  38.         tm.min=0x45;
  39.         tm.hour=0x13;
  40.        
  41.         RtccChimeEnable();                     
  42.         RtccSetAlarmRptCount(0);               
  43.         RtccSetAlarmRpt(RTCC_RPT_SEC);                  // Cada 1 seg.
  44.         RtccAlarmEnable();
  45.         RtccSetTimeDate(tm.l,0x11112202);
  46.        
  47.         INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);
  48.         INTEnableInterrupts();
  49.         INTSetVectorPriority(INT_RTCC_VECTOR, INT_PRIORITY_LEVEL_4);                   
  50.         INTSetVectorSubPriority(INT_RTCC_VECTOR, INT_SUB_PRIORITY_LEVEL_1);            
  51.         INTEnable(INT_RTCC, INT_ENABLED);
  52.        
  53.         // Dibujamos imagen desde Sd Card
  54.         vDrawImageSDBMP24Bits("RELOJ.BMP");
  55.         while(RelojSalir==0){
  56.                 // Calculamos extremos (x,y) de las agujas->
  57.                 // Esto depende de la imagen del reloj de fondo :p
  58.         Angulo=ui8BCD2BIN(tm.sec)*6; // 6=360/60
  59.         x_sec=CENTRO_X+sin((Angulo*3.14159)/180.0)*AGUJA_SEC;
  60.         y_sec=CENTRO_Y-cos((Angulo*3.14159)/180.0)*AGUJA_SEC;
  61.         Angulo=ui8BCD2BIN(tm.min)*6+ui8BCD2BIN(tm.sec)*0.1;  // 0.1=6/360
  62.         x_min=CENTRO_X+sin((Angulo*3.14159)/180.0)*AGUJA_MIN;
  63.         y_min=CENTRO_Y-cos((Angulo*3.14159)/180.0)*AGUJA_MIN;
  64.         Angulo=ui8BCD2BIN(tm.hour)*30+ui8BCD2BIN(tm.min)*0.5; // 30=360/12, 0.5=30/60
  65.         x_hr=CENTRO_X+sin((Angulo*3.14159)/180.0)*AGUJA_HR;
  66.         y_hr=CENTRO_Y-cos((Angulo*3.14159)/180.0)*AGUJA_HR;
  67.         // Dibujamos:        
  68.         vLCDTFTLine(CENTRO_X,CENTRO_Y,x_min,y_min,ColorAzulMarino);
  69.         vLCDTFTLine(CENTRO_X,CENTRO_Y,x_hr,y_hr,ColorAzulMarino);
  70.         vLCDTFTLine(CENTRO_X,CENTRO_Y,x_sec,y_sec,ColorNaranja);
  71.         vLCDTFTCircle(CENTRO_X,CENTRO_Y,3,1,ColorNaranja);
  72.         Esperar=0;
  73.         while(Esperar==0){
  74.             // Interrpcion cada 1 segundo que setea bandera kbhit_rtc
  75.             if(kbhit_rtc==1){
  76.                 kbhit_rtc=0;
  77.                 tm.l=RtccGetTime();
  78.                 Esperar=1;      
  79.             }
  80.         }
  81.         // Borramos:
  82.         vLCDTFTLine(CENTRO_X,CENTRO_Y,x_sec,y_sec,COLOR_FONDO);
  83.         vLCDTFTLine(CENTRO_X,CENTRO_Y,x_min,y_min,COLOR_FONDO);
  84.         vLCDTFTLine(CENTRO_X,CENTRO_Y,x_hr,y_hr,COLOR_FONDO);
  85.        
  86.         }
  87. }
  88. // *---------------------------------------------------------------------------*
  89. void vDrawImageSDBMP24Bits(const CHAR8 *NameImagen){
  90.     #define OffsetWidthPixel    18
  91.     #define OffsetHeighPixel    22
  92.     #define OffsetSizeFile      34
  93.     #define OffsetInitData      10
  94.     #define OffserTipeFile      28
  95.    
  96.     CHAR8 err,p;
  97.     UINT16 PosXImagen,PosYImagen,k,i,y;
  98.     UINT8 Temp,BufferHeader[54],BufferTemp[3],Adicional;
  99.     UINT32 WidthPixel,HeighPixel;
  100.     UINT16 TipeFile,InitData,Temp16bits;
  101.     union{
  102.         UINT16 Val;
  103.         struct{
  104.             unsigned Blue:5;
  105.             unsigned Green:6;
  106.             unsigned Red:5;
  107.         };
  108.     }Color;
  109.     FSFILE *Imagen;
  110.    
  111.     err=FSInit();    
  112.         if(err==FALSE){
  113.                 vLCDTFTFillScreen(ColorBlack);
  114.                 return;
  115.         }
  116.         Imagen = FSfopen(NameImagen,"r");
  117.     // Si no se pudo encontrar archivo:
  118.     if(Imagen==NULL){
  119.         vLCDTFTFillScreen(ColorBlack);
  120.         return;
  121.     }
  122.     // Leemos cabecera de archivo
  123.     FSfread(&BufferHeader[0],1,54,Imagen);
  124.     WidthPixel = ((UINT32)BufferHeader[OffsetWidthPixel + 3]*16777216+BufferHeader[OffsetWidthPixel + 2]*65536+BufferHeader[OffsetWidthPixel + 1]*256+BufferHeader[OffsetWidthPixel]);
  125.     HeighPixel = ((UINT32)BufferHeader[OffsetHeighPixel + 3]*16777216+BufferHeader[OffsetHeighPixel + 2]*65536+BufferHeader[OffsetHeighPixel + 1]*256+BufferHeader[OffsetHeighPixel]);
  126.     InitData = ((UINT16)BufferHeader[OffsetInitData]);
  127.     TipeFile = ((UINT16)BufferHeader[OffserTipeFile + 1]*256 + BufferHeader[OffserTipeFile]);
  128.    
  129.     if((WidthPixel>LCD_X_MAX) || (HeighPixel>LCD_Y_MAX) || (TipeFile!=24)){
  130.             LATBbits.LATB8=1;
  131.         FSfclose(Imagen);
  132.         return;
  133.     }
  134.    
  135.     if(InitData!=54){
  136.         for(k=54;k<InitData;k++){
  137.             FSfread(&Temp,1,1,Imagen);
  138.         }
  139.     }
  140.    
  141.     PosXImagen=(LCD_X_MAX/2)-(WidthPixel/2);
  142.     PosYImagen=(LCD_Y_MAX/2)+(HeighPixel/2);
  143.    
  144.     Temp16bits=WidthPixel*3;
  145.     Adicional=0;
  146.     while(((Temp16bits)%4)!=0){
  147.         Adicional++;
  148.         Temp16bits++;
  149.     }
  150.     for(k=0,y=PosYImagen;k<HeighPixel;k++,y--){
  151.         vLCDTFTAddressSet(PosXImagen,y,PosXImagen+WidthPixel-1,y);
  152.         for(i=0;i<WidthPixel;i++){
  153.             FSfread(&BufferTemp[0],1,3,Imagen); // Leemos 3 bytes (R,G,B)
  154.             Color.Blue=BufferTemp[0]>>3;Color.Green=BufferTemp[1]>>2;Color.Red=BufferTemp[2]>>3; // Conversion de 24-bits a 16-bits.-
  155.             vLCDTFTWriteData(Color.Val);
  156.         }
  157.         // Bytes adicionales para que linea sea multiplo de 4.-
  158.         for(p=0;p<Adicional;p++){
  159.             FSfread(&Temp,1,1,Imagen);
  160.         }
  161.     }
  162.     FSfclose(Imagen);
  163. }
  164.  

Con ello, dentro del main, luego de iniciar el LCD TFT llamamos a la función vDrawReloj() que se encargará de ejecutar la animación:

Código: C
  1. #include <p32xxxx.h>
  2. #include <plib.h>
  3. // *--------------------------------------------------------------------------------*
  4. // Cristal de 8MHz.-
  5. // SYSCLK = 80 MHz (8MHz Cristal/ FPLLIDIV * FPLLMUL / FPLLODIV)
  6. // FPLLDIV 1:2, PLLMULT x20, PLLODIV 1:1. -> 80MHz
  7. // FPBDIV 1:1 -> 80MHz
  8. #pragma config FPLLODIV=DIV_1, FPLLIDIV=DIV_2, FPLLMUL=MUL_20, FPBDIV=DIV_1
  9. #pragma config FWDTEN=OFF, FCKSM=CSDCMD, POSCMOD=XT, FNOSC=PRIPLL
  10. #pragma config CP=OFF, BWP=OFF, PWP=OFF
  11. // *--------------------------------------------------------------------------------*
  12. #include "Graphics_Card2TFT.h"  // <-- Incluye vDrawImageSDBMP24Bitsy vDrawReloj
  13. #include "HardwareProfile.h"
  14. // *--------------------------------------------------------------------------------*
  15. BOOL RelojSalir;
  16. // *--------------------------------------------------------------------------------*
  17. int main(){
  18.        
  19.     mJTAGPortEnable(0);                                                 // JTAG des-habilitado
  20.         SYSTEMConfigPerformance(GetSystemClock());      // Activa pre-cache.-
  21.                        
  22.         PORTSetPinsDigitalOut(PORT_LED1, PIN_LED1);
  23.         PORTSetPinsDigitalOut(PORT_LED2, PIN_LED2);
  24.         PORTSetPinsDigitalOut(PORT_LED3, PIN_LED3);
  25.         PORTSetPinsDigitalOut(PORT_LED4, PIN_LED4);
  26.         PORTClearBits(PORT_LED1,PIN_LED1|PIN_LED2|PIN_LED3|PIN_LED4);
  27.         DelayMs(100);
  28.    
  29.     PORTSetPinsDigitalOut(IOPORT_D, BIT_1);             // Backlight del TFT
  30.         mPORTDSetBits(BIT_1);
  31.         vLCDTFTInit();
  32.         vLCDTFTFillScreen(ColorBlack);
  33.         RelojSalir=0;
  34.         vDrawReloj();          
  35.         while(1){
  36.                 //vDrawImageSDBMP24Bits("IMAGEN01.BMP");
  37.         }
  38. }
  39.  
  40.  


Saludos!

Desconectado steelheart

  • PIC10
  • *
  • Mensajes: 4
TFT 2N0369-E + touch screen + controlador SSD1289
« Respuesta #62 en: 30 de Agosto de 2012, 15:48:07 »
Hola suky te habia escrito para comentarte sobre el problema que tengo con mi touch de la pantalla, lo que pasa es que yo mido los voltajes que salen cuando hago un desplazamiento por la pantalla y cuando es horizontal no me varia, solo ve varia en forma vertical el voltaje.
Yo utilizo un dsPIC33FJ256GP710 y el controlador de la pantalla es SSD1289, ud me dijo que siempre utilizaba un driver para el manejo del touch, me puede decir cual utiliz'o y que hace el driver en la pantalla, es que soy un poco novato en esto de pantallas TFT.

Gracias...... EXITOSSSSS

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #63 en: 30 de Agosto de 2012, 16:17:44 »
No contesto mensajes privados, las consultas en el foro

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #64 en: 30 de Octubre de 2012, 17:14:44 »
Se configura el RTC interno debido a que en FSconfig.h se establece su uso mediante la definición USEREALTIMECLOCK   ;-)
[/quote]

Necesariamente se tiene que utilizar el rtc interno del pic para poder utilizar la libreria de la sd???... estoy intentando utilizarla por spi, pero FSInit() siempre me da error y comente la parte que activa el rtc, no se si sera por esto.

Estoy utilizando un PIC32MX795F512L.

La SD en que formato debe estar???

Perdón por tantas preguntas  :oops: :oops:
« Última modificación: 01 de Noviembre de 2012, 19:04:36 por IngRandall »

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #65 en: 27 de Noviembre de 2012, 11:34:08 »
Hola Suky, sera que me puedes hacer el favor de subir el proyecto MDD File System, por que he intentado hacerlo compilar así tal cual como dices aquí, pero no me compila  :( :( :( :(

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #66 en: 27 de Noviembre de 2012, 19:34:52 »
Hola! Te lo dejo por aquí para su descarga: http://www.micros-designs.com.ar/downloads/SkP32v1.1_SdCard.rar


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #67 en: 28 de Noviembre de 2012, 09:35:38 »
Muchas gracias, voy a probarlo, pero tengo algunas dudas... la gran mayoría de memorias nuevas ya son HC, este stack las soporta??? también leí por allí que no todas las memorias micro sd poseen el modulo spi, por ejemplo las SanDisk si lo tienen pero las genéricas no sabemos si lo tienen o no, esto es cierto???


Lo probe pero nada de nada, no me funciona, el programa se queda esperando respuesta de getcSPI(); pero esta nunca llega, ya he probado con varios programas distintos, como el de Lucio Di Jasio o el mismo ejemplo que trae Microchip, pero tampoco me funcionan, ya me estoy frustrando con esa micro sd... tengo un rtc y una flash al mismo spi y pruebo sus programas y veo las señales en el osciloscopio y funciona, pero e el de la micro sd solo veo ruido :( :( :(
« Última modificación: 28 de Noviembre de 2012, 16:36:16 por IngRandall »

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #68 en: 04 de Enero de 2013, 11:07:50 »
Una pregunta, esta es una memoria eeprom o flash???

Memoria EEPROM SST25VF016

En este caso a la placa se le ha soldado una memoria EEPROM de 16-Mbits, o sea una SST25VF016. Aquí podemos diseñar una librería propia a gusto, o aprovechar la que entrega Microchip entre sus stack. Este ejemplo aprovecha esto último  :mrgreen: , así que para ello necesitamos copiar la carpeta Board Support Package desde Microchip Solutions a nuestra carpeta de proyectos, quedando al mismo "nivel" que Microchip y Micros-Designs, por ejemplo.

También debemos agregar el Path ..\Board Support Package en el proyecto para ubicar los include  ;-) Y al proyecto además de agregar SST25VF016.c y SST25VF016.h, también debemos agregar drv_spi.c y drv_spi.h que tiene las funciones necesarias para trabajar con el módulo SPI.

La librería SST25VF016.c hace uso del archivo cabecera HardwareProfile.h, donde allí se habilita su uso y se indica que canal SPI utilizar, así que debemos agregar:

Código: C
  1.  
  2. #define USE_SST25VF016
  3. #define SPI_CHANNEL_2_ENABLE
  4. #define SST25_CS_LAT                    LATAbits.LATA5
  5. #define SST25_CS_TRIS                   TRISAbits.TRISA5
  6.  

SST25_CS_TRIS fue un adicional, dado que no está en la librería. Además en void SST25Init(DRV_SPI_INIT_DATA *pInitData) agregué la linea SST25_CS_TRIS=0; para configurar como salida tal pin. Y listo, con ello ya se puede probar la EEPROM  :)

Código: C
  1. #include <p32xxxx.h>
  2. #include <plib.h>
  3. // *--------------------------------------------------------------------------------*
  4. // Cristal de 8MHz.-
  5. // SYSCLK = 80 MHz (8MHz Cristal/ FPLLIDIV * FPLLMUL / FPLLODIV)
  6. // FPLLDIV 1:2, PLLMULT x20, PLLODIV 1:1. -> 80MHz
  7. // FPBDIV 1:1 -> 80MHz
  8. #pragma config FPLLODIV=DIV_1, FPLLIDIV=DIV_2, FPLLMUL=MUL_20, FPBDIV=DIV_1
  9. #pragma config FWDTEN=OFF, FCKSM=CSDCMD, POSCMOD=XT, FNOSC=PRIPLL
  10. #pragma config CP=OFF, BWP=OFF
  11. // *--------------------------------------------------------------------------------*
  12. #include "SST25VF016.h"
  13. #include "LCDGeneric.h"
  14. #include "HardwareProfileSkP32.h"
  15. // *--------------------------------------------------------------------------------*
  16. char Text[35]="Prueba de almacenamiento en EEPROM";
  17. // *--------------------------------------------------------------------------------*
  18. // *--------------------------------------------------------------------------------*
  19. int main(){
  20.         DRV_SPI_INIT_DATA ConfigSPI;
  21.         char err;
  22.        
  23.         mJTAGPortEnable(0);                                                     // JTAG des-habilitado
  24.         SYSTEMConfigPerformance(GetSystemClock());      // Activa pre-cache.-
  25.        
  26.         PORTSetPinsDigitalOut(IOPORT_A, BIT_3);         // Backlight del LCD
  27.         mPORTASetBits(BIT_3);
  28.         vInitLCD();
  29.        
  30.         vPutrs_LCD("Inicia SPI:");     
  31.         ConfigSPI.channel=2;
  32.         ConfigSPI.baudRate=1;   // 20 MHz = 80 Mhz/(2*(Brg+1))
  33.         ConfigSPI.cke=1;                // MODE_11, Sample Middle (Misma SD Card)
  34.         ConfigSPI.ckp=0;
  35.         ConfigSPI.smp=0;
  36.         ConfigSPI.mode=0b00;    // 8-bits
  37.         SST25Init(&ConfigSPI);  // Configuracion SPI.
  38.         vPutrs_LCD("\nBorramos sector:");
  39.         SST25SectorErase(0x0000);
  40.         vPutrs_LCD("\nEscribimos...:");
  41.         err=SST25WriteArray(0x0000,Text,34);
  42.         if(err==0){
  43.                 vPutrs_LCD("\nError en escritura");
  44.         }else{
  45.                 vPutrs_LCD("\nEscritura exitosa");
  46.         }
  47.         while(1){
  48.  
  49.         }
  50. }
  51. // *--------------------------------------------------------------------------------*
  52.  
  53.  

Nota: La función SST25WriteArray realiza una verificación del string guardado en EEPROM, retornando 0 o 1.  ;-)


Saludos!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #69 en: 04 de Enero de 2013, 20:35:25 »
Flash  :mrgreen: Hay que creerle al datasheet  :D :D
No contesto mensajes privados, las consultas en el foro

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #70 en: 20 de Enero de 2013, 14:17:29 »
Hola Suky, Como seria un ejemplo del uso de la funcion vLCDTFTText ??

Muchas gracias
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #71 en: 20 de Enero de 2013, 15:08:36 »
Solucionado jeje, es que no era que la usara mal... es que pintaba un rectangulo encima del texto instantaneamente y no lo veia jejje
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #72 en: 21 de Enero de 2013, 07:36:29 »
Hola a todos.
Vengo con novedades. La primera es que quisiera comentar un pequeño fallo en una funcion de VelazquezBio de otro foro.
Código: [Seleccionar]
void tft_cell(unsigned int16 x1,unsigned int16 y1,unsigned int16 lado,unsigned int16 nCell_fil,unsigned int16 nCell_col,unsigned int16 borde,unsigned int16 color1, unsigned int16 Color2, int1 fill)
{

if(borde>=2){borde=borde/2;}
  
   tft_box(x1,y1,(lado*ncell_Fil)+x1,(lado*nCell_Col)+y1,color1,color1,fill);
       for(j=0;j<nCell_Col;j++){
                  for(i=0;i<nCell_Fil;i++){
                     tft_box((i*lado)+x1+borde,(j*lado)+y1+borde,((i*lado)+(lado+y1-borde)),((j*lado)+(lado+y1-borde)),color1,color2,fill);
                  }
            }
}

tft_box((i*lado)+x1+borde,(j*lado)+y1+borde,((i*lado)+(lado+y1-borde)),((j*lado)+(lado+y1-borde)),color1,color2,fill);
Eso debe ser x1 para que funcione bien.

No estoy en ese foro, per agradecele tambien a el de mi parte su colaboracion (como a ti).

Por otra parte he adaptado una funcion para mi tft ue permite hacer scroll:

Código: [Seleccionar]
void vLCDTFT_Scroll_V(UINT16 y1,BOOL direction,UINT16 speed,UINT16 steps){
   unsigned int col,i,j;
   j=0;
   col=y1;
   vLCDTFTWriteCommandData(0x0061,0x0003);
   for(i=0;i<steps;i++){  
      if(direction == 0) {
         if(col-j<1){col=319; j=0;}
            vLCDTFTWriteCommandData(0x006A,col-j);
      }else if(direction == 1){      
         if(col+j>319){col=0; j=0;}
            vLCDTFTWriteCommandData(0x006A,col+j);
      }  
         DelayMs(speed);
         j++;
      }
}

Direccion 0/1 arriba o abajo, bueno dependera de si la tft esta horizontal o no... yo ya probé en vertical, speed cuanto menor mas rapido el scroll y steps el numero de pixeles que "saltan" cada vez
« Última modificación: 21 de Enero de 2013, 07:40:51 por Diego Gonzalez »
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #73 en: 21 de Enero de 2013, 09:05:47 »
Hola amigos, en esto estoy. Ahora tratando de comprender como hacer rejillas para graficas y graficas. ¿Como se hace? saludos
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: Ejemplos en MPLAB C32. Placa de desarrollo SkP32 xD
« Respuesta #74 en: 21 de Enero de 2013, 13:24:44 »
He avanzado algo en la "logica"

Se me ocurrio recorrer un buffer, pero voy a seguir teniendo el mismo problema, ya que al llegar al final de la grafica queria "correr" todos los valores sin afectar al fondo ni a la rejilla. ¿Sabe alguien como se suele hacer eso?

Asi hasta ahora, lo dejo por ahora por dolores de cabeza xD  :D Aunque enamorado de la pantallita ^^



Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home