/******************************************************************************
HEADER-FILES (Somente os arquivos necessários nesse arquivo)
******************************************************************************/
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
#include "hardware/pwm.h"
/*****************************************************************************/
/******************************************************************************
Variaveis Globais
******************************************************************************/
#define PWM_0_PIN 8
/*****************************************************************************/
/******************************************************************************
Prototipos das funções
******************************************************************************/
void system_init(void);
/*****************************************************************************/
/******************************************************************************
Funcao: int main(void)
Entrada: Nenhuma (void)
Saída: Nenhuma (void)
Descrição: Função principal
*****************************************************************************/
int main()
{
printf("Microcontroladores - Aula 14\n");
sleep_ms(250);
system_init();
while(1)
{
sleep_ms(5);
}
}
/******************************************************************************
Funcao: void system_init(void)
Entrada: Nenhuma (void)
Saída: Nenhuma (void)
Descrição: Inicializa sistema (microcontrolador e periféricos)
*****************************************************************************/
void system_init(void)
{
printf("Init Hardware ....\n");
sleep_ms(10);
// Tell GPIO they are allocated to the PWM
gpio_set_function(PWM_0_PIN, GPIO_FUNC_PWM);
// Find out which PWM slice is connected to GPIO
uint slice_num = pwm_gpio_to_slice_num(PWM_0_PIN);
// pwm freq
pwm_set_clkdiv(slice_num, 125); // pwm clock should now be running at 1MHz
// Set period of 100 cycles (0 to 99 inclusive)
pwm_set_wrap(slice_num, 100);
// Set channel A output high for one cycle before dropping
// PWM set to 30%
pwm_set_chan_level(slice_num, PWM_CHAN_A, 30);
// Set the PWM running
pwm_set_enabled(slice_num, true);
}