TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: migsantiago en 26 de Marzo de 2010, 12:34:17

Título: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 12:34:17
Hola Amigos

El siguiente tutorial pretende ayudar a iniciarse con los PIC32MX y prender un led.

NOTA: Puedes encontrar este mismo tutorial en mi página web:
http://migsantiago.com/index.php?option=com_content&view=article&id=17&Itemid=20

Material empleado
+ PIC32MX420F032H (link (http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en535091))
+ MPLAB (8.43 o mejor)
+ C32 Standard v1.10

http://img338.imageshack.us/img338/5713/tuto1dg.png
(http://img338.imageshack.us/img338/5713/tuto1dg.png)

Puedes construir un adaptador de TQFP de 64 pines a DIP para protoboard con los siguientes adjuntos...

http://img130.imageshack.us/img130/6904/tqfp.png
(http://img130.imageshack.us/img130/6904/tqfp.th.png) (http://img130.imageshack.us/img130/6904/tqfp.png)

3 placas
http://www.4shared.com/file/249217299/ad24a43e/TQFP64_PIC32MX.html

1 placa
http://www.4shared.com/file/249219093/aeaaee7d/TQFP64_PIC32MX_una_placa.html

Las conexiones obligatorias que el PIC32 debe llevar son:

+ Todos los pines Vdd y Vss siempre conectados (3.3V y 0V respectivamente)
+ Todos los pines AVdd y AVss siempre conectados
+ Un capacitor de 10uF entre la terminal Vcap/Vddcore y GND, sirve para regular el voltaje interno del núcleo del pic
+ La terminal ENVREG conectada a 3.3V para habilitar el regulador interno
+ El pin MCLR como siempre se ha conectado
+ Los pines PGEC1 y PGED1, o PGEC2 y PGED2 conectados al programador Pickit2 (por ahora el único que lo puede programar)
+ OSC1 y OSC2 con un cristal de 4MHz y capacitores de 15pF (si se usa el Fast RC Oscillator interno entonces esto se omite)

Las conexiones quedan más o menos así:

http://img532.imageshack.us/img532/6369/pic32mxmnimaconexin.png
(http://img532.imageshack.us/img532/6369/pic32mxmnimaconexin.png)

Una vez que se ha conectado lo anterior, puedes colocar un LED y una R de 220 ohms en cualquier terminal del puerto B (RB0 a RB15).

Debes abrir el Project Wizard de MPLAB, elegir el pic apropiado, elegir la suite C32 y crear un nuevo archivo.c en el que colocarás lo siguiente:

Código: [Seleccionar]
/*
Programa para encender un led
MigSantiago, Marzo 2010
*/
#include <p32mx420f032h.h>
#include <plib.h>

//Entrada de cristal a 4MHz
//Para CPU será elevada a 80Mhz

//CPU
#pragma config FPLLIDIV = DIV_1, FPLLMUL = MUL_20, FPLLODIV = DIV_1 //80MHz
#pragma config POSCMOD = XT, FNOSC = PRIPLL, FPBDIV = DIV_8
#pragma config FSOSCEN = OFF //sin oscilador secundario

int main()
{
    int i=0;

    //Disable JTAG port
    //Hace que las terminales RB10 y RB11 sean I/O
    DDPCONbits.JTAGEN = 0;

    //PORTSetPinsDigitalOut(IOPORT_B, BIT_0);
    mPORTBDirection(0x0000); //todo b salida

while(1)
   {
   ++i;
   PORTWrite(IOPORT_B, i);
   }
}

Adicionalmente hay que agregar una ruta include al proyecto para que el compilador encuentre las librerías. Esto se logra yendo a Project, Build Options, project, Directories, Show Directories for: Include Search Path y se debe agregar esta ruta:

C:\Program Files (x86)\Microchip\MPLAB C32\pic32mx\include\proc

Modifica Program Files (x86) para que coincida con tu Windows.

Lo que hace el programa es que incrementa la variable i en una unidad. Posteriormente la coloca en el puerto B. El resultado es que cada pin del puerto B tendrá un encendido y apagado con un duty time del 50%. El pin b0 es el que más rápidamente oscilará mientras que el pin b15 será el más lento, pero todos tendrán un duty time del 50%.

Con un voltímetro en DC puedes comprobarlo midiendo aproximadamente 1.6V en los pines.

Este es mi circuito de prueba:

http://img260.imageshack.us/img260/7033/dsc00406wc.jpg
(http://img260.imageshack.us/img260/7033/dsc00406wc.th.jpg) (http://img260.imageshack.us/img260/7033/dsc00406wc.jpg)

Como todo buen PIC, el PIC32 trae PLL para multiplicar la frecuencia de oscilación hasta 80MHz (80MIPS). La ruta que sigue la frecuencia de oscilación es la siguiente:

http://img248.imageshack.us/img248/9381/osci.png
(http://img248.imageshack.us/img248/9381/osci.png)

Entran 4MHz, se dividen entre 1, se multiplican por 20, se dividen entre 1 y salen 80MHz. Entran 80Mhz al CPU. Entran 10MHz al bus de los periféricos ya que el divisor es de 8.

Si quieres ahorrarte el cristal deberás configurar el FRCPLL. Dividir los 8MHz que genera entre 2, multiplicarlo por 20, dividirlo entre 1 y obtendrás 80MHz sin cristal.

La librería plib.h incluye muchas funciones para el manejo de los periféricos del PIC32 (I2C, UART, Timers, etc.).

Existen muchas incongruencias entre lo que anuncia la página web del PIC32MX420F032H y lo que detalla la datasheet. La más importante, la velocidad del micro. En la página menciona que es de hasta 40MHz mientras que la datasheet indica que va hasta 80MHz.

Lo checaré y les aviso.

http://img401.imageshack.us/img401/8674/inconz.png
(http://img401.imageshack.us/img401/8674/inconz.th.png) (http://img401.imageshack.us/img401/8674/inconz.png)
Título: Re: Breve Tutorial - PIC32MX
Publicado por: AKENAFAB en 26 de Marzo de 2010, 12:50:12
Muy bueno Mig.
Citar
+ Los pines PGEC1 y PGED1, o PGEC2 y PGED2 conectados al programador Pickit2 (por ahora el único que lo puede programar)

En esto que explicas , se conectan los 2???

O solo la pareja PGEC1 y PGED1 ??  o la pareja PGEC2 y PGED2


Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 13:00:06
Solo una pareja debes conectar, la que más se acomode a tu circuito. Para mi caso en que apenas estoy usando uno de los cincuenta y tantos pines disponibles, es igual si uso la interfaz 1 o la 2.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: AKENAFAB en 26 de Marzo de 2010, 13:10:04
Entendido

Gracias!
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 13:24:10
Hay librerias de Delays y de impresion a puertos de comunicacion, como tiene CCS?? :shock:
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 13:32:20
No, no hay librerías con Delays. Ayer tardé un buen rato buscándolas. No existen porque los delay_ms y delay_us que conocemos son una forma de desperdiciar energía y procesamiento del CPU (los ciclos anidados). Es mejor configurar una interrupción por timer y poner en sleep al micro mientras tanto. A estos niveles de procesamiento (32 bits y 80MHz) este tipo de cosas deben cuidarse.

Hay librerías de delay para el PIC18, pero no son tal cual delays movibles, son delays constantes integrados para el control de una LCD.

Sobre los puertos de comunicación puedes investigar más dando click en Help, Topics, C32 compiler, C32 peripheral lib guide.

Código: [Seleccionar]
This chapter is organized as follows:
Individual Peripheral Module functions and macros
• System Level Functions
• Prefetch Cache Functions
• DMA Functions
• Bus Matrix Functions
• NVM Functions
• Reset/Control Functions
• Interrupt Functions
• Oscillator Functions
• Power Save Functions
• I/O Port Functions
• Timer Functions
• Input Capture Functions
• Output Compare Functions
• SPI Functions
• I2C™ Functions
• UART Functions
• PMP Functions
• RTCC Functions
• A/D Functions
• Comparator Functions
• CVREF Functions
• Watchdog Timer Functions

Es como en CCS, trae la lista de funciones y un par de ejemplos para ponerlas a prueba.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 26 de Marzo de 2010, 13:35:21
Si señor!! esto se pudo bueno.. Grandioso Mig.

Estoy esperando empezar con algo..No tengo nada..  :(
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 13:41:44
Para LCD y perifericos por SPI o I2C hay o es mejor usar el hardware??
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 13:49:30
Para LCD y perifericos por SPI o I2C hay o es mejor usar el hardware??

No sé amigo Mglsoft, apenas ayer estrené el C32 y estuve paseándome por los menús, ayudas y archivos.h.

No hay mucha diferencia con las librerías de CCS, todo viene documentado y con "defines" amigables.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 26 de Marzo de 2010, 13:58:45
Para LCD y perifericos por SPI o I2C hay o es mejor usar el hardware??

Yo conozco un foro en el que si encuentras algun problema con los PICs...seguro alguien sabe lo que uno no y te ayudan sin problemas. Eso si debes respetar las reglas y preguntar como se debe, ademas de ello debes mostrar que si estas intentando solucionar el problema con trabajo y esfuerzo. Su nombre tiene algo como TxxxPIC..     :D :D :D

LO que creo es que para ayudar al cambio de nuestra dependencia de CCS y pasar a C32 hay que crear esos macros de printf, delay_ms, i2c_start y todas las que nos tienen amañados y amarrados los de CCS.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 14:06:02
Gracias, yo voy a estar viendolo tambien...

Estaba por decir que lo simularia en Proteus, pero ahora veo que ni lo olfatea tampoco, buahhh!!!
Título: Re: Breve Tutorial - PIC32MX
Publicado por: jhozate en 26 de Marzo de 2010, 14:09:16
eso mismo hiba a decir marcos, yo no tengo nada para empezar y pense que proteus me salvaria,....pero toca si o si hard por que en proteus no figura ningun pic32 :(
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 14:16:49
Un segundo ejemplo, esta vez utiliza el timer1 configurado para generar una interrupción cada 1s e incrementar el estado del puerto B. Ahora sí el led flashea a una velocidad humanamente visible.

Código: [Seleccionar]
/*
Programa para encender un led
MigSantiago, Marzo 2010
*/
#include <p32mx420f032h.h>
#include <plib.h>

//Entrada de cristal a 4MHz
//Para CPU será elevada a 80Mhz

//CPU
#pragma config FPLLIDIV = DIV_1, FPLLMUL = MUL_20, FPLLODIV = DIV_1 //80MHz
#pragma config POSCMOD = XT, FNOSC = PRIPLL, FPBDIV = DIV_8
#pragma config FSOSCEN = OFF //sin oscilador secundario

// Let compile time pre-processor calculate the PR1 (period)
#define SYS_FREQ             (80000000L)
#define PB_DIV                 8
#define PRESCALE               256
#define TOGGLES_PER_SEC        1
#define T1_TICK               (SYS_FREQ/PB_DIV/PRESCALE/TOGGLES_PER_SEC)

int i=0;

//////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    //Disable JTAG port
    //Hace que las terminales RB10 y RB11 sean I/O
    DDPCONbits.JTAGEN = 0;

    mPORTBDirection(0x0000); //todo b salida
    //Configure Timer 1 using internal clock, 1:256 prescale
    OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_256, T1_TICK);

    // set up the timer interrupt with a priority of 2
    ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_2);

    // enable multi-vector interrupts
    INTEnableSystemMultiVectoredInt();

    while(1);
}
//////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////
//Interrupción timer 1
void __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler(void)
{
    // clear the interrupt flag
    mT1ClearIntFlag();

    // .. things to do
    // .. in this case, toggle the LED
   ++i;
   PORTWrite(IOPORT_B, i);
}
//////////////////////////////////////////////////////////////////////////////////////////
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 14:23:55
Hasta aca entiendo todo.
Haces facil la configuracion de tiempos de ticks del timer 1, solo una constante y ya esta??

Cada interrupcion tiene su propio vector??
Esta bueno, bueno.

Me guta muto!!! :-/ :-/
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 14:31:10
Sí, el timer1 es diferente a los tmr1 de siempre.

Esta vez el timer1 se "autorecarga". Uno carga el valor que quiere que dure el tiempo, en este caso T1_TICK que es de 1s. El compilador hace las cuentas por uno y determina que PR1 debe cargarse con 39062.

El timer1 empieza a contar. Cuando llega a 39062 entonces genera la interrupción y automáticamente el TMR1 se pone a 0x0000... es genial porque ya no depende de uno, ya no hay que hacerlo en la subrrutina de interrupción.

Ah y no me preguntes sobre los vectores de interrupción y prioridades, si no entendía los de los PIC18, menos estos  :D
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 14:34:59
Se han puesto a la par de la linea top de Motorola, con esta linea...
Labmouse seguramente nos dira si es asi... :) :)
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 26 de Marzo de 2010, 14:56:47
Hola, Sip efectivamente en los Freescale, se tiene un herramienta que se llama Processor Expert, es propia del Codewarrior y permite de manera grafica configurar a que tiempo quieres las interrupciones, ademas de ello, cada timer tiene asociados unos canales, por los cuales puedes con ese mismo TIMER:

- Interrupcion cada tiempo que quieras.
- Generar señal PWM por canal
- Deteccion de flanco en señales..Subida, bajada o por ambos.
- Modo Captura por canal.


Lo anterior permite con un TIMER tener hasta 7 servicios. y normalmente tienen minimo 2 TIMER uno de 6 canales otro de 2 canales. Tampoco es necesario estar pendiente de borrar banderas de interrupcion, el las hace solo (Algo como CCS pero mejor)...

Yo ya hablaba mal de los MICROCHIP..pero estos PIC32 prometen mucho y llego la hora de comprobarlos en persona. Es mas en mis manos ya tengo ESTA HERRAMIENTA.

(http://www.segger.com/cms/admin/uploads/evalBoards/freescale-mcf51cn128-tower-system_image6.jpg)

Tambien esta soportada con ejemplos por FreeRTOS, y quiero ponerlos a la par a ver quien se queda primero...  :D
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 14:59:50
Pavada de mesita ratona te compraste !! :D :D :D
Título: Re: Breve Tutorial - PIC32MX
Publicado por: Suky en 26 de Marzo de 2010, 17:02:14
Felicidades por el avance Santiago!  :-/ Estoy ansioso por entrarle a estos micros, pero por ahora en reposo porque tengo posiblemente turno con el quirofano, apendicitis!  :8}

Hay librerias de Delays y de impresion a puertos de comunicacion, como tiene CCS?? :shock:

jejeje! CCS en único en eso. Pero C18, C30 (los que conozco ) tienen librerías para configuración y control de los periféricos. C18 también incluye librerías para usar I2C, SPI, UART por software pero no así C30  :?

C18 tiene 4 funciones para demoras, Delay10TCYx(i), Delay100TCYx(i), Delay1KTCYx(i), Delay10KTCYx(i) y para utilizarlas el programador debe hacer los cálculos o hacer un define. También en C30 está la función __delay32(Numero de ciclos) y una par de defines __delay_ms, __delay_us que utilizan esa función.

Estos compiladores me encantan, porque para utilizarlos se hace necesario estudiar los microcontroladores  :-/


Saludos!
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 17:06:22
Felicidades por el avance Santiago!  :-/ Estoy ansioso por entrarle a estos micros, pero por ahora en reposo porque tengo posiblemente turno con el quirofano, apendicitis!  :8}


Cuídate, tendrás que descansar de los pics un rato.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: Suky en 26 de Marzo de 2010, 17:13:21
Felicidades por el avance Santiago!  :-/ Estoy ansioso por entrarle a estos micros, pero por ahora en reposo porque tengo posiblemente turno con el quirofano, apendicitis!  :8}


Cuídate, tendrás que descansar de los pics un rato.

Gracias! Pero no creo que descanse, me voy a imprimir algo ( ;-) ) para leer  :mrgreen:
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 17:15:19
Creo que para cerrar la herida en vez de coserlo le pondran varios pics abrochandola !! :D :D :D :D
Título: Re: Breve Tutorial - PIC32MX
Publicado por: Nocturno en 26 de Marzo de 2010, 18:53:48
Ufff, qué rápido vais, mucho más de lo que me da tiempo a asimilar.
Me apunto al hilo.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 18:57:18
Que tal el simulador de MPLAB ??
Podremos ver estos ejemplos alli??

Al menos hasta que tengamos una plaquita hecha.
Yo pedi dos de estos:

PIC32MX795F512L (http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en545660)

Para tirar, apunto lejos!! :D :D :D

(http://www.microchip.com/stellent/images/mchpsiteimages/PIC32MX7xxBlockDiagramChip.gif)
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 26 de Marzo de 2010, 19:45:17
Que tal el simulador de MPLAB ??
Podremos ver estos ejemplos alli??

Al menos hasta que tengamos una plaquita hecha.
Yo pedi dos de estos:

PIC32MX795F512L (http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en545660)

Para tirar, apunto lejos!! :D :D :D



Sí, el MPLAB SIM funciona con ellos. Pero te aseguro que pierde magia al no probarlo frente a ti jeje
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 26 de Marzo de 2010, 19:51:25
Pero no me aguanto la espera !!!!! :-/ :-/ :-/ :-/ :-/ :lol: :lol: :D :D :D
Título: Re: Breve Tutorial - PIC32MX
Publicado por: ema en 26 de Marzo de 2010, 20:24:04
Yo pedi dos de estos: PIC32MX795F512L (http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en545660)

yo tambien pero no los tenian en stock... hace casi un mes que los espero. Pero ayer me llego el tracking number...

Me subo a la propuesta... intentare armar una plaquita para este PIC32.

Saludos
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 29 de Marzo de 2010, 00:19:40
Sobre las librerías de delays, acabo de darme cuenta de que estaba mal... sí existen.

Se llama TimeDelay.c y cuenta con dos funciones DelayMs() y Delay10us(). El archivo está en:

C:\Microchip Solutions\Microchip\Common

 :-/

Diseñada para C18, C30 y C32. Parte de Microchip Applications Library.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: ema en 29 de Marzo de 2010, 15:36:47
Gran sorpresa me lleve al darme cuenta que el PIC32MX795F512L, no posee ETHERNET!!!  :shock: :shock:

The Ethernet controller is a bus master module that
interfaces with an off-chip Physical Layer (PHY) to
implement a complete Ethernet node in a system.


Saludos.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 29 de Marzo de 2010, 17:51:21
No es una cosa loca lo que hacen.
Con la cantidad de perifericos y lo dificil de cambiar ante una reparacion del PIC32, es mejor sacrificar una interfaz que ponerse a integrarlo en el mismo PIC...
Título: Re: Breve Tutorial - PIC32MX
Publicado por: Suky en 29 de Marzo de 2010, 19:38:00
Gran sorpresa me lleve al darme cuenta que el PIC32MX795F512L, no posee ETHERNET!!!  :shock: :shock:

The Ethernet controller is a bus master module that
interfaces with an off-chip Physical Layer (PHY) to
implement a complete Ethernet node in a system.


Saludos.

Exactamente, el otro día me di cuenta, hay que acompañarlo de otro chip de 50 pines facilisimo de soldar  :8}
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 29 de Marzo de 2010, 21:58:22
Este es el que consegui me manden como muestra de National...

DP83848CVV

Tiene un encapsulado de 48 patas, paso 0.5 mm :D :D :D

Pobre el que suelde!!! :mrgreen: :mrgreen: :mrgreen:
Título: Re: Breve Tutorial - PIC32MX
Publicado por: RICHI777 en 29 de Marzo de 2010, 22:33:32
Perdon que me meta, hoy por hoy casi todos los MCU que soportan Ethernet vienen con el controlador MAC ( Media Access Control ) como este PIC32 y dejan la interfaz fisica ( PHY ) para conectar afuera con estos chips que mencionaron y con intergaces estandarizadas ( SNI, RMI, MII ) . El costo de estos chips no deberia ser mayor que u$s 2.

Saludos !
Título: Re: Breve Tutorial - PIC32MX
Publicado por: RICHI777 en 29 de Marzo de 2010, 22:38:46
Aparte tanto estos ( PIC32 ), los ColdFire V1 de FreeScale, como los AVR32 salieron para hacerles frente a su peor enemigo los ARM Cortex M3. En cuanto salgan los PIC32 y los ColdFire V1 en encapsulados pequeños ( 16-20 pines ) chau a los micros de 8/16 bits.

Saludos !
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 29 de Marzo de 2010, 23:29:36
Es cierto, ya no valdria la pena estar penando para sacar un bit mas o menos y que tu programa entre dentro del pic, ademas en Microchip Direct un PIC32 de los mas grandes vale 7,5 dolares.
No miren los precios de MCElectronics porque se desmayan, je..je.. :mrgreen: :mrgreen:
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 30 de Marzo de 2010, 18:44:18
Aparte tanto estos ( PIC32 ), los ColdFire V1 de FreeScale, como los AVR32 salieron para hacerles frente a su peor enemigo los ARM Cortex M3. En cuanto salgan los PIC32 y los ColdFire V1 en encapsulados pequeños ( 16-20 pines ) chau a los micros de 8/16 bits.

Saludos !

Efectivamente, en parte ello me motivo a pasarme de una vez por todas a 32 bits. No falta mucho para que tengamos microcontroladores de 32 bits a bajo costo  y encapsulados pequeños.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: RICHI777 en 30 de Marzo de 2010, 18:49:49
Alguien sabe de cuantos namometros es la tegnologia con que esta hecho el PIC32 y cual es el tamaño de la pastilla ?

Saludos !
Título: Re: Breve Tutorial - PIC32MX
Publicado por: cerebro en 09 de Abril de 2010, 13:46:57
 :shock: algo interesante sobre C32 (no se si pasara lo mismo con C30) es que las variables int, long y sus compañeros ocupan todos 32 bits. Esto esta hecho a proposito porque todas las operaciones tienen el mismo tiempo de calculo  y como estos micros poseen mayor cantidad de memoria decidieron hacerlo de esta manera. Si lo que nos preocupa es el espacio o la variable no lo requiere, a utilizar tipo char que sigue ocupando sus 8 bits  ;-). yo ya lo probe en un programita y es asi nomas... que lo tiró  :D

Saludos!
Título: Re: Breve Tutorial - PIC32MX
Publicado por: RICHI777 en 09 de Abril de 2010, 14:18:36
Hola,

Citar
...es que las variables int, long y sus compañeros ocupan todos 32 bits. Esto esta hecho a proposito porque todas las operaciones tienen el mismo tiempo de calculo  y como estos micros poseen mayor cantidad de memoria decidieron hacerlo de esta manera

El estandar recomienda que el tamaño de un int sea el mas eficiente que pueda manejar la arquitectura sobre la cual generara codigo el compilador. En este caso y al igual que los compiladores que generan codigo Win32 el int tiene 32 bits o 4 bytes de largo, el mismo tamaño de los longs, esto es porque para arquitecturas X-86 es mas eficiente a nivel instrucciones manejar un dato a 32 bits que uno de 8 bits.

Con lo general el estandar recomienda esto:

Código: C
  1. sizeof( short ) <= sizeof( int ) <= sizeof( long )

El unsigned char debe de ser de un byte.

Saludos !
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 09 de Abril de 2010, 14:30:16
RICHI777

Pero un int en un JM60 Freescale de 8 bits, ocupa 16 bits...
Título: Re: Breve Tutorial - PIC32MX
Publicado por: RICHI777 en 09 de Abril de 2010, 14:36:39
Citar
Pero un int en un JM60 Freescale de 8 bits, ocupa 16 bits...

Me falto aclarar que el short debe ser al menos de 16 bits de largo, es por eso.

http://en.wikipedia.org/wiki/C_variable_types_and_declarations

Saludos !
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 09 de Abril de 2010, 14:39:22
Si señor, muchas gracias por este dato.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: RICHI777 en 09 de Abril de 2010, 14:56:05
Como nota aclaratoria, y supongo ( no lo afirmo porque no conozco al team que desarrollo el core ) que el manejo del registro H:X que es de 16 bits, es signeado es decir contiene instrucciones para el manejo de matematica con signo. Si haces un dissasembler de porciones de codigo que trabajen con int vas a ver que siempre acceden al registro H:X por sus caracteristicas signeadas y para ahorrarle trabajo al compilador.

Saludos !
Título: Re: Breve Tutorial - PIC32MX
Publicado por: cerebro en 09 de Abril de 2010, 14:59:13
perfecto!, entonces no fue a antojo sino en base al standard. Se agradece.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 09 de Abril de 2010, 18:47:07
En CCS int ocupa 8 bits... :?
Título: Re: Breve Tutorial - PIC32MX
Publicado por: ema en 09 de Abril de 2010, 18:50:14
Este es el que consegui me manden como muestra de National...

DP83848CVV

Tuviste que realizar algun pago por este?

Saludos
Título: Re: Breve Tutorial - PIC32MX
Publicado por: MGLSOFT en 09 de Abril de 2010, 23:32:56
Finalmente no me los mandan si no pago 35 dolares el envio... ;-) ;-)
Título: Re: Breve Tutorial - PIC32MX
Publicado por: spiritbreaker en 29 de Octubre de 2010, 11:34:52
ya los consegui 2 32mx440f256h , y tengo el mplab 8.10 , ,, ya quiero empezar pero no tengo el pickit2 jejeje , un apregunta funciona con enigma?
y un aayuda para pasar un programa de 33fj a 32 mx, que considerar para variar el programa ??',, saludos
Título: Re: Breve Tutorial - PIC32MX
Publicado por: migsantiago en 29 de Octubre de 2010, 12:02:00
ya los consegui 2 32mx440f256h , y tengo el mplab 8.10 , ,, ya quiero empezar pero no tengo el pickit2 jejeje , un apregunta funciona con enigma?
y un aayuda para pasar un programa de 33fj a 32 mx, que considerar para variar el programa ??',, saludos

Hola, para migrar el programa deberás leer instrucción por instrucción y compararla con la datasheet del PIC32.

dsPIC33 se compila con C30. PIC32MX se compila con C32.
Título: Re: Breve Tutorial - PIC32MX
Publicado por: LABmouse en 01 de Marzo de 2011, 15:45:19
Hola a todos!,

Quisiera preguntar MIG, como le haces para programar con el PICKit2 este PIC32, si en MPLAB no esta permitido PICKIt2 con ese PIC....

Es que estoy intentando empezar con un PIC32 pero quería saber si con el PicKit2 se puede.

Gracias!


Bueno pues hay algo extraño en MPLAB.

Mire la lista de dispositivos soportados por PICKit2 y es esta:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en027813

En esa lista están:

PIC32MX320F032H, 320F064H
PIC32MX320F128H, 320F128L
PIC32MX340F128H, 340F128L
PIC32MX340F256H
PIC32MX340F512H
PIC32MX360F256L, 360F512L
PIC32MX420F032H
PIC32MX440F128L, 440F128H
PIC32MX440F256H
PIC32MX440F512H
PIC32MX460F256L, 460F512L

La versión que tengo instalada de MPLAB es la 8.63 y según el cuando selecciono uno de esos micros, no soporta PICKIT2..  :shock:

Como es el truco para activarlos?


Según el LINK de la lista, es valida usando MPLAB IDE v8.50. Entonces ¿No habrá soporte para futuras versiones de MPLAB con PICKIT2?
Título: Re: Breve Tutorial - PIC32MX
Publicado por: Suky en 01 de Marzo de 2011, 22:01:15
Hay 2 listas, una con el software de PICKIT2 y otro con MPLAB. Y creo recordar que con MPLAB los PI32 no se pueden programar, solo con el software dedicado.


Saludos!