> ## 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.

# Haeufige Workflows

Praktische Workflows fuer Projektsetup, Hardware-Interaktion, Firmware-Entwicklung, Debugging und Sitzungsverwaltung. Jeder Abschnitt enthaelt Beispiel-Prompts, die du anpassen kannst.

## Neues Projekt starten

<Steps>
  <Step title="Projekt erstellen oder auswaehlen">
    ```txt embedder theme={"system"}
    /project
    ```

    <Frame caption="Projekt-Auswahloberflaeche">
      <img src="https://mintcdn.com/embedder/4y2q1agcuRz3fRND/images/select-project.png?fit=max&auto=format&n=4y2q1agcuRz3fRND&q=85&s=a9be00239cea81ce0616f63c85ec8a36" alt="Dialog zur Projektauswahl mit Suchfeld, Schaltflaeche zum Erstellen eines neuen Projekts und Liste vorheriger Projekte" width="1992" height="1656" data-path="images/select-project.png" />
    </Frame>

    Waehle ein bestehendes Projekt aus oder erstelle ein neues.

    Embedder fordert dich automatisch zum Erstellen eines Projekts auf, wenn das aktuelle Verzeichnis noch keinem Projekt zugeordnet ist. Daher ist `/project` nicht immer notwendig.
  </Step>

  <Step title="Plattform auswaehlen">
    Waehle deine Plattform aus unserem Katalog oder fuege eine eigene hinzu.

    <Frame caption="Plattform-Auswahloberflaeche mit Optionen von Nordic Semiconductor">
      <img src="https://mintcdn.com/embedder/ujO4-sDifSwa2qo6/images/select-platform.png?fit=max&auto=format&n=ujO4-sDifSwa2qo6&q=85&s=a6c3fc150ba41632be86d7a8f4b7f876" alt="Dialog zur Plattformauswahl mit Suchfeld und nRF9xxx-Plattformen von Nordic Semiconductor" width="1980" height="1636" data-path="images/select-platform.png" />
    </Frame>

    Um eine eigene Plattform hinzuzufuegen, gib den Plattformnamen ein und klicke auf `+ Add "[platform name]"`. Danach wirst du zum Hochladen deiner Dokumentation aufgefordert.

    <Frame caption="Oberflaeche zum Erstellen einer benutzerdefinierten Plattform">
      <img src="https://mintcdn.com/embedder/4y2q1agcuRz3fRND/images/custom-platform.png?fit=max&auto=format&n=4y2q1agcuRz3fRND&q=85&s=9cb458a44910dc47b9e8d393eb4134e8" alt="Dialog zur Plattformauswahl mit Menue zum Hochladen von Dokumentation als PDF" width="2134" height="1690" data-path="images/custom-platform.png" />
    </Frame>
  </Step>

  <Step title="Peripherie hinzufuegen">
    Waehle die Peripherie aus unserem Katalog oder fuege eigene Komponenten hinzu.

    <Frame caption="Peripherie-Auswahloberflaeche mit Komponenten verschiedener Hersteller">
      <img src="https://mintcdn.com/embedder/ujO4-sDifSwa2qo6/images/select-peripherals.png?fit=max&auto=format&n=ujO4-sDifSwa2qo6&q=85&s=5bf9421145a180e0648c9072b476478c" alt="Dialog zur Peripherieauswahl mit Suchfeld und Komponenten von Analog Devices, Nexperia und Allegro MicroSystems" width="1990" height="1646" data-path="images/select-peripherals.png" />
    </Frame>

    Waehle die Peripherie, die du verwendest (I2C-Sensoren, SPI-Displays, UART-Module usw.).

    Eigene Peripherie und Datenblaetter kannst du ueber denselben Prozess wie bei Plattformen im vorherigen Schritt hinzufuegen.

    Fuehre `/peripheral` jederzeit erneut aus, um die Konfiguration zu erweitern oder anzupassen.
  </Step>

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

    Erstellt eine `EMBEDDER.md` mit Projektkontext, Konfiguration und mehr.
  </Step>
</Steps>

<Tip>
  Fuer Geraete, die nicht im Katalog enthalten sind, lade eigene Dokumentation oder Datenblaetter ueber `/peripheral` oder die Web-Konsole (`/console`) hoch, um die Agent-Qualitaet zu verbessern.
</Tip>

## Hardware-Interaktion

### Seriellen Monitor nutzen

Das serielle Terminal ist direkt in Embedder integriert. Die KI liest serielle Ausgaben automatisch.

**Serielle Seitenleiste oeffnen:**

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

Oder per Tastaturkuerzel: `` Ctrl+` `` (Backtick)

**Auto-Connect-Verhalten:**

Standardmaessig verbindet sich Embedder nach dem Flashen automatisch mit deinem Geraet.

Um Auto-Connect zu deaktivieren, aktualisiere deine `EMBEDDER.md` oder gib folgenden Prompt ein:

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

**Serielle Ausgabe filtern:** Klicke in der seriellen Toolbar auf `[Filter]`, um Ausgaben per Regex zu filtern. Das ist hilfreich, um relevante Logs oder Fehler in verrauschten Ausgaben zu isolieren.

<Frame>
  <img src="https://mintcdn.com/embedder/feqpp7Csqgb6FFzf/images/serial_filter.png?fit=max&auto=format&n=feqpp7Csqgb6FFzf&q=85&s=5e518da4c96ca100e44ea8ce95769018" alt="Filter im seriellen Terminal mit Regex-Pattern zum Filtern der Ausgabe" style={{ maxWidth:"200px" }} width="688" height="1254" data-path="images/serial_filter.png" />
</Frame>

## Firmware-Entwicklung

### Peripherie-Treiber schreiben

Embedder nutzt Kontext aus deinen Datenblaettern und deiner Dokumentation. Bitte Embedder beim Entwickeln von Treibern, Pinbelegungen, Registermaps und Implementierungsdetails nachzuschlagen.

```txt Embedder theme={"system"}
> schreibe einen I2C-Treiber fuer den BME280-Sensor auf I2C1 (SDA=PB7, SCL=PB6).
> integriere funktionen fuer temperatur, luftfeuchtigkeit und druck.
> nutze die vorhandenen HAL_I2C-funktionen in unserer codebasis.
```

```txt Embedder theme={"system"}
> erstelle einen UART-Treiber fuer ein GPS-Modul an UART2 mit 9600 Baud.
> implementiere einen Ringpuffer fuer RX, parse NMEA-Saetze und extrahiere Breiten-/Laengengrad.
```

```txt Embedder theme={"system"}
> implementiere einen SPI-Treiber fuer das SD-Karten-Modul an SPI1.
> inkl. initialisierung, single-block read/write und korrekter CS-Pin-Behandlung an PA4.
```

### Build und Flash

Embedder nutzt deine Projektkonfiguration, um benoetigte Toolchains und Abhaengigkeiten zu bestimmen.

<Steps>
  <Step title="Abhaengigkeiten installieren">
    ```txt Embedder theme={"system"}
    > hilf mir, die abhaengigkeiten fuer dieses projekt zu installieren
    ```
  </Step>

  <Step title="Projekt bauen">
    ```txt Embedder theme={"system"}
    > baue das projekt
    ```
  </Step>

  <Step title="Firmware flashen">
    ```txt Embedder theme={"system"}
    > flashe die firmware auf das geraet
    ```
  </Step>

  <Step title="Bauen, flashen und ueberwachen">
    ```txt Embedder theme={"system"}
    > baue und flashe, und zeige mir dann die serielle ausgabe
    ```
  </Step>
</Steps>

### Mit HALs und SDKs arbeiten

Frage nach vendorspezifischen HALs und SDKs:

```txt Embedder theme={"system"}
> wie konfiguriere ich STM32 HAL fuer I2C?
```

```txt Embedder theme={"system"}
> zeig mir, wie ich den ESP-IDF GPIO-Treiber nutze
```

```txt Embedder theme={"system"}
> wie initialisiere ich DMA auf diesem Chip korrekt?
```

## Mit serieller Ausgabe debuggen

Embedder liest serielle Ausgaben und kann Probleme in Echtzeit analysieren.

### Fehler analysieren

```txt Embedder theme={"system"}
> was verursacht diesen fehler in der seriellen ausgabe?
```

```txt Embedder theme={"system"}
> das geraet startet staendig neu, analysiere den crash dump
```

```txt Embedder theme={"system"}
> parse die debug-logs und finde das problem
```

### Ausfuehrung nachverfolgen

```txt Embedder theme={"system"}
> fuege debug-prints hinzu, um die initialisierungssequenz zu verfolgen
```

```txt Embedder theme={"system"}
> warum wird der interrupt-handler nicht aufgerufen?
```

## Plan-Modus vs. Act-Modus

Embedder hat zwei Modi fuer unterschiedliche Workflows.

### Act-Modus (Standard)

Voller Toolzugriff. Embedder kann lesen, schreiben und ausfuehren.

Geeignet fuer:

* Code schreiben und aendern
* Firmware bauen und flashen
* Aenderungen am Projekt vornehmen

### Plan-Modus

Read-only-Analyse. Embedder recherchiert ohne Aenderungen.

Geeignet fuer:

* Komplexe Refactorings planen
* Architektur vor Aenderungen reviewen
* Datenblaetter analysieren

**Zwischen Modi wechseln:**

* Tastatur: `Shift+Tab`
* Befehle: `/plan` oder `/act`

**Im Plan-Modus starten:**

```txt Embedder theme={"system"}
> /plan
> analysiere die power-management-implementierung und schlage verbesserungen vor
```

<Tip>
  Der Plan-Modus ist ideal, um komplexe Aenderungen vor der Umsetzung zu planen.
</Tip>

## Dokumentation und Kontext

### Hochgeladene Dokumentation nutzen

Plattformen und Peripherie aus unserem Katalog haben bereits hochgeladene Dokumentation.

Du kannst weitere Dokumente ueber die Web-Konsole hochladen, erreichbar mit `/console`.

<Frame caption="Oberflaeche zum Hochladen von Dokumentation">
  <img src="https://mintcdn.com/embedder/4y2q1agcuRz3fRND/images/console-docs.png?fit=max&auto=format&n=4y2q1agcuRz3fRND&q=85&s=3e8e4a0ae841d2d936c8f3a2c5de982a" alt="Web-App mit Bereich zum Hochladen von Dokumentation fuer dein Projekt" width="3016" height="2152" data-path="images/console-docs.png" />
</Frame>

Embedder nutzt diese Dokumente automatisch:

```txt Embedder theme={"system"}
> was ist die maximale I2C-Taktfrequenz fuer diesen Sensor?
```

```txt Embedder theme={"system"}
> zeig mir die register-map fuer den beschleunigungssensor
```

```txt Embedder theme={"system"}
> welche leistungsaufnahme hat er im sleep-modus?
```

### Hardware-spezifische Unterstuetzung

Stelle hardwarespezifische Fragen zu deinem Board:

```txt Embedder theme={"system"}
> welche schalterstellung auf dem stm32n6570-dk aktiviert den flash-modus?
```

```txt Embedder theme={"system"}
> wie ist das pin-mapping fuer den Arduino-Header?
```

```txt Embedder theme={"system"}
> kann ich DMA mit diesem UART-Peripheriebaustein verwenden?
```

## Bash-Modus

Umgehe den KI-Agenten und fuehre Terminalbefehle direkt mit dem Praefix `!` aus.

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

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

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

Der Befehl wird ohne KI-Interpretation direkt im Terminal ausgefuehrt. Nuetzlich fuer schnelle Kommandos ohne Assistenz.

## Serieller Sendemodus

Sende Nachrichten direkt ueber seriell an deinen MCU mit dem Praefix `~`.

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

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

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

Der Text wird direkt an die serielle Konsole deines Geraets gesendet.

Geeignet fuer:

* AT-Befehle senden
* Mit Device-CLI/REPL interagieren
* Manuelle Debug-Befehle

## Dateien und Verzeichnisse referenzieren

Nutze `@`, um Dateien oder Verzeichnisse schnell in deine Prompts einzubinden.

<Steps>
  <Step title="Datei referenzieren">
    ```txt Embedder theme={"system"}
    > erklaere die logik in @src/main.c
    ```

    ```txt Embedder theme={"system"}
    > was macht @drivers/i2c.h?
    ```
  </Step>

  <Step title="Verzeichnis referenzieren">
    ```txt Embedder theme={"system"}
    > was ist in @src/drivers/?
    ```

    ```txt Embedder theme={"system"}
    > zeig mir die struktur von @lib/
    ```
  </Step>

  <Step title="Mehrere Referenzen">
    ```txt Embedder theme={"system"}
    > vergleiche @src/old_driver.c und @src/new_driver.c
    ```
  </Step>
</Steps>

<Tip>
  Dateipfade koennen relativ oder absolut sein. Bei Verzeichnis-Referenzen werden Dateilisten gezeigt, nicht Dateiinhalte.
</Tip>

## Sitzungsverwaltung

### Projekte wechseln

```txt Embedder theme={"system"}
/project    # Zu einem anderen Projekt wechseln
```

### Fruehere Sitzungen fortsetzen

```txt Embedder theme={"system"}
/history    # Fruehere Konversationen durchsuchen und fortsetzen
```

### Kontext verwalten

Fuer lange Konversationen:

```txt Embedder theme={"system"}
/compress   # Konversation komprimieren, um Kontext zu sparen
```

## Schnelle Referenz

| Workflow                      | Befehl/Shortcut                        |
| ----------------------------- | -------------------------------------- |
| Neues Projekt-Setup           | `/project` -> `/peripheral` -> `/init` |
| Serieller Monitor             | `/serial` oder `` Ctrl+` ``            |
| Modus wechseln                | `Shift+Tab` oder `/plan` `/act`        |
| Peripherie hinzufuegen        | `/peripheral`                          |
| Datei referenzieren           | `@dateiname` im Prompt                 |
| Bash-Modus                    | `!command` (z. B. `!ls`)               |
| Seriell senden                | `~message` (z. B. `~help`)             |
| Letzte Nachricht rueckgaengig | `/undo` oder `Ctrl+Z`                  |
| Konversation zurueckspulen    | `/rewind` oder `Ctrl+Z (2x)`           |
| Sitzung fortsetzen            | `/history`                             |
| Kontext komprimieren          | `/compress`                            |
| Web-Konsole                   | `/console`                             |
| Hilfe                         | `/help`                                |
