> ## Documentation Index
> Fetch the complete documentation index at: https://docs.embedder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Flujos de trabajo comunes

Flujos de trabajo prácticos para configurar proyectos, interactuar con hardware, escribir firmware, depurar y administrar sesiones. Cada sección incluye ejemplos de indicaciones que puede adaptar.

## Iniciar un nuevo proyecto

<Steps>
  <Step title="Create or select a project">
    ```txt embedder theme={"system"}
    /project 
    ```

    <Frame caption="Project selection interface">
      <img src="https://mintcdn.com/embedder/4y2q1agcuRz3fRND/images/select-project.png?fit=max&auto=format&n=4y2q1agcuRz3fRND&q=85&s=a9be00239cea81ce0616f63c85ec8a36" alt="Diálogo SELECCIONAR PROYECTO con cuadro de búsqueda que muestra el botón para crear un nuevo proyecto y la lista de proyectos anteriores" width="1992" height="1656" data-path="images/select-project.png" />
    </Frame>

    Elija un proyecto existente o cree uno nuevo.

    Embedder le pedirá que cree un nuevo proyecto automáticamente si no hay ningún proyecto asociado con el directorio en el que lo ejecuta, así que tenga en cuenta que no siempre es necesario ejecutar `/project`.
  </Step>

  <Step title="Choose a platform">
    Selecciona la plataforma que estás utilizando de nuestro catálogo o agrega la tuya propia.

    <Frame caption="Platform selection interface showing Nordic Semiconductor options">
      <img src="https://mintcdn.com/embedder/ujO4-sDifSwa2qo6/images/select-platform.png?fit=max&auto=format&n=ujO4-sDifSwa2qo6&q=85&s=a6c3fc150ba41632be86d7a8f4b7f876" alt="Diálogo SELECCIONAR PLATAFORMA con cuadro de búsqueda que muestra las plataformas nRF9xxx de Nordic Semiconductor" width="1980" height="1636" data-path="images/select-platform.png" />
    </Frame>

    Para agregar su propia plataforma, escriba el nombre de la plataforma y presione el botón `+ Add "[platform name]"`. Luego se le pedirá que cargue su documentación.

    <Frame caption="Custom platform creation interface">
      <img src="https://mintcdn.com/embedder/4y2q1agcuRz3fRND/images/custom-platform.png?fit=max&auto=format&n=4y2q1agcuRz3fRND&q=85&s=9cb458a44910dc47b9e8d393eb4134e8" alt="Diálogo SELECCIONAR PLATAFORMA que muestra el menú para cargar documentación en formato pdf" width="2134" height="1690" data-path="images/custom-platform.png" />
    </Frame>
  </Step>

  <Step title="Add peripherals">
    Selecciona los periféricos que estás utilizando de nuestro catálogo o añade el tuyo propio.

    <Frame caption="Peripheral selection interface with components from various manufacturers">
      <img src="https://mintcdn.com/embedder/ujO4-sDifSwa2qo6/images/select-peripherals.png?fit=max&auto=format&n=ujO4-sDifSwa2qo6&q=85&s=5bf9421145a180e0648c9072b476478c" alt="Cuadro de diálogo SELECCIONAR PERIFÉRICOS con cuadro de búsqueda que muestra componentes de Analog Devices, Nexperia y Allegro MicroSystems" width="1990" height="1646" data-path="images/select-peripherals.png" />
    </Frame>

    Seleccione los periféricos que está utilizando (sensores I2C, pantallas SPI, módulos UART, etc.).

    Puede agregar periféricos personalizados y cargar sus hojas de datos utilizando el mismo proceso descrito para las plataformas en el paso anterior.

    Ejecute `/peripheral` nuevamente en cualquier momento para agregar o modificar su configuración.
  </Step>

  <Step title="Generate EMBEDDER.md">
    ```txt embedder theme={"system"}
    /init
    ```

    Crea un archivo `EMBEDDER.md` con el contexto, la configuración y más de su proyecto.
  </Step>
</Steps>

<Tip>
  Para dispositivos no incluidos en el catálogo, cargue su propia documentación u hojas de datos a través de `/peripheral` o mediante la consola web (`/console`) para mejorar el rendimiento del agente.
</Tip>

## Interacción de hardware

### Utilice el monitor serie

El terminal serie está integrado directamente en Embedder. La IA lee la salida en serie automáticamente.

**Abra la barra lateral de serie:**

```txt Embedder theme={"system"}
/serial
```

O utilice el método abreviado de teclado: `` Ctrl+` `` (comilla invertida)

**Comportamiento de conexión automática:**

De forma predeterminada, Embedder se conecta automáticamente a su dispositivo después de flashear

Para desactivar la conexión automática, actualice su `EMBEDDER.md` o solicite:

```txt Embedder theme={"system"}
> don't auto-connect to serial after flashing
```

**Filtrar salida en serie:** Haga clic en `[Filter]` en la barra de herramientas en serie para filtrar la salida por patrón de expresiones regulares. Útil para aislar mensajes de registro específicos o errores de resultados ruidosos.

<Frame>
  <img src="https://mintcdn.com/embedder/feqpp7Csqgb6FFzf/images/serial_filter.png?fit=max&auto=format&n=feqpp7Csqgb6FFzf&q=85&s=5e518da4c96ca100e44ea8ce95769018" alt="Filtro de terminal serie que muestra la salida de filtrado de patrones de expresiones regulares" estilo={{ maxWidth:"200px" }} width="688" height="1254" data-path="images/serial_filter.png" />
</Frame>

## Desarrollo de firmware

### Escribir controladores periféricos

Embedder tiene contexto de sus hojas de datos y documentación. Pídale que busque pines, registre mapas y detalles de implementación de controladores cuando desarrolle controladores.

```txt Embedder theme={"system"}
> write an I2C driver for the BME280 sensor on I2C1 (SDA=PB7, SCL=PB6).
> include functions for reading temperature, humidity, and pressure.
> use the existing HAL_I2C functions in our codebase.
```

```txt Embedder theme={"system"}
> create a UART driver for GPS module on UART2 at 9600 baud.
> implement a ring buffer for RX, parse NMEA sentences, and extract lat/long coordinates.
```

```txt Embedder theme={"system"}
> implement SPI driver for the SD card module on SPI1.
> include initialization, single block read/write, and proper CS pin handling on PA4.
```

### Construir y flashear

Embedder utiliza la configuración de su proyecto para determinar las cadenas de herramientas y dependencias requeridas.

<Steps>
  <Step title="Install dependencies">
    ```txt Embedder theme={"system"}
    > help me install the dependencies for this project
    ```
  </Step>

  <Step title="Build the project">
    ```txt Embedder theme={"system"}
    > build the project
    ```
  </Step>

  <Step title="Flash the firmware">
    ```txt Embedder theme={"system"}
    > flash the firmware to the device
    ```
  </Step>

  <Step title="Build, flash, and monitor">
    ```txt Embedder theme={"system"}
    > build and flash, then show me the serial output
    ```
  </Step>
</Steps>

### Trabajar con HAL y SDK

Pregunte acerca de los HAL y SDK específicos del proveedor:

```txt Embedder theme={"system"}
> how do I configure the STM32 HAL for I2C?
```

```txt Embedder theme={"system"}
> show me how to use the ESP-IDF GPIO driver
```

```txt Embedder theme={"system"}
> what's the correct way to initialize DMA on this chip?
```

## Depurar con salida en serie

Embedder lee la salida en serie y puede ayudar a analizar problemas en tiempo real.

### Analizar errores

```txt Embedder theme={"system"}
> what's causing this error in the serial output?
```

```txt Embedder theme={"system"}
> the device keeps resetting, analyze the crash dump
```

```txt Embedder theme={"system"}
> parse the debug logs and find the issue
```

### Ejecución de seguimiento

```txt Embedder theme={"system"}
> add debug prints to trace the initialization sequence
```

```txt Embedder theme={"system"}
> why isn't the interrupt handler being called?
```

## Modo de planificación versus modo de acción

Embedder tiene dos modos para diferentes flujos de trabajo.

### Modo de acción (predeterminado)

Acceso completo a herramientas. Embedder puede leer, escribir y ejecutar.

Usar para:

* Escribir y modificar código.
* Creación y actualización de firmware.
* Realizar cambios en su proyecto.

### Modo de planificación

Análisis de solo lectura. Embedder investiga sin realizar cambios.

Usar para:

* Planificación de refactorizaciones complejas.
* Revisión de arquitectura antes de cambios.
* Análisis de hojas de datos.

**Alternar entre modos:**

* Teclado: `Shift+Tab`
* Comandos: `/plan` o `/act`

**Iniciar en modo plan:**

```txt Embedder theme={"system"}
> /plan
> analyze the power management implementation and suggest improvements
```

<Tip>
  El modo de planificación es ideal para planificar cambios complejos antes de su implementación.
</Tip>

## Documentación y contexto

### Aprovechar la documentación cargada

Las plataformas y periféricos elegidos de nuestro catálogo ya tienen la documentación subida.

Puede cargar más documentos a través de la consola web a la que se puede acceder mediante `/console`.

<Frame caption="Interface for uploading documentation">
  <img src="https://mintcdn.com/embedder/4y2q1agcuRz3fRND/images/console-docs.png?fit=max&auto=format&n=4y2q1agcuRz3fRND&q=85&s=3e8e4a0ae841d2d936c8f3a2c5de982a" alt="Aplicación web que muestra un lugar para cargar la documentación de su proyecto" width="3016" height="2152" data-path="images/console-docs.png" />
</Frame>

Embedder los usará automáticamente:

```txt Embedder theme={"system"}
> what's the maximum I2C clock speed for this sensor?
```

```txt Embedder theme={"system"}
> show me the register map for the accelerometer
```

```txt Embedder theme={"system"}
> what are the power consumption specs in sleep mode?
```

### Asistencia basada en hardware

Haga preguntas específicas de hardware sobre su placa:

```txt Embedder theme={"system"}
> what switch position on the stm32n6570-dk enables flash mode?
```

```txt Embedder theme={"system"}
> what's the pin mapping for the Arduino header?
```

```txt Embedder theme={"system"}
> can I use DMA with this UART peripheral?
```

## modo bash

Omita el agente AI y ejecute comandos del terminal directamente usando el prefijo `!`.

```bash theme={"system"}
!ls -la
```

```bash theme={"system"}
!make clean
```

```bash theme={"system"}
!git status
```

Esto ejecuta el comando en su terminal sin interpretación de IA. Útil para comandos rápidos cuando no necesitas ayuda de IA.

## Modo de envío en serie

Envíe mensajes directamente a su MCU a través de serie usando el prefijo `~`.

```txt embedder theme={"system"}
~help
```

```txt embedder theme={"system"}
~reset
```

```txt embedder theme={"system"}
~get status
```

Esto envía el texto directamente a la consola serie de su dispositivo.

Usar para:

* Envío de comandos AT
* Interactuar con el dispositivo CLI/REPL
* Comandos de depuración manual

## Archivos y directorios de referencia

Utilice `@` para incluir rápidamente archivos o directorios en sus indicaciones.

<Steps>
  <Step title="Reference a file">
    ```txt Embedder theme={"system"}
    > explain the logic in @src/main.c
    ```

    ```txt Embedder theme={"system"}
    > what does @drivers/i2c.h do?
    ```
  </Step>

  <Step title="Reference a directory">
    ```txt Embedder theme={"system"}
    > what's in @src/drivers/?
    ```

    ```txt Embedder theme={"system"}
    > show me the structure of @lib/
    ```
  </Step>

  <Step title="Multiple references">
    ```txt Embedder theme={"system"}
    > compare @src/old_driver.c and @src/new_driver.c
    ```
  </Step>
</Steps>

<Tip>
  Las rutas de los archivos pueden ser relativas o absolutas. Las referencias a directorios muestran listados de archivos, no contenidos.
</Tip>

## Gestión de sesiones

### Cambiar de proyecto

```txt Embedder theme={"system"}
/project    # Switch to a different project
```

### Reanudar sesiones anteriores

```txt Embedder theme={"system"}
/history    # Browse and resume past conversations
```

### Administrar contexto

Para conversaciones largas:

```txt Embedder theme={"system"}
/compress   # Compress conversation to save context
```

## Referencia rápida

| Flujo de trabajo                | Comando/Atajo                        |
| ------------------------------- | ------------------------------------ |
| Configuración de nuevo proyecto | `/project` → `/peripheral` → `/init` |
| Monitor serie                   | `/serial` o `` Ctrl+` ``             |
| Modo de cambio                  | `Shift+Tab` o `/plan` `/act`         |
| Añadir periférico               | `/peripheral`                        |
| Archivo de referencia           | `@filename` en aviso                 |
| Modo bash                       | `!command` (por ejemplo, `!ls`)      |
| Envío en serie                  | `~message` (por ejemplo, `~help`)    |
| Deshacer último mensaje         | `/undo` o `Ctrl+Z` ​​                |
| Rebobinar conversación          | `/rewind` o `Ctrl+Z (2x)`            |
| Reanudar sesión                 | `/history`                           |
| Comprimir contexto              | `/compress`                          |
| Consola web                     | `/console`                           |
| Obtener ayuda                   | `/help`                              |
