Y SI / lib_PwmOutAllPin
Committer:
YSI
Date:
Wed May 04 12:16:13 2016 +0000
Revision:
5:0f5ad06f23c0
Parent:
4:22942b7e1635
Up Doc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YSI 5:0f5ad06f23c0 1 /** Lib PwmOutAllPin using TimeOut
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 5:0f5ad06f23c0 36 /** PwmOutAllPin class
YSI 5:0f5ad06f23c0 37 */
YSI 0:0e01d184dbab 38 class PwmOutAllPin : public Timeout
YSI 0:0e01d184dbab 39 {
YSI 0:0e01d184dbab 40 public:
YSI 4:22942b7e1635 41 /** Crée un PwmOutAllPin connecté à la pin spécifiée
YSI 5:0f5ad06f23c0 42 * @note init period 20ms and duty cycle 0%
YSI 4:22942b7e1635 43 * @param pin Pin à connecter
YSI 4:22942b7e1635 44 */
YSI 0:0e01d184dbab 45 PwmOutAllPin(PinName pin);
YSI 4:22942b7e1635 46 /** Fixe le rapport cyclique au pourcentage (float) spécifié
YSI 4:22942b7e1635 47 *
YSI 4:22942b7e1635 48 * @param value Une valeure floating-point représentant le rapport cyclique,
YSI 4:22942b7e1635 49 * spécifié sous la forme d'un pourcentage. La valeur doit être comprise entre
YSI 4:22942b7e1635 50 * 0.0f (correspondant à 0%) et 1.0f (correspondant à 100%).
YSI 4:22942b7e1635 51 * Les valeurs exterieures à cette plage sont saturées à 0.0f ou 1.0f.
YSI 4:22942b7e1635 52 */
YSI 0:0e01d184dbab 53 void write(float value);
YSI 4:22942b7e1635 54 /** Retourne la valeur courante du rapport cyclique de la sortie, mesurée sous la forme d'un pourcentage (float)
YSI 4:22942b7e1635 55 *
YSI 4:22942b7e1635 56 * @returns
YSI 4:22942b7e1635 57 * Une valeur floating-point représentant la valeur courante du rapport cyclique qui est sur la pin de sortie,
YSI 4:22942b7e1635 58 * mesurée sous la forme d'un pourcentage. La valeur doit être comprise entre
YSI 4:22942b7e1635 59 * 0.0f (correspondant à 0%) et 1.0f (correspondant à 100%).
YSI 4:22942b7e1635 60 */
YSI 0:0e01d184dbab 61 float read(void);
YSI 4:22942b7e1635 62 /** Fixe la période du PWM, spécifié en secondes (float), garde le même rapport cyclique.
YSI 4:22942b7e1635 63 *
YSI 4:22942b7e1635 64 * @note
YSI 4:22942b7e1635 65 * La résolution est en microsecondes mais les périodes inférieure à 100µs sont imprécises.
YSI 4:22942b7e1635 66 */
YSI 0:0e01d184dbab 67 void period(float seconds);
YSI 4:22942b7e1635 68 /** Fixe la période du PWM, spécifié en millisecondes (int), garde le même rapport cyclique.
YSI 4:22942b7e1635 69 */
YSI 0:0e01d184dbab 70 void period_ms(int ms);
YSI 4:22942b7e1635 71 /** Fixe la période du PWM, spécifié en microsecondes (int), garde le même rapport cyclique.
YSI 4:22942b7e1635 72 */
YSI 0:0e01d184dbab 73 void period_us(int us);
YSI 4:22942b7e1635 74 /** Fixe la largeur d'impulsion du PWM, spécifié en secondes (float), garde la même période.
YSI 4:22942b7e1635 75 */
YSI 0:0e01d184dbab 76 void pulsewidth(float seconds);
YSI 4:22942b7e1635 77 /** Fixe la largeur d'impulsion du PWM, spécifié en millisecondes (int), garde la même période.
YSI 4:22942b7e1635 78 */
YSI 0:0e01d184dbab 79 void pulsewidth_ms(int ms);
YSI 4:22942b7e1635 80 /** Fixe la largeur d'impulsion du PWM, spécifié en microsecondes (int), garde la même période.
YSI 4:22942b7e1635 81 */
YSI 0:0e01d184dbab 82 void pulsewidth_us(int us);
YSI 4:22942b7e1635 83 /** raccourci pour write()
YSI 4:22942b7e1635 84 */
YSI 0:0e01d184dbab 85 PwmOutAllPin& operator= (float value);
YSI 4:22942b7e1635 86 /** raccourci pour effectuer des opperations mathématique avec write()
YSI 4:22942b7e1635 87 */
YSI 0:0e01d184dbab 88 PwmOutAllPin& operator= (PwmOutAllPin& rhs);
YSI 4:22942b7e1635 89 /** raccourci pour read()
YSI 4:22942b7e1635 90 */
YSI 0:0e01d184dbab 91 operator float();
YSI 0:0e01d184dbab 92
YSI 0:0e01d184dbab 93 protected:
YSI 0:0e01d184dbab 94 DigitalOut PwmOutPin;
YSI 0:0e01d184dbab 95 Timeout SwitchPin;
YSI 1:8067d51d66bd 96 Ticker TickerPeriod;
YSI 0:0e01d184dbab 97
YSI 2:4673fac2ae7f 98 float Pwm_Duty_Cycle;
YSI 1:8067d51d66bd 99 int Pwm_period_us;
YSI 1:8067d51d66bd 100 int TimeDown;
YSI 1:8067d51d66bd 101
YSI 0:0e01d184dbab 102 void DigitalUp(void);
YSI 0:0e01d184dbab 103 void DigitalDown(void);
YSI 0:0e01d184dbab 104 void UsePwm(void);
YSI 0:0e01d184dbab 105 };
YSI 0:0e01d184dbab 106
YSI 0:0e01d184dbab 107 #endif