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

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Explorer 16 y QVGA
« Respuesta #15 en: 27 de Diciembre de 2007, 18:07:19 »
Por ahí vamos bien, sí señor.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA
« Respuesta #16 en: 27 de Diciembre de 2007, 18:12:02 »
Pues a ver si consigo hacer un Wink de Led con profesionalidad, seriedad, economía de medios y presteza o prestancia absolutas e incluso relativas. Ja, ja, ja  :D :D :D
« Última modificación: 27 de Diciembre de 2007, 18:16:26 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA
« Respuesta #17 en: 27 de Diciembre de 2007, 18:16:35 »
Lo que si he notado, y es un fastidio, que el puñetero ICD2 deja tieso al PIC que no se pone a correr el programa hasta que le desconecto el cablecillo telefónico del programador. Así que compilo, conecto el ICD2, lo programo, desconecto el ICD2 y entonces veo el resultado.

No es como el GTP-USB+ y el WinPic que desde el CCS C lo llamo, se programa el PIC y sale corriendo como alma que lleva el diablo sin tener que poner ni quitar nada.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Explorer 16 y QVGA
« Respuesta #18 en: 27 de Diciembre de 2007, 18:40:16 »
A ver si va a ser por el fuse DEBUG o algo de eso,o que mantiene al micro reseteado

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Explorer 16 y QVGA
« Respuesta #19 en: 27 de Diciembre de 2007, 19:15:56 »
Echale un vistazo a la botonera del mplab, porque hay un boton que tiene el simbolito de un flanco de reloj que se usa precisamente para sacar al micro del reset o resetearlo y no hay necesidad de desconectar el ICD2.

Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Explorer 16 y QVGA
« Respuesta #20 en: 28 de Diciembre de 2007, 02:55:09 »
¿Y no puedes conectar el GTPUSB PLUS?

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA
« Respuesta #21 en: 28 de Diciembre de 2007, 08:04:16 »
¿Y no puedes conectar el GTPUSB PLUS?

Estoy mirando donde enchufarlo  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA
« Respuesta #22 en: 28 de Diciembre de 2007, 09:50:08 »
Esta vez parece que si, que he logrado modificar, compilar y programar un dsPIC, Ea  :mrgreen: :mrgreen: :mrgreen:



Ahora voy a abrir un proyecto nuevo e ir construyendo, capa a capa, un complejísimo Wink_Led. Ja, ja, ja  :D :D :D
« Última modificación: 18 de Agosto de 2009, 06:17:28 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA
« Respuesta #23 en: 28 de Diciembre de 2007, 11:03:15 »
Primer programa que es obligatorio hacer: El Winky de un led (en este caso todos los Leds conectados al PORTA del dsPIC33FJ256GP710 en la Explorer-16)  :mrgreen: :mrgreen: :mrgreen:

Main_Wink.c

Código: C#
  1. /**********************************************************************
  2. * © 2007 PicManía By RedRaven
  3. *        http://picmania.garcia-cuervo.net
  4. *
  5. * FileName:        main_wink.c
  6. * Dependencies:    p33FJ256GP710.h
  7. * Processor:       dsPIC33F
  8. * Compiler:        MPLAB® C30 v2.01 or higher
  9. *
  10. * Wink Led Port A
  11. *
  12. * C30 Optimization Level: -O1
  13. *
  14. **********************************************************************/
  15.  
  16. #include "p33FJ256GP710.h"
  17. #include "delay.h"
  18.  
  19. _FOSCSEL(FNOSC_PRIPLL);
  20. _FOSC(FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMD_XT);
  21. _FWDT(FWDTEN_OFF);
  22.  
  23. int main ( void ){
  24.  
  25.     //The settings below set up the oscillator and PLL for 16 MIPS
  26.     PLLFBD = 0x00A0;
  27.     CLKDIV = 0x0048;
  28.  
  29.         /* set LEDs (D3-D10/RA0-RA7) drive state low */
  30.         LATA = 0xFF00;
  31.         /* set LED pins (D3-D10/RA0-RA7) as outputs */
  32.         TRISA = 0xFF00;
  33.      
  34.     /* Infinite Loop */
  35.     while(1){
  36.  
  37.                 // All PORTA to ON
  38.                 LATA = 0xFFFF;
  39.                 // Wait 0.5 seconds
  40.                 Delay(Delay_5mS_Cnt * 100);
  41.                 // All PORTA to OFF
  42.                 LATA = 0xFF00;
  43.                 // Wait 0.5 seconds
  44.                 Delay(Delay_5mS_Cnt * 100);
  45.         };
  46. }

Delay.c

Código: C#
  1. /*********************************************************************
  2.  *
  3.  *                    Simple Delay Routines
  4.  *
  5.  *********************************************************************
  6.  * FileName:        delay.c
  7.  * Dependencies:    delay.h
  8.  * Processor:       dsPIC33F
  9.  * Complier:        MPLAB C30 v2.01.00 or higher
  10.  *
  11.  * Company:         Microchip Technology, Inc.
  12.  *
  13.  * Software License Agreement
  14.  *
  15.  * The software supplied herewith by Microchip Technology Incorporated
  16.  * (the “Company”) for its dsPIC30F Microcontroller is intended
  17.  * and supplied to you, the Company’s customer, for use solely and
  18.  * exclusively on Microchip's dsPIC30F Microcontroller products.
  19.  * The software is owned by the Company and/or its supplier, and is
  20.  * protected under applicable copyright laws. All rights are reserved.
  21.  * Any use in violation of the foregoing restrictions may subject the
  22.  * user to criminal sanctions under applicable laws, as well as to
  23.  * civil liability for the breach of the terms and conditions of this
  24.  * license.
  25.  *
  26.  * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
  27.  * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
  28.  * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  29.  * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
  30.  * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
  31.  * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
  32.  *
  33.  * Author               Date    Comment
  34.  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  35.  * Richard Fischer      7/14/05 Initial release for LCD support
  36.  * Priyabrata Sinha     1/27/06 Ported to non-prototype devices
  37.  *
  38.  ********************************************************************/
  39.  
  40. #include "delay.h"
  41.  
  42. unsigned int temp_count;
  43.  
  44. void Delay( unsigned int delay_count )
  45. {
  46.         temp_count = delay_count +1;
  47.         asm volatile("outer: dec _temp_count");
  48.         asm volatile("cp0 _temp_count");
  49.         asm volatile("bra z, done");
  50.         asm volatile("do #3200, inner" );      
  51.         asm volatile("nop");
  52.         asm volatile("inner: nop");
  53.         asm volatile("bra outer");
  54.         asm volatile("done:");
  55. }
  56.        
  57.  
  58. void Delay_Us( unsigned int delayUs_count )
  59. {
  60.         temp_count = delayUs_count +1;
  61.         asm volatile("outer1: dec _temp_count");       
  62.         asm volatile("cp0 _temp_count");
  63.         asm volatile("bra z, done1");
  64.         asm volatile("do #1500, inner1" );     
  65.         asm volatile("nop");
  66.         asm volatile("inner1: nop");
  67.         asm volatile("bra outer1");
  68.         asm volatile("done1:");
  69. }

Delay.h

Código: C#
  1. //#define Fcy  14754600
  2. #define Fcy  16000000
  3.  
  4. void Delay( unsigned int delay_count );
  5. void Delay_Us( unsigned int delayUs_count );
  6.  
  7. #define Delay200uS_count  (Fcy * 0.0002) / 1080
  8. #define Delay_1mS_Cnt     (Fcy * 0.001) / 2950
  9. #define Delay_2mS_Cnt     (Fcy * 0.002) / 2950
  10. #define Delay_5mS_Cnt     (Fcy * 0.005) / 2950
  11. #define Delay_15mS_Cnt    (Fcy * 0.015) / 2950
  12. #define Delay_1S_Cnt      (Fcy * 1) / 2950

« Última modificación: 30 de Diciembre de 2007, 12:04:23 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #24 en: 28 de Diciembre de 2007, 15:50:52 »
Una pequeña modificacion del programa anterior, en vez de Blinkear los 8 primeros bits del PORTA los hacemos lucir uno a uno.  :mrgreen:

Código: C#
  1. /**********************************************************************
  2. * © 2007 PicManía By RedRaven
  3. *        http://picmania.garcia-cuervo.net
  4. *
  5. * FileName:        main_wink.c
  6. * Dependencies:    p33FJ256GP710.h
  7. * Processor:       dsPIC33F
  8. * Compiler:        MPLAB® C30 v2.01 or higher
  9. *
  10. * Wink Led Each Port A
  11. *
  12. * C30 Optimization Level: -O1
  13. *
  14. **********************************************************************/
  15.  
  16. #include "p33FJ256GP710.h"
  17. #include "delay.h"
  18.  
  19. _FOSCSEL(FNOSC_PRIPLL);
  20. _FOSC(FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMD_XT);
  21. _FWDT(FWDTEN_OFF);
  22.  
  23. int main ( void ){
  24.  
  25.  
  26.         unsigned int fA;
  27.  
  28.     //The settings below set up the oscillator and PLL for 16 MIPS
  29.     PLLFBD = 0x00A0;
  30.     CLKDIV = 0x0048;
  31.  
  32.         /* set LEDs (D3-D10/RA0-RA7) drive state low */
  33.         LATA = 0xFF00;
  34.         /* set LED pins (D3-D10/RA0-RA7) as outputs */
  35.         TRISA = 0xFF00;
  36.      
  37.         fA=0x0001;
  38.  
  39.     /* Infinite Loop */
  40.     while(1){
  41.  
  42.                 // Each PORTA to ON
  43.                 LATA = 0xFF00 +(fA);
  44.                 fA = (fA << 1);
  45.                 if(fA==0x0100){
  46.                         fA = 0x0001;
  47.                 }
  48.                 // Wait 0.5 seconds
  49.                 Delay(Delay_5mS_Cnt * 10);
  50.                 // All PORTA to OFF
  51.                 LATA = 0xFF00;
  52.                 // Wait 0.5 seconds
  53.                 Delay(Delay_5mS_Cnt * 10);
  54.         };
  55. }
« Última modificación: 30 de Diciembre de 2007, 12:03:37 por RedPic »
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
« Respuesta #25 en: 28 de Diciembre de 2007, 17:33:49 »
Lo que si he notado, y es un fastidio, que el puñetero ICD2 deja tieso al PIC que no se pone a correr el programa hasta que le desconecto el cablecillo telefónico del programador. Así que compilo, conecto el ICD2, lo programo, desconecto el ICD2 y entonces veo el resultado.

No es como el GTP-USB+ y el WinPic que desde el CCS C lo llamo, se programa el PIC y sale corriendo como alma que lleva el diablo sin tener que poner ni quitar nada.
No tiene un boton de Run para hacer arrancar el programa desde la interfaz del ICD2 ??? :shock: :shock:
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
« Respuesta #26 en: 28 de Diciembre de 2007, 17:44:17 »

No tiene un boton de Run para hacer arrancar el programa desde la interfaz del ICD2 ??? :shock: :shock:


Si, el amigo Omix me dio la solución. Tiene un par de botones con un flanco de subida uno y de bajada el otro, que controlan el estado del MCLR. Cuando el ICD2 programa activa el del blanco de subida, después de programar le doy a ese botón y el programa empieza a correr.  :mrgreen:

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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Explorer 16 y QVGA: Primeros Pasos
« Respuesta #27 en: 28 de Diciembre de 2007, 17:48:25 »
Otro pasito adelante. Esta vez le toca a la USART leyendo y escribiendo por el canal serie.

Aquí tenéis un programita que primero se presenta a si mismo, como todo dsPIC de buena familia, y después se pone a la escucha del canal serie (por la USART2 que es la que el hardware de la Explorer 16 tiene el MAX232 conectado) y devuelve por ese mismo canal lo que reciba, hace el eco.  :mrgreen: :mrgreen: :mrgreen:



Código: C#
  1. /**********************************************************************
  2. * © 2007 PicManía By RedRaven
  3. *        http://picmania.garcia-cuervo.net
  4. *
  5. * FileName:        main_usart.c
  6. * Dependencies:    p33FJ256GP710.h
  7. * Processor:       dsPIC33F
  8. * Compiler:        MPLAB® C30 v2.01 or higher
  9. *
  10. * Wink Led Port A
  11. *
  12. * C30 Optimization Level: -O1
  13. *
  14. *********************************************************************
  15. * The Processor starts with the Internal oscillator without PLL enabled
  16. * and then the Clock is switched to PLL Mode.
  17. *********************************************************************/
  18. #include <p33FJ256GP710.h>
  19. #include <delay.h>
  20.  
  21. _FOSCSEL(FNOSC_FRC);                                                            // Internal FRC oscillator
  22. _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF  & POSCMD_NONE);  // Clock Switching is enabled and Fail Safe Clock Monitor is disabled
  23.                                                                                                         // OSC2 Pin Function: OSC2 is Clock Output
  24.                                                                                                         // Primary Oscillator Mode: XT Crystanl
  25.  
  26. char mytext[]   ="dsPIC33FJ256GP710 en línea¡\r\nHello TODOPIC (World)\r\n>\0";
  27.  
  28.  
  29.  
  30. void __attribute__ ((interrupt, no_auto_psv)) _U2RXInterrupt(void){
  31.         // Lo que recibo vía UART2 lo pongo en el PORTA ...
  32.         LATA = U2RXREG;
  33.         // ... y lo devuelvo como Echo filtrando el 0x0D para añadir 0x0A
  34.         U2TXREG = U2RXREG;
  35.         if(U2RXREG==0x0D){
  36.                 U2TXREG = 0x0A;
  37.         }
  38.  
  39.         IFS1bits.U2RXIF = 0;
  40. }
  41. void __attribute__ ((interrupt, no_auto_psv)) _U2TXInterrupt(void){
  42.         IFS1bits.U2TXIF = 0;
  43. }
  44.  
  45. void InitClock() {
  46.         PLLFBD                          = 38;   // M  = 40
  47.         CLKDIVbits.PLLPOST      = 0;    // N1 =  2
  48.         CLKDIVbits.PLLPRE       = 0;    // N2 =  2
  49.         OSCTUN                          = 0;
  50.         RCONbits.SWDTEN         = 0;
  51.         // Clock switch to incorporate PLL
  52.         __builtin_write_OSCCONH(0x01);          // Initiate Clock Switch to FRC with PLL (NOSC=0b001)
  53.         __builtin_write_OSCCONL(0x01);          // Start clock switching while (OSCCONbits.COSC != 0b001); Wait for Clock switch to occur
  54.         while(OSCCONbits.LOCK != 1) {};
  55. }
  56.  
  57. void InitUART2() {
  58.         // This is an EXAMPLE, so brutal typing goes into explaining all bit sets
  59.         // The HPC16 board has a DB9 connector wired to UART2, so we will
  60.         // be configuring this port only
  61.         // configure U2MODE
  62.         U2MODEbits.UARTEN = 0;  // Bit15 TX, RX DISABLED, ENABLE at end of func
  63.         //U2MODEbits.notimplemented;    // Bit14
  64.         U2MODEbits.USIDL  = 0;  // Bit13 Continue in Idle
  65.         U2MODEbits.IREN   = 0;  // Bit12 No IR translation
  66.         U2MODEbits.RTSMD  = 0;  // Bit11 Simplex Mode
  67.         //U2MODEbits.notimplemented;    // Bit10
  68.         U2MODEbits.UEN    = 0;  // Bits8,9 TX,RX enabled, CTS,RTS not
  69.         U2MODEbits.WAKE   = 0;  // Bit7 No Wake up (since we don't sleep here)
  70.         U2MODEbits.LPBACK = 0;  // Bit6 No Loop Back
  71.         U2MODEbits.ABAUD  = 0;  // Bit5 No Autobaud (would require sending '55')
  72.         U2MODEbits.URXINV = 0;  // Bit4 IdleState = 1  (for dsPIC)
  73.         U2MODEbits.BRGH   = 0;  // Bit3 16 clocks per bit period
  74.         U2MODEbits.PDSEL  = 0;  // Bits1,2 8bit, No Parity
  75.         U2MODEbits.STSEL  = 0;  // Bit0 One Stop Bit
  76.         // Load a value into Baud Rate Generator.  Example is for 9600.
  77.         // See section 19.3.1 of datasheet.
  78.         //  U2BRG = (Fcy/(16*BaudRate))-1
  79.         //  U2BRG = (37M/(16*9600))-1
  80.         //  U2BRG = 240
  81.         U2BRG = 240;            // 40Mhz osc, 9600 Baud
  82.         // Load all values in for U1STA SFR
  83.         U2STAbits.UTXISEL1 = 0; //Bit15 Int when Char is transferred (1/2 config!)
  84.         U2STAbits.UTXINV   = 0; //Bit14 N/A, IRDA config
  85.         U2STAbits.UTXISEL0 = 0; //Bit13 Other half of Bit15
  86.         //U2STAbits.notimplemented = 0; //Bit12
  87.         U2STAbits.UTXBRK   = 0; //Bit11 Disabled
  88.         U2STAbits.UTXEN    = 0; //Bit10 TX pins controlled by periph
  89.         U2STAbits.UTXBF    = 0; //Bit9 *Read Only Bit*
  90.         U2STAbits.TRMT     = 0; //Bit8 *Read Only bit*
  91.         U2STAbits.URXISEL  = 0; //Bits6,7 Int. on character recieved
  92.         U2STAbits.ADDEN    = 0; //Bit5 Address Detect Disabled
  93.         U2STAbits.RIDLE    = 0; //Bit4 *Read Only Bit*
  94.         U2STAbits.PERR     = 0; //Bit3 *Read Only Bit*
  95.         U2STAbits.FERR     = 0; //Bit2 *Read Only Bit*
  96.         U2STAbits.OERR     = 0; //Bit1 *Read Only Bit*
  97.         U2STAbits.URXDA    = 0; //Bit0 *Read Only Bit*
  98.         IPC7 = 0x4400;                  //Mid Range Interrupt Priority level, no urgent reason
  99.         IFS1bits.U2TXIF    = 0; //Clear the Transmit Interrupt Flag
  100.         IEC1bits.U2TXIE    = 1; //Enable Transmit Interrupts
  101.         IFS1bits.U2RXIF    = 0; //Clear the Recieve Interrupt Flag
  102.         IEC1bits.U2RXIE    = 1; //Enable Recieve Interrupts
  103.         U2MODEbits.UARTEN  = 1; //And turn the peripheral on
  104.         U2STAbits.UTXEN = 1;
  105. }
  106.  
  107. void InitPorts() {
  108.         AD1PCFGHbits.PCFG23 = 1;        // This is important.  RA7 is muxxed with AN23,
  109.                                                                 // So we need to config the pin as DIGITAL
  110.         TRISA = 0x0080;                         // only 0th bit needs be output. A7 is input
  111. }
  112.  
  113. void putUART2( char c){
  114.         while ( U2STAbits.UTXBF); // wait while Tx buffer full
  115.         U2TXREG = c;
  116. }
  117.  
  118. void putsUART2( char *s){
  119.         unsigned int i=0;
  120.         while(s[i])             // loop until *s == ‘\0’, end of string
  121.         putUART2(s[i++]);       // send the character and point to the next one
  122. }
  123.  
  124.  
  125. int main(void) {
  126.        
  127.         InitClock();    // This is the PLL settings
  128.         InitUART2();    // Initialize UART2 for 9600,8,N,1 TX/RX
  129.         InitPorts();    // LEDs outputs
  130.  
  131.         Delay(Delay_5mS_Cnt * 100);
  132.         putsUART2(mytext);
  133.  
  134.         while(1) {              // The ever versatile Infinite Loop! Do Nothing
  135.  
  136.         }
  137. }
« Última modificación: 18 de Agosto de 2009, 05:13:14 por RedPic »
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 #28 en: 29 de Diciembre de 2007, 09:11:00 »
Que es el ultimo >asdfg que aparece en pantalla??
Lo escribes tu??
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 #29 en: 29 de Diciembre de 2007, 10:12:17 »
Que es el ultimo >asdfg que aparece en pantalla??
Lo escribes tu??

Si, la primera parte "dsPIC33F ...." la saca el dsPIC antes de entrar en el While(1), a partir de ahí lo que hace es hacer eco de lo que recibe por el canal serie y le escribí desde el Siow.exe lo de "asdfg" que él amablemente me devolvió por el mismo medio.  :mrgreen:

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