Pão de Queijo Development Board. This repo has all libraries from pqdb shield.

Dependents:   pqdb_demo

Pão de Queijo development board is a shield for add-on on any arduino compatible board.

/media/uploads/rmaalmeida/compatibilidade_branco.png

This project presents the libraries to control the board peripherals using mbed framework. The libraries works as interfaces to keep the main code compatible with the examples from the book "Programação de sistemas embarcados". The peripherals on the board are presented on the folowing picture

/media/uploads/rmaalmeida/pqdb_perifericos.png

The main objective of the project is to develop a low cost, easy to assemble board with a group of peripheral that allows one to start learning embedded systems. The board was routed on one side copper PCB to make easier to buid it yourself.

/media/uploads/rmaalmeida/pqdb_fenolite_-_cortada.png

The source code for Arduino boards (wiring) can be found on: https://github.com/projetopqdb/PQDB-Arduino

The source code for freedom frdm KL05 board (using direct register access) can be found on: https://github.com/projetopqdb/PQDB-KL05Z

The source code from the board schematics and layout can be found on: https://github.com/projetopqdb/PQDB-Hardware

Committer:
rmaalmeida
Date:
Tue Oct 03 01:27:24 2017 +0000
Revision:
6:3fb450ba1e95
Parent:
3:6ca4d7dd8bea
timer driver added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rmaalmeida 3:6ca4d7dd8bea 1 #include "pwm.h"
rmaalmeida 3:6ca4d7dd8bea 2 //#include "io.h"
rmaalmeida 3:6ca4d7dd8bea 3 //#include "derivative.h"
rmaalmeida 3:6ca4d7dd8bea 4 #include "mbed.h"
rmaalmeida 3:6ca4d7dd8bea 5
rmaalmeida 3:6ca4d7dd8bea 6 PwmOut buzzer(D9);
rmaalmeida 3:6ca4d7dd8bea 7
rmaalmeida 3:6ca4d7dd8bea 8 //liga o buzzer com uma frequ�ncia de som
rmaalmeida 3:6ca4d7dd8bea 9 //duty cycle configurado em 50%
rmaalmeida 3:6ca4d7dd8bea 10 void pwmBuzzer(unsigned int frequency){
rmaalmeida 3:6ca4d7dd8bea 11 //para prescaler = 1/1 (sem prescaler)
rmaalmeida 3:6ca4d7dd8bea 12 if ((frequency>0) && (frequency < 40000)){
rmaalmeida 3:6ca4d7dd8bea 13 buzzer.period(1.0/frequency);
rmaalmeida 3:6ca4d7dd8bea 14 buzzer.write(50);
rmaalmeida 3:6ca4d7dd8bea 15 // period = 24000000/frequency;
rmaalmeida 3:6ca4d7dd8bea 16 //TPM0_MOD = period;
rmaalmeida 3:6ca4d7dd8bea 17 //TPM0_C0V = (period/2);
rmaalmeida 3:6ca4d7dd8bea 18 }
rmaalmeida 3:6ca4d7dd8bea 19 }
rmaalmeida 3:6ca4d7dd8bea 20 //define uma frequ�ncia de trabalho
rmaalmeida 3:6ca4d7dd8bea 21 void pwmFrequency(unsigned int frequency){
rmaalmeida 3:6ca4d7dd8bea 22 //para prescaler = 1/1 (sem prescaler)
rmaalmeida 3:6ca4d7dd8bea 23 if ((frequency>0) && (frequency < 40000)){
rmaalmeida 3:6ca4d7dd8bea 24 buzzer.period(1.0/frequency);
rmaalmeida 3:6ca4d7dd8bea 25 //buzzer.pulsewidth(0.5f/frequency);
rmaalmeida 3:6ca4d7dd8bea 26 //TPM0_MOD = 24000000/frequency;
rmaalmeida 3:6ca4d7dd8bea 27 }
rmaalmeida 3:6ca4d7dd8bea 28 }
rmaalmeida 3:6ca4d7dd8bea 29 //configura a sa�da como um valor de 0 � 100%
rmaalmeida 3:6ca4d7dd8bea 30 void pwmDutyCycle(float percentage){
rmaalmeida 3:6ca4d7dd8bea 31 if ((percentage>=0) && (percentage <= 100)){
rmaalmeida 3:6ca4d7dd8bea 32 buzzer.write(percentage);
rmaalmeida 3:6ca4d7dd8bea 33 //TPM0_MOD = (unsigned int)((percentage*TPM0_MOD)/100);
rmaalmeida 3:6ca4d7dd8bea 34 }
rmaalmeida 3:6ca4d7dd8bea 35 }
rmaalmeida 3:6ca4d7dd8bea 36 void pwmInit(void){
rmaalmeida 3:6ca4d7dd8bea 37 buzzer.write(0);
rmaalmeida 3:6ca4d7dd8bea 38 //Habilita as sa�das dos terminais
rmaalmeida 3:6ca4d7dd8bea 39 // SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTA_MASK;
rmaalmeida 3:6ca4d7dd8bea 40 //Habilita o clock para o perif�rico do PWM
rmaalmeida 3:6ca4d7dd8bea 41 // SIM_SCGC6|=( SIM_SCGC6_TPM0_MASK | SIM_SCGC6_TPM1_MASK);
rmaalmeida 3:6ca4d7dd8bea 42 //escolhe a fonte de clock do perif�rico como o oscilador principal do sistema
rmaalmeida 3:6ca4d7dd8bea 43 // SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1); //
rmaalmeida 3:6ca4d7dd8bea 44 //configura o terminal D9 (portb 11) como uma sa�da do tipo PWM
rmaalmeida 3:6ca4d7dd8bea 45 // PORTB_PCR11 = (0|PORT_PCR_MUX(2));
rmaalmeida 3:6ca4d7dd8bea 46 //configura o valor m�ximo para o contador de tempo
rmaalmeida 3:6ca4d7dd8bea 47 // TPM0_MOD = 1000;
rmaalmeida 3:6ca4d7dd8bea 48 //Configura timer para acioanr o PWM, ligando quando a comparar��o for verdadeira e desligando quando resetar o contador
rmaalmeida 3:6ca4d7dd8bea 49 // TPM0_C0SC = TPM_CnSC_MSB_MASK | TPM_CnSC_ELSA_MASK;
rmaalmeida 3:6ca4d7dd8bea 50 //configura o registro de contador para aumentar a cada incremento do timer, sem prescaler(1/1)
rmaalmeida 3:6ca4d7dd8bea 51 // TPM0_SC = TPM_SC_CMOD(1) | TPM_SC_PS(0);
rmaalmeida 3:6ca4d7dd8bea 52 }