# ¿Cómo programar con el módulo XCU a través del IDE Microchip Studio for AVR?

Si tu entorno de desarrollo es el **IDE Microchip Studio for AVR** y quieres programar microcontroladores directamente con el módulo **XCU,** es posible hacerlo gracias a la herramienta **AVRDUDE**, para ello realiza los siguientes pasos.

{% hint style="success" %}
Las siguientes configuraciones son **compatibles** con el anterior IDE para AVRs, **Atmel Studio 7**.
{% endhint %}

{% hint style="warning" %}
Antes de comenzar es necesario tener instalado el **Software MICROSIDE v1.0**, si no cuentas con el puedes descargarlo a través del siguiente [**link**](https://microside.com/?sdm_process_download=1\&download_id=5472).
{% endhint %}

<table data-card-size="large" data-column-title-hidden data-view="cards" data-full-width="false"><thead><tr><th align="center"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><mark style="color:green;"><strong>Descargar Software MICROSIDE v1.0</strong></mark></td><td><a href="https://microside.com/?sdm_process_download=1&#x26;download_id=5472">https://microside.com/?sdm_process_download=1&#x26;download_id=5472</a></td></tr></tbody></table>

## Configuración para programar con XCU desde Microchip Studio for AVR

1. En el IDE Microchip Studio for AVR, dirígete al menú superior, selecciona ***Tools*** y da clic en ***External Tools…***

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FjaLe5pLynLHjBUeUALg0%2FVentana%20Tools.png?alt=media&#x26;token=94e39b8e-c941-43fc-9d94-c183a7061ce8" alt=""><figcaption></figcaption></figure>

2. Se mostrará una ventana donde se realiza la configuración del programador **XCU**, coloca los siguientes valores:&#x20;

**Title:**   XCU (También se puede colocar XCU LT)

**Command:**  C:\Program Files (x86)\MICROSIDE\XIDE v1.0\avrdude.exe\
(La ubicación puede variar dependiendo de la ruta donde se instaló el Software MICROSIDE v1.0)

**Arguments**: -c pickit2 -p m328p -P usb -e -U flash:w:”$(BinDir)\\$(TargetName).hex”:a\
(Comandos de AVRDUDE para la programación del microcontrolador, puedes encontrar los comandos compatibles y sus detalles en el siguiente apartado [**Lista de comandos AVRDUDE**](#lista-de-comandos-avrdude-que-podras-utilizar-en-la-parte-de-arguments.))

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2Fle6pRw5CIyK6aNgAzdg6%2FVentana%20external%20tools.png?alt=media&#x26;token=57e11d97-2221-40a9-bed7-76724bcbaf90" alt=""><figcaption></figcaption></figure>

3. Una vez configurado, marca la casilla ***Use Output window*** y da clic en ***OK*****.**
4. Cuando el **código este compilado y listo** para grabarse en el microcontrolador, dirígete al menú superior, selecciona ***Tools*** y aparecerá la herramienta externa (**XCU**) que se configuró previamente, da clic en ella.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FnWGkKcADvBxERjkvDDzF%2FVentana%20Tools%20XCU.jpg?alt=media&#x26;token=8261def4-6afb-43a0-a104-d14907fb6bc4" alt=""><figcaption></figcaption></figure>

5. Por último, se comenzará a grabar el código en el microcontrolador a través del módulo **XCU** y el registro se mostrará en la ventana inferior como la siguiente imagen.

<figure><img src="https://177299348-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyV2zAlQAiqg46a3Lr8z%2Fuploads%2FJuc66ltIWczb7pxbJtHT%2FRegistro.jpg?alt=media&#x26;token=49360f79-3a86-40e5-ad09-a17ed7b78092" alt=""><figcaption></figcaption></figure>

### Lista de comandos **AVRDUDE para programar AVRs**

**-p** (Microcontrolador) Te ayuda para decir el microcontrolador que se está programando. Por ejemplo, si está programando un microcontrolador ATmega328P, use **m328p.**

**-b** (Velocidad de transmisión) Te ayuda a anular la velocidad de transmisión en serie para programadores.

**-B** (Velocidad de bits) Te ayuda a controlar la tasa de bits, es la rapidez con que el programador se comunica con el chip.

**-C** (archivo de configuración) Te ayuda a la configuración del archivo **AVRDUDE** sobre todas las diferentes formas en que puede comunicarse con el programador. Hay un archivo de configuración predeterminado.

**-c** (programador) Te ayuda a especificar el tipo de programador. Por ejemplo, si se está utilizando el programador XCU se pondrá pickit2.

**-P** (puerto) Te ayuda a especificar el puerto de comunicación que se utiliza para la comunicación con el programador. Por ejemplo, puede ser COM1 o USB.

**-F**  Te ayuda a especificar el microcontrolador que estas programando.

**-e** Te ayuda a borrar el programa que ya se encontraba en el microcontrolador para poder cargar uno nuevo.

**-U** Este comando es realmente importante, con el realizamos la programación en nuestro microcontrolador, con el podemos realizar la escritura en flash o eeprom.  Los comandos r, w, v, son herramientas del comando principal (-U) se puede utilizar r (lectura) w (escritura) o v (verificar). Por ejemplo, si se desea escribir en memoria flash seria: **-U flash:w:**

**-n** Esto significa que en realidad no escribes nada.

**-V** Esto desactiva la verificación automática al escribir

**-u**  Esto te ayuda si deseas modificar los bits del fusible.

**-t** : Este es un modo ‘terminal’ donde puede escribir comandos en una fila. No uses esto, es confuso para los principiantes.

**-E** : Esto te ayuda a enumerar algunas especificaciones para el programador.

**-v** : Esto te da una salida detallada, en caso de que quieras depurar algo.
