lib_PwmOutAllPin permet de créer des PwmOut sur toutes les DigitalOut du Mbed. YSI

Committer:
YSI
Date:
Wed May 04 10:54:33 2016 +0000
Revision:
4:22942b7e1635
Parent:
3:1d1669e8c9b1
Child:
5:0f5ad06f23c0
Up Doc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YSI 3:1d1669e8c9b1 1 /** Lib PwmOutAllPin
YSI 3:1d1669e8c9b1 2 *
YSI 3:1d1669e8c9b1 3 * Copyright (c) 2014, cstyles (http://mbed.org)
YSI 3:1d1669e8c9b1 4 *
YSI 3:1d1669e8c9b1 5 * Exemple:
YSI 3:1d1669e8c9b1 6 * @code
YSI 3:1d1669e8c9b1 7 * #include "mbed.h"
YSI 3:1d1669e8c9b1 8 * #include "lib_PwmOutAllPin.h"
YSI 3:1d1669e8c9b1 9 *
YSI 3:1d1669e8c9b1 10 * PwmOutAllPin pin1(p20);
YSI 3:1d1669e8c9b1 11 * PwmOutAllPin pin2(p12);
YSI 3:1d1669e8c9b1 12 *
YSI 3:1d1669e8c9b1 13 * int main()
YSI 3:1d1669e8c9b1 14 * {
YSI 3:1d1669e8c9b1 15 * pin2.period(0.0002);
YSI 3:1d1669e8c9b1 16 * pin2 = 0.25;
YSI 3:1d1669e8c9b1 17 * pin1 = 0.5;
YSI 3:1d1669e8c9b1 18 * pin1.period_us(20);
YSI 3:1d1669e8c9b1 19 *
YSI 3:1d1669e8c9b1 20 * while(1)
YSI 3:1d1669e8c9b1 21 * {
YSI 3:1d1669e8c9b1 22 * wait(0.25);
YSI 3:1d1669e8c9b1 23 * }
YSI 3:1d1669e8c9b1 24 * }
YSI 3:1d1669e8c9b1 25 * @endcode
YSI 3:1d1669e8c9b1 26 * @file lib_PwmOutAllPin.h
YSI 3:1d1669e8c9b1 27 * @purpose library for PwmOut on all pins
YSI 3:1d1669e8c9b1 28 * @date 2015
YSI 3:1d1669e8c9b1 29 * @author Yannic Simon
YSI 3:1d1669e8c9b1 30 */
YSI 3:1d1669e8c9b1 31
YSI 0:0e01d184dbab 32 #ifndef DEF_lib_PwmOutAllPin_H
YSI 0:0e01d184dbab 33 #define DEF_lib_PwmOutAllPin_H
YSI 0:0e01d184dbab 34
YSI 0:0e01d184dbab 35 #include "mbed.h"
YSI 0:0e01d184dbab 36
YSI 0:0e01d184dbab 37 class PwmOutAllPin : public Timeout
YSI 0:0e01d184dbab 38 {
YSI 0:0e01d184dbab 39 public:
YSI 4:22942b7e1635 40 /** Crée un PwmOutAllPin connecté à la pin spécifiée
YSI 4:22942b7e1635 41 *
YSI 4:22942b7e1635 42 * @param pin Pin à connecter
YSI 4:22942b7e1635 43 */
YSI 0:0e01d184dbab 44 PwmOutAllPin(PinName pin);
YSI 4:22942b7e1635 45 /** Fixe le rapport cyclique au pourcentage (float) spécifié
YSI 4:22942b7e1635 46 *
YSI 4:22942b7e1635 47 * @param value Une valeure floating-point représentant le rapport cyclique,
YSI 4:22942b7e1635 48 * spécifié sous la forme d'un pourcentage. La valeur doit être comprise entre
YSI 4:22942b7e1635 49 * 0.0f (correspondant à 0%) et 1.0f (correspondant à 100%).
YSI 4:22942b7e1635 50 * Les valeurs exterieures à cette plage sont saturées à 0.0f ou 1.0f.
YSI 4:22942b7e1635 51 */
YSI 0:0e01d184dbab 52 void write(float value);
YSI 4:22942b7e1635 53 /** Retourne la valeur courante du rapport cyclique de la sortie, mesurée sous la forme d'un pourcentage (float)
YSI 4:22942b7e1635 54 *
YSI 4:22942b7e1635 55 * @returns
YSI 4:22942b7e1635 56 * Une valeur floating-point représentant la valeur courante du rapport cyclique qui est sur la pin de sortie,
YSI 4:22942b7e1635 57 * mesurée sous la forme d'un pourcentage. La valeur doit être comprise entre
YSI 4:22942b7e1635 58 * 0.0f (correspondant à 0%) et 1.0f (correspondant à 100%).
YSI 4:22942b7e1635 59 */
YSI 0:0e01d184dbab 60 float read(void);
YSI 4:22942b7e1635 61 /** Fixe la période du PWM, spécifié en secondes (float), garde le même rapport cyclique.
YSI 4:22942b7e1635 62 *
YSI 4:22942b7e1635 63 * @note
YSI 4:22942b7e1635 64 * La résolution est en microsecondes mais les périodes inférieure à 100µs sont imprécises.
YSI 4:22942b7e1635 65 */
YSI 0:0e01d184dbab 66 void period(float seconds);
YSI 4:22942b7e1635 67 /** Fixe la période du PWM, spécifié en millisecondes (int), garde le même rapport cyclique.
YSI 4:22942b7e1635 68 */
YSI 0:0e01d184dbab 69 void period_ms(int ms);
YSI 4:22942b7e1635 70 /** Fixe la période du PWM, spécifié en microsecondes (int), garde le même rapport cyclique.
YSI 4:22942b7e1635 71 */
YSI 0:0e01d184dbab 72 void period_us(int us);
YSI 4:22942b7e1635 73 /** Fixe la largeur d'impulsion du PWM, spécifié en secondes (float), garde la même période.
YSI 4:22942b7e1635 74 */
YSI 0:0e01d184dbab 75 void pulsewidth(float seconds);
YSI 4:22942b7e1635 76 /** Fixe la largeur d'impulsion du PWM, spécifié en millisecondes (int), garde la même période.
YSI 4:22942b7e1635 77 */
YSI 0:0e01d184dbab 78 void pulsewidth_ms(int ms);
YSI 4:22942b7e1635 79 /** Fixe la largeur d'impulsion du PWM, spécifié en microsecondes (int), garde la même période.
YSI 4:22942b7e1635 80 */
YSI 0:0e01d184dbab 81 void pulsewidth_us(int us);
YSI 4:22942b7e1635 82 /** raccourci pour write()
YSI 4:22942b7e1635 83 */
YSI 0:0e01d184dbab 84 PwmOutAllPin& operator= (float value);
YSI 4:22942b7e1635 85 /** raccourci pour effectuer des opperations mathématique avec write()
YSI 4:22942b7e1635 86 */
YSI 0:0e01d184dbab 87 PwmOutAllPin& operator= (PwmOutAllPin& rhs);
YSI 4:22942b7e1635 88 /** raccourci pour read()
YSI 4:22942b7e1635 89 */
YSI 0:0e01d184dbab 90 operator float();
YSI 0:0e01d184dbab 91
YSI 0:0e01d184dbab 92 protected:
YSI 0:0e01d184dbab 93 DigitalOut PwmOutPin;
YSI 0:0e01d184dbab 94 Timeout SwitchPin;
YSI 1:8067d51d66bd 95 Ticker TickerPeriod;
YSI 0:0e01d184dbab 96
YSI 2:4673fac2ae7f 97 float Pwm_Duty_Cycle;
YSI 1:8067d51d66bd 98 int Pwm_period_us;
YSI 1:8067d51d66bd 99 int TimeDown;
YSI 1:8067d51d66bd 100
YSI 0:0e01d184dbab 101 void DigitalUp(void);
YSI 0:0e01d184dbab 102 void DigitalDown(void);
YSI 0:0e01d184dbab 103 void UsePwm(void);
YSI 0:0e01d184dbab 104 };
YSI 0:0e01d184dbab 105
YSI 0:0e01d184dbab 106 #endif