Ir para o conteúdo principal

Introdução à API Wokwi Custom Chips C

AVISO

A API de chips está atualmente em versão beta. Por favor, compartilhe suas experiências e forneça feedback no canal #custom-chips no chat do Discord.

Começando

Abra o Custom Chip Playground, vá para o editor de código, pressione F1 e selecione Create a custom C chip (alpha).

Isso criará um novo arquivo chamado i2c-counter.chip.c. Este arquivo contém um exemplo de um dispositivo I2C simples com um contador de 8 bits que aumenta para cada byte que você lê. A gravação no dispositivo substituirá o valor.

O dispositivo também fornece um pino INT que fica baixo quando o contador é maior que 127. Caso contrário, o pino INT está no estado de entrada (alta impedância).

Inicie a simulação para observar o comportamento do chip customizado: o código do Arduino deve ler o valor do contador, e o LED acenderá quando o contador ultrapassar 127.

Adicionando seu chip personalizado à simulação

O Custom Chip Playground já tem o chip conectado, mas você pode seguir as instruções abaixo para conectar um chip personalizado a um projeto diferente.

Adicione o seguinte snippet ao seu diagram.json:

{ "type": "chip-i2c-counter", "id": "chip1", "top": 0, "left": 0, "attrs": {} },

O Wokwi gera automaticamente uma placa de expansão (breakout board) para o seu chip. Edite i2c-counter.chip.json para definir os pinos para sua peça. O array pins deve conter os nomes dos pinos do seu chip, começando pelo pino número 1. Se você deseja pular alguns pinos (por exemplo, deseja que o quadro de acesso tenha apenas pinos no lado esquerdo), use uma string vazia ("") para o nome do pino.

Usando a API

Primeiro, certifique-se de #include "wokwi-api.h". O chip deve declarar um método chip_init. Este método será chamado para cada nova instância do chip. Se o chip tiver algum estado interno, chip_init deve alocar memória para o estado interno e salvar um ponteiro para esta memória no campo void *user_data das estruturas de configuração do dispositivo (por exemplo, i2c_config_t, timer_config_t, etc .).

Aqui está um exemplo de um arquivo chip mínimo:

#include "wokwi-api.h"

void chip_init() {
/*
Este método é executado quando a simulação é iniciada. É chamado uma vez para cada instância do chip.
Você normalmente alocaria alguma memória para armazenar o estado do chip, inicializar um monte de pinos com pin_init(),
e configurar relógios de pinos, temporizadores e protocolos como UART, I2C e SPI.
*/
}

Depurando seu chip personalizado

Você pode imprimir mensagens de depuração usando a função padrão C printf(). Certifique-se de também #include <stdio.h> em seu programa. As mensagens de depuração aparecerão no console do desenvolvedor do navegador (para visualizar no Chrome: Ctrl+Shift+J ou Option++J).

As mensagens de depuração do seu chip serão impressas na cor verde:

Mensagens de depuração de chip exibidas em verde

Além disso, você pode usar o Analisador Lógico Wokwi para depurar a comunicação com seu chip personalizado.

Dica

Certifique-se de incluir uma nova linha ("\n") no final de suas mensagens printf(). O simulador mostra as mensagens somente quando possuí um caractere de nova linha.

Referência da API dos chips 📖

Exemplos de Chip