Y SI / lib_PwmOutAllPin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers lib_PwmOutAllPin.h Source File

lib_PwmOutAllPin.h

Go to the documentation of this file.
00001 /** Lib PwmOutAllPin using TimeOut
00002 *
00003 * Copyright (c) 2014, cstyles (http://mbed.org)
00004 *
00005 * Exemple:
00006 * @code
00007 * #include "mbed.h"
00008 * #include "lib_PwmOutAllPin.h"
00009 * 
00010 * PwmOutAllPin pin1(p20);
00011 * PwmOutAllPin pin2(p12);
00012 * 
00013 * int main()
00014 * {
00015 *     pin2.period(0.0002);
00016 *     pin2 = 0.25;
00017 *     pin1 = 0.5;
00018 *     pin1.period_us(20);
00019 * 
00020 *     while(1)
00021 *     {
00022 *       wait(0.25);
00023 *     }
00024 * }
00025 * @endcode
00026 * @file          lib_PwmOutAllPin.h 
00027 * @purpose       library for PwmOut on all pins
00028 * @date          2015
00029 * @author        Yannic Simon
00030 */
00031 
00032 #ifndef DEF_lib_PwmOutAllPin_H
00033 #define DEF_lib_PwmOutAllPin_H
00034 
00035 #include "mbed.h"
00036 /** PwmOutAllPin class
00037  */
00038 class PwmOutAllPin : public Timeout
00039 {
00040     public:
00041     /** Crée un PwmOutAllPin connecté à la pin spécifiée
00042      *  @note init period 20ms and duty cycle 0%
00043      *  @param pin Pin à connecter
00044      */
00045     PwmOutAllPin(PinName pin);
00046     /** Fixe le rapport cyclique au pourcentage (float) spécifié
00047      *
00048      *  @param value Une valeure floating-point représentant le rapport cyclique,
00049      *    spécifié sous la forme d'un pourcentage. La valeur doit être comprise entre
00050      *    0.0f (correspondant à 0%) et 1.0f (correspondant à 100%).
00051      *    Les valeurs exterieures à cette plage sont saturées à 0.0f ou 1.0f.
00052      */
00053     void write(float value);
00054     /** Retourne la valeur courante du rapport cyclique de la sortie, mesurée sous la forme d'un pourcentage (float)
00055      *
00056      *  @returns
00057      *    Une valeur floating-point représentant la valeur courante du rapport cyclique qui est sur la pin de sortie,
00058      *    mesurée sous la forme d'un pourcentage. La valeur doit être comprise entre
00059      *    0.0f (correspondant à 0%) et 1.0f (correspondant à 100%).
00060      */
00061     float read(void);
00062     /** Fixe la période du PWM, spécifié en secondes (float), garde le même rapport cyclique.
00063      *
00064      *  @note
00065      *   La résolution est en microsecondes mais les périodes inférieure à 100µs sont imprécises.
00066      */
00067     void period(float seconds);
00068     /** Fixe la période du PWM, spécifié en millisecondes (int), garde le même rapport cyclique.
00069      */
00070     void period_ms(int ms);
00071     /** Fixe la période du PWM, spécifié en microsecondes (int), garde le même rapport cyclique.
00072      */
00073     void period_us(int us);
00074     /** Fixe la largeur d'impulsion du PWM, spécifié en secondes (float), garde la même période.
00075      */
00076     void pulsewidth(float seconds);
00077     /** Fixe la largeur d'impulsion du PWM, spécifié en millisecondes (int), garde la même période.
00078      */
00079     void pulsewidth_ms(int ms);
00080     /** Fixe la largeur d'impulsion du PWM, spécifié en microsecondes (int), garde la même période.
00081      */
00082     void pulsewidth_us(int us);
00083     /** raccourci pour write()
00084     */
00085     PwmOutAllPin& operator= (float value);
00086     /** raccourci pour effectuer des opperations mathématique avec write()
00087     */ 
00088     PwmOutAllPin& operator= (PwmOutAllPin& rhs);
00089     /** raccourci pour read()
00090      */
00091     operator float();
00092 
00093     protected:
00094     DigitalOut PwmOutPin;
00095     Timeout SwitchPin;
00096     Ticker TickerPeriod;
00097     
00098     float Pwm_Duty_Cycle;
00099     int Pwm_period_us;
00100     int TimeDown;
00101 
00102     void DigitalUp(void);
00103     void DigitalDown(void);
00104     void UsePwm(void);
00105 };
00106     
00107 #endif